PDF de programación - Apuntes de ARDUINO Nivel Enteraillo

Imágen de pdf Apuntes de ARDUINO Nivel Enteraillo

Apuntes de ARDUINO Nivel Enteraillográfica de visualizaciones

Actualizado el 1 de Octubre del 2019 (Publicado el 16 de Mayo del 2019)
2.199 visualizaciones desde el 16 de Mayo del 2019
1,3 MB
28 paginas
Creado hace 12a (05/02/2012)
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
5 V
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);
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 como tensión de referencia 1,1 V

// 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·1038 y
3.4028235·1038 (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·10308. 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,
es necesario
o cuádruple, etc…). En los arrays multidimensionales sí
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';
Nótese que se emplean comillas dobles (“ ”) para cadenas y comillas simples
(' ') para caracteres individuales.

char texto[16]='!';

char texto[2]=' ';

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

Arduino

Nivel Enteraillo

La función sizeof ( ) permite reconocer el tamaño del array, en número de bytes:

sizeof(datos);

Por ejemplo:
int edades[]={36,5,68,15,22,41};
char texto[]= “Me llamo Daniel”;
int x=sizeof(edades);
int y=sizeof(texto);

/* x tomará un valor de 12 (cada variable
definida como int ocupa 2 bytes */
/* y tomará un valor de 16 (cada caracter ocupa
1 bytes + 1 que indica el final de la cadena */

Esta función sólo se utiliza en los casos en los que se emplee el tamaño del array
y sea probable cambiar dicho array sin tener que cambiar el resto de código del
programa. Ejemplo: imprimir un mensaje letra a letra:
char mensaje[]=“Leeme despacito, pisha”; //ocupa 22+1 bytes
int i;
void setup(){
Serial.begin(9600);
}
void loop() {
for (i=0; i < sizeof(mensaje)-1; i++){ //imprimiré los 22 caracteres
Serial.print(i,DEC);
Serial.print(" = ");
Serial.println(mensaje[i],BYTE);
delay(500);
}
}
Si por ejemplo quisiera hacer algo parecido con un array del tipo int, debería
poner:
for (i=0; i < sizeof(datos)/2; i++){

//cada número ocupa 2 bytes

4. DEFINIR FUNCIONES void función(){… int función(){…

Según las características de un programa, se puede volver muy útil la utilización de
funciones definidas por nosotros mismos. Todo lenguaje de programación debe
prestarse a esta posibilidad, y Arduino no es una excepción. Existen varias formas de
definir una función:

Si de la función que queremos definir no se espera ningún valor de retorno, y se
limita a realizar una serie de órdenes que dependan (o no) de ciertas variables,
entonces la función (que sería una mera subrutina) se define de la siguiente
manera:

void funcion (a,b) {…}

DGG

6 de 28

Arduino

Nivel Enteraillo

donde a y b serían variables que la función debería utilizar (por supuesto, habrá
funciones que no necesiten de ninguna variable). Si dichas variables no estaban
declaradas con anterioridad, habrá que declararlas en ese mismo momento:

void funcion (int a,int b) {…}

Si la función que vamos a definir quiero que me devuelva un valor, debo
declararla como si de una variable se tratara, especificando qué tipo de variable
es dicho valor (int, long, float,…). Para que la función tome un valor,
debemos utilizar la función return acompañada de la variable cuyo valor quiero
asignar a la función.

int funcion (a,b) { …

//también puede manejar variables

int val=0;
… ;
val= … ;
return val;

}

Si deseo en algún momento del código de la función interrumpirla y salir de ella (de
manera análoga al break en las estructuras), y seguir el programa por la siguiente línea
después de la llamada de la función, utilizaré el comando return; (sin acompañarlo de
ninguna variable o dato, con lo cual devuelve un valor vacío).

Proyecto 1. Emisor de señal de emergencia luminoso: S.O.S. en código Morse

Emplearemos un simple LED para enviar nuestra señal de socorro en código Mor
  • Links de descarga
http://lwp-l.com/pdf15939

Comentarios de: Apuntes de ARDUINO Nivel Enteraillo (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad