Apuntes-Arduino-Nivel-Enteraillo-pdf.pdf

(1342 KB) Pobierz
Arduino
Nivel Enteraillo
Apuntes de
ARDUINO
Nivel Enteraillo
Daniel Gallardo García
Profesor de Tecnología del IES Laguna de Tollón
DGG
1 de 28
Arduino
Nivel Enteraillo
1. CARACTERÍSTICAS DE ARDUINO
Las
características técnicas
de la Arduino UNO son:
Microcontrolador:
Tensión de funcionamiento:
Tensión de entrada (recomendada):
Tensión de entrada (límite):
Pines de Entradas/Salidas Digitales:
Pines de Entradas Analógicas:
Intensidad C.C. por pines de E/S:
Intensidad C.C. por el pin de 3,3 V:
Intensidad C.C. por el pin de 5 V:
Memoria Flash:
SRAM:
EEPROM:
Frecuencia señal de reloj:
ATmega328
5V
7 – 12 V
6 – 20 V
14 (6 proporcionan PWM)
6
40 mA
50 mA
300 mA
32 KB (0,5 KB para bootloader)
2 KB
1 KB
16 MHz
Veamos algunos
pines
que pasamos por alto en el Nivel Pardillo:
pin0 RX:
se usa para recibir datos del PC (serial
data).
En caso de establecer
una comunicación Serial en nuestro programa, no conectaremos nada a este pin.
pin1 TX:
se usa para transmitir datos al PC (serial
data).
En caso de establecer
una comunicación Serial en nuestro programa, no conectaremos nada a este pin.
RESET:
funciona igual que el botón de reset. Cuando a este pin le llega un pulso
de tensión de valor de 0 V (es decir, poner 0 V y luego volver a quitar el 0 V), la
Arduino se resetea, comenzando a ejecutar desde el principio el programa que
esté funcionando.
DGG
2 de 28
Arduino
Nivel Enteraillo
AREF:
en el caso de utilizar sensores que generen un rango de tensión por
debajo de 5 V, podemos incrementar la precisión de la lectura haciendo que los
1024 valores posible no vayan desde los 0 V a los 5 V, sino a un rango menor de
tensión (de 0 a 1,1 V; o de 0 a 3,3 V). Para ello empleamos la función
analogReference( ),
que presenta tres variantes:
analogReference(INTERNAL);
// toma como tensión de referencia 1,1 V
analogReference(EXTERNAL);
/* toma como referencia la tensión que
haya en el pin AREF. Si quiero que esa tensión sea 3,3 V, lo único que tendré
que hacer será conectar el pin 3,3V con el pin AREF */
analogReference(DEFAULT);
// toma el valor por defecto: 5 V
Para que surja efecto los nuevos valores de referencia de la tensión en las
entradas analógicas, debemos llamar a la función
analogReference()
antes
de utilizar la función
analogRead().
Los
pines A0…A5
también pueden utilizarse como entradas digitales o como
salidas analógicas y digitales. No tenemos más que incluirlas en el
void
setup()
como los siguientes pines despúes del 13, es decir: el 14, 15, 16, 17,
18, 19 (que corresponden al A0, A1, A2, A3, A4, A5):
pinMode(16,OUTPUT);
//utilizaré el pin A2 como salida
Asimismo, no es estrictamente necesario configurar los pines como
INPUT
u
OUTPUT
dentro de
void setup().
Simplemente debemos interpretar al bloque
void setup()
como una parte del código que Arduino solamente la corre una
vez (al principio), y en la que podemos ejecutar cualquier función.
2. TIPOS DE VARIABLES
Los
tipos de variables
son:
boolean:
almacena un valor con dos posibilidades: 0 o 1, o verdadero o falso.
char:
almacena un caracter, como una letra o símbolo. También se puede
emplear para un número entero entre -128 a 127 (1 byte).
byte:
almacena un número natural entre 0 y 255 (1 byte).
int:
almacena un número entero entre -32769 y 32767 (2 bytes).
unsigned int:
almacena un número natural entre 0 y 65536 (2 bytes).
DGG
3 de 28
Arduino
Nivel Enteraillo
long:
almacena un número entero entre -2147483648 y 2147483647 (4 bytes).
unsigned long:
almacena un número entero entre 0 y 4294967295 (4 bytes).
float:
almacena un número decimal con un rango entre -3.4028235·10
38
y
3.4028235·10
38
(4 bytes).
double:
en el lenguaje C, almacenaría un número decimal con muchísima
precisión, con un valor máximo de 1,7976931348623157·10
308
. Sin embargo, en
Arduino es lo mismo que float (4 bytes).
const:
especifica que la variable definida no podrá ser cambiada durante el
programa, siendo siempre un valor constante:
const
float
pi=3.1415;
Una variable ya declarada se puede
cambiar de tipo de variable
durante el programa:
float
pi=3.1415;
int
x;
x=int(pi);
/*x pasará a valer 3, pues es el resultado de eliminar la parte
decimal. Es igualmente válida la siguiente nomenclatura:
x=(int)pi;
*/
En el caso de que vayamos a
declarar varias variables del mismo tipo,
podemos
acortar nuestro código separando las variables por coma:
int
a=6,b=9,c=11;
3. ARRAYS
ARRAY:
almacena una lista de variables, accediendo a cada una de ellas a través de su
índice (el primero siempre es el cero):
int
datos[] = {4,7,9,12,18};
siendo
datos[0]=4; datos[1]=7; … datos[4]=18;
En este caso no ha sido necesario especificar el tamaño del array porque hemos
incluido el valor de todas las variables, pero si no declaro los valores iniciales,
debo especificar el tamaño del array:
int
datos[5];
DGG
4 de 28
Arduino
Nivel Enteraillo
Existe también otra forma de llamar los distintos elementos del array, a través de
un
puntero.
El primer elemento corresponde a
*datos,
y para llamar a los
siguientes no tenemos más que sumar su posición relativa:
*datos
*datos+1
*datos+2
*datos+n
==
==
==
==
==
datos[0]
datos[1]
datos[2]
datos[n]
También es posible almacenar datos ordenados en forma de
matriz
o
array
multidimensional
donde cada dato estará localizado por un doble índice (o triple,
o cuádruple, etc…). En los arrays multidimensionales sí
es necesario
especificar el tamaño de las respectivas dimensiones
(excepto la primera)
aunque declares todos sus elementos.
int
matriz[3][3] = {{2,4,8},{3,9,27},{5,25,125}};
siendo
matriz[0][0]=2; matriz[0][1]=4; … matriz[2][2]=125;
Array de CARACTERES o STRING:
almacena una cadena de caracteres, y se emplea
para almacenar textos. Existen varias opciones:
char
letra='a';
Almacena un carácter.
char
texto[]=“Me
gusta Arduino!”;
Los 18 caracteres que componen la cadena de texto (17 caracteres + 1 para
indicar el fin de la cadena, que aunque no aparezca, está ahí:
'\0')
son
almacenados como elementos separados en el array. Por ejemplo:
char
texto[0]='M';
char
texto[2]='
';
char
texto[16]='!';
Nótese que se emplean comillas dobles (“
”)
para cadenas y comillas simples
('
')
para caracteres individuales.
char
texto[]={'M','e','
','g','u','s','t','a',' ',
'A','r','d','u','i','n','o','!'};
De esta otra forma, válida pero más laboriosa, declaro individualmente todos los
caracteres que componen el array.
char*
palabra=“Arduino”;
char*
frase=“Me
gusta Arduino”;
char*
color[]={“Rojo”,“Azul”,“Verde
limón”};
Esta otra variante, con el asterisco (*), se utiliza para almacenar palabras, frases,
o un array de palabras y frases, donde cada elemento del array es un grupo de
caracteres:
char*
color[0]=“Rojo”;
char*
color[2]=“Verde
limón”;
DGG
5 de 28
Zgłoś jeśli naruszono regulamin