0% encontró este documento útil (0 votos)
17 vistas10 páginas

B3 T6 Arduino

El documento proporciona una guía sobre la programación con Arduino, cubriendo la estructura básica de un programa, la compilación y ejecución, así como instrucciones para entradas/salidas digitales y analógicas. Se detallan conceptos como la declaración de variables, tipos de datos, operadores y funciones comunes. Además, se incluyen ejemplos prácticos y la importancia de la sintaxis correcta en el lenguaje de programación de Arduino.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas10 páginas

B3 T6 Arduino

El documento proporciona una guía sobre la programación con Arduino, cubriendo la estructura básica de un programa, la compilación y ejecución, así como instrucciones para entradas/salidas digitales y analógicas. Se detallan conceptos como la declaración de variables, tipos de datos, operadores y funciones comunes. Además, se incluyen ejemplos prácticos y la importancia de la sintaxis correcta en el lenguaje de programación de Arduino.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

Control y Robótica. IES Cardenal S.

y Rojas

Bloque 3: Programación y robótica

TEMA 6: ARDUINO

1. ESTRUCTURA BÁSICA DE UN PROGRAMA _____________________________________________ 2


2. COMPILACIÓN Y EJECUCIÓN DE UN PROGRAMA _______________________________________ 3
3. INSTRUCCIONES BÁSICAS PARA ENTRADAS/SALIDAS DIGITALES _________________________ 3
4. INSTRUCCIONES BÁSICAS ENTRADAS ANALÓGICAS ____________________________________ 4
5. DECLARACIÓN DE VARIABLES Y CONSTANTES ________________________________________ 4
6. VARIABLES Y DATOS ____________________________________________________________ 5
7. OPERADORES ARITMÉTICOS Y LÓGICOS ____________________________________________ 6
8. ALGUNAS FUNCIONES Y LIBRERIAS MÁS USADAS _____________________________________ 7
9. PUERTO SERIE _________________________________________________________________ 7
10. ESTRUCTURAS DE CONTROL ______________________________________________________ 8
11. GENERACIÓN DE SONIDO ________________________________________________________ 9
12. SENSORES DE LA TARJETA BÁSICA I/O ______________________________________________ 9
12.1. POTENCIÓMETRO _____________________________________________________________ 9
12.2. INFRARROJOS _______________________________________________________________ 10
12.3. TEMPERATURA ______________________________________________________________ 10
12.4. SENSOR DE LUZ VISIBLE ______________________________________________________ 10

B3_Tema 6 Arduino Pág 1


Control y Robótica. IES Cardenal S. y Rojas

1. ESTRUCTURA BÁSICA DE UN PROGRAMA


La estructura básica de programación de Arduino es bastante simple y divide la ejecución en tres partes:
 Variables globales: Te permite declarar variables accesibles desde cualquier parte del programa
(variables globales).
 void setup()
Constituye la preparación del programa.
Esta función se ejecuta una única vez y es empleada para configurar el pinMode (p. ej. si un
determinado pin digital es de entrada o salida), inicializar la comunicación serie…
 void loop ()
La función loop() incluye el código a ser ejecutado continuamente (leyendo las entradas de la placa,
salidas, etc.). Estas instrucciones se ejecutarán indefinidamente mientras haya alimentación en la
placa de arduino

Ejemplo de programa
void setup() {
pinMode(pin, OUTPUT); // Establece 'pin' como salida
}
void loop() {
digitalWrite(pin, HIGH); // Activa 'pin'
delay(1000); // Pausa un segundo
digitalWrite(pin, LOW); // Desactiva 'pin'
delay(1000);
}

En el programa quedaría como en la imagen de la derecha

 void setup(){……}

Entre estas llaves se configura, en este caso,


que el pin digital nº13 se va a emplear como
salida:

 pinMode(13,OUTPUT);
 void loop(){…instrucciones…}
Instrucciones

Las instrucciones que conforman el programa


se escriben en un bucle que se ejecuta
continuamente.

 digitalWrite(13, HIGH); //
encender el LED ...

Nota importante: el lenguaje arduino está basado en C. Es muy importante respetar,


escrupulosamente, el formato de cada una de las instrucciones ( mayúsculas, minúsculas,
puntos y comas..). Cualquier error al teclear supone errores en la compilación del programa.

B3_Tema 6 Arduino Pág 2


Control y Robótica. IES Cardenal S. y Rojas

Sintaxis básica
Símbolos Descripción Ejemplo
; Se usa para finalizar una declaración. int a=13;
{} Una apertura de llaves siempre debe de ir void setup(){
seguida por una llave de cierre. // Instrucciones que se ejecutarán una vez
Se utilizan en varias construcciones }
diferentes e indican el principio y el fin de
una estructura.
// Líneas de comentarios. Se utilizan par dar // Una sola línea de comentario
/*…..*/ información del programa. Las líneas de /*Si la instrucción ocupa más de una línea
comentarios son ignoradas por el puedes utilizar esta sintaxis*/
compilador.
Otros Descripción Ejemplo
#define Reemplazará el nombre definido por el #define led_verde 3 // define la variable
valor asignado. Se suele usar para led verde conectada al pin número 3. En
configurar pines. este caso no existe el punto y coma
final de una instrucción
#include Se utiliza para incluir librerías fuera de su #include <Servo.h> // incluye una librería
sketch. específica para manejar servos. En este
caso no existe el punto y coma final
de una instrucción.

2. COMPILACIÓN Y EJECUCIÓN DE UN PROGRAMA


Ahora toca verificar que hemos escrito bien el programa, sin dejarnos ni una coma (en nuestro caso
comprobamos que no hemos cambiado nada):

Pulsamos el botón

y veremos una barra de progreso:

Salvo que exista algún error de sintaxis, aparecerá:

Una vez verificado, procedemos a cargarlo en la memoria de Arduino para que lo ejecute:
Cargar :
Si no sucede algún fallo en la comunicación aparcerá:

Cada vez que pulsemos el botón “reset” de la placa, Arduino comenzará a ejecutar el programa cargado.
Si el LED asociado a la salida digital 13 parpadea, entonces es que hemos instalado correctamente el
software de Arduino y el driver necesario.
3. INSTRUCCIONES BÁSICAS PARA ENTRADAS/SALIDAS DIGITALES
DO – D13: Disponemos de 14 pines digitales, que pueden actuar como entradas o salidas. Para
ello lo primero que hay que hacer es declarar el pin en cuestión como entrada o como salida. Además el
pin 0 y el 1 se utilizan para comunicación serie (se verá más adelante) y los pins que tienen marcado una
onda se pueden utilizar como salidas PWM.

Cuando se configuran como entradas digitales nos permitirán leer informaciones de tipo Sí/No: P.ej. Si los
interruptores son pulsados o No.
Cuando se configuran como salidas digitales nos permiten activar o desactivar lo que hayamos conectado
en ellas.

B3_Tema 6 Arduino Pág 3


Control y Robótica. IES Cardenal S. y Rojas

En el lenguaje de Arduino, se utilizan una serie de instrucciones básicas para interactuar con las E/S
digitales:
 pinMode(pin, INPUT); // Declara el pin como entrada (lo podría haber declarado salida, y
cualquier pin de los mencionados)
Ejemplo:
pinMode (7, OUTPUT); // Declara el pin 7 como salida.
 digitalWrite(pin,valor);// Escritura en un pin, donde valor = HIGH o LOW
Ejemplo:
digitalWrite (7, HIGH); // Enciende lo que haya conectado en el pin 7

 digitalRead(pin);// lee el estado del pin .


Ejemplo:
digitalRead(5); // Toma la lectura de lo conectado en el pin 5

4. INSTRUCCIONES BÁSICAS ENTRADAS ANALÓGICAS

¿Cómo podemos hacer para que magnitudes continuas, como la temperatura,


sean tratables por Arduino?
Los convertidores analógico-digitales (ADC) convierten una magnitud continua
en valores binarios.

Arduino utiliza 10 bits para codificar cada muestra comprendida entre 0 V y 5 V :


 Lectura 0 V  Combinación binaria 0000000000  0 en decimal
 Lectura 5V  Combinación binaria 1111111111  1023 en decimal.
Frecuencia de muestreo = 10000 muestras/Segundo. (En el programa la opción a elegir 9600
baudios)

 analogRead(pin) Lectura del pin analógico: pin puede ser A0, A1, A2, A3, A4, A5.
¡Hay que incluir la letra A!

Ejemplo:
sensorValue=analogRead(A1);// En este caso asigno a la variable sensorValue el valor que
leo del pin A1
5. DECLARACIÓN DE VARIABLES Y CONSTANTES
En la tabla siguiente se puede ver un programa sin declarar variables y el mismo con declaración de
variables. Si quisiésemos que parpadeara otro LED, y cambiar la frecuencia de parpadeo, debemos
cambiar 5 valores. Si el programa fuese más largo, casi seguro que nos olvidaríamos algún cambio, dando
lugar a errores.
Para evitar ese problema, en programación se utiliza la declaración de variables.

B3_Tema 6 Arduino Pág 4


Control y Robótica. IES Cardenal S. y Rojas

Una variable es un valor que Arduino puede almacenar en su memoria y que, además de utilizarse, puede
modificarse en el transcurso del programa.
La línea de código declara que usaremos una variable llamada led de tipo entera (int)

 int led=13; / / Declaramos la variable led y le asignamos el pin 13. No olvides el punto y coma. La
doble barra sirve para comentarios.
 int retardo= 1000; // Declaramos una variable retardo y le asignamos el valor 1000.

A una variable también le podemos asignar el valor de la lectura de un pin.

estado=digitalRead(12);// A la variable estado le asignamos la lectura de lo que


hayamos conectado en el pin 12.
Es posible declarar una variable sin asignarle un valor inicial, y asignarlo durante el transcurso
del programa:

Por ejemplo: long velocidad;

Dominio de una variable

Como ya hemos visto dependiendo del lugar donde declaremos una variable, ésta tendrá validez en todo el
programa o solamente en una parte de él.
Si declaramos una variable antes del bucle principal (void loop()), esta variable podrá utilizarse y será
reconocida en todo el programa. Recibe el nombre de variable global.
Si declaramos una variable en el interior de una estructura if, while, etc, solo tendrá vigencia dentro de
esa estructura. Recibe el nombre de variable local.
6. VARIABLES Y DATOS
Los datos que maneja Arduino pueden ser variables o constantes. En ambos casos, debe declararse el tipo
de dato que usará dicha variable o constante, con el fin de reservar la cantidad adecuada de memoria:

Tipos de Descripción Ejemplo


datos
char Almacena un carácter char letra= „a‟; // entre comillas simples

byte Almacena un número pequeño byte numerito=57; // número entre 0 y 255

int Número entero int entero; // hasta 2 bytes

long Número mayor que int long numero=1000 // puede almacenar hasta 4 bytes

float Almacena un número decimal float decimal =42.6; // el separador decimal es el punto

B3_Tema 6 Arduino Pág 5


Control y Robótica. IES Cardenal S. y Rojas

String Almacena una frase o conjunto de String frase=”Hola mundo”; // Se escribe entre comillas normales
caracteres

array Es una hilera de variables que int pines[]={3,5,7,8}


comparten el mismo nombre. Se
diferencian por un subíndice numérico pines[0] // comienza por el 0. Asigna primer valor, en este caso 3
entre corchetes pines[3] // asigna el cuarto valor, en este caso 8

Nota importante: la memoria de Arduino es un bien escaso, y cada variable declarada ocupa un
espacio según el tipo al que pertenezca. Por tanto no debemos desperdiciar espacio declarando
una varible como float cuando un tipo int es suficiente.

El lenguaje de Arduino presenta las siguientes constantes predefinidas:

Constantes Descripción Ejemplo


INPUT Entrada pinMode (4, INPUT); // Configuramos el pin 4 como entrada

OUTPUT Salida pinMode (5, OUTPUT); // Configuramos el pin 5 como salida

HIGH Encendido digitalWrite (3,HIGH); // Encendemos lo que hayamos conectado en el pin 3

LOW Apagado digitalWrite (5,LOW); // Apagamos lo que hayamos conectado en el pin 5

True Se define como 1 if (botoncito== 1) { // En caso afirmativo (true)


encendemos algo
digitalWrite (3,HIGH);
False Se define como 0
}
// en caso contrario(false) apagamos
else { algo
digitalWrite(3, LOW);
}

7. OPERADORES ARITMÉTICOS Y LÓGICOS

Operadores
Aritméticos Descripción Comparación Descripción
= Operador de asignación == Igual que
+/- Suma/Resta != Distinto a
++ Incremento < Menor que
x ++  Lo mismo que x = x <= Menor o igual que
+ 1.
-- Decremento > Mayor que
x --  Lo mismo que x = x - >= Mayor o igual que
1
Lógicos Descripción Ejemplo
&& AND. La salida proporciona un if (x>5 &&<10) { }
1 lógico (TRUE) solo cuando las // Realizará lo que pongamos entre las llaves si x es mayor que 5 y
dos sentencias son ciertas. menor que 10
|| OR. La salida proporciona un 1 if (x>5 || y<10){ }
lógico (TRUE) cuando una u // Realizará lo que pongamos entre las llaves si x es mayor que 5 o
otra sentencia es cierta. y menor que 10
! NOT. La salida proporciona un If (X ! 0) { }
1 lógico (TRUE) cuando la // Realizará lo que pongamos entre las llaves si x es distinto de
entrada esta a 0 (FALSE) y cero
viceversa.

Nota importante: no confundir el operador de asignación = con el comparador ==


X=2 ; // Asigna el valor 2 a la variable x
X==2; //Compara el valor de x con 2.

B3_Tema 6 Arduino Pág 6


Control y Robótica. IES Cardenal S. y Rojas

8. ALGUNAS FUNCIONES Y LIBRERIAS MÁS USADAS

FUNCIONES
Tiempo Descripción Ejemplo
delay (ms); Paraliza el programa durante el delay(500); // Esperamos 500 ms(0.5 segundos)
tiempo indicado. Se expresa en
milisegundos.
millis(); Devuelve el número de start_crono=millis(); // Mide el tiempo y lo guarda en la
milisegundos transcurridos variable start_crono
desde que se conectó Arduino.
delayMicroseconds(); Paraliza el programa durante el delayMicroseconds(2); // Esperamos 2 microsegundos
tiempo indicado. Se expresa en
microsegundos.
Otras Descripción Ejemplo
min(x,y); Devuelve el mínimo y el
max(x,y); máximo respectivamente de
entre dos parámetros.
map(variable, valMin, Distribuye el rango de valores map(ldr,0,1023,50,5000); // Distribuye el rango de valores
valMax, minDes, leídos entre el rango deseado. leídos (0-1023), entre el rango de valores deseado (50-5000)
maxDes);
random(max); Genera un valor aleatorio. random(100); // Genera un número aleatorio menor de 100
random(min,max); random(50,100); // genera un número aleatorio entre 50 y 100

LIBRERÍAS
Servo Funciones Descripción Ejemplo
#include<Servo.h> Instancia.attach(pin) Declara la salida del servo myservo.attach(4);
Instancia.write(ángulo) Posiciona el eje del servo myservo.write (90)
en el ángulo indicado en
grados.
Instancia.read() Devuelve un ángulo entre myservo.read();
0º y 180º.
Pantallas LCD Funciones Descripción Ejemplo
#include<LiquidCrystal.h> Instancia.begin(columnas, Inicializa la pantalla lcd.begin(16,2);
filas);
Instancia.home(); Envía el cursor al inicio de lcd.home();
la pantalla, posición(0,0)
Instancia.print(valor); Muestra por pantalla lcd.print(“Temperatura”);
Instancia.setCursor(x,y); Coloca el cursosr en las lcd.setCursor(0,1); //
coordenadas indicadas Movemos el cursor a la
posición 0 de la línea 1
9. PUERTO SERIE

Arduino dispone de un puerto serie compatible TTL (5 voltios)


TX: Transmisión  Línea D1 (Arduino UNO)
RX: Recepción  Línea D0 (Arduino UNO)
Permite la comunicación hacia/desde la interfaz USB y, por tanto, con el ordenador. También permitiría la
conexión con otra placa arduino.
Lo primero que hay que hacer es inicializar el puerto (velocidad de muestreo)

 Serial.begin(speed); // Abre un Puerto serie y especifica la velocidad de transmisión.

Speed puede valer: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 o 115200.
La velocidad típica para comunicación con el ordenador es de 9600

Serial.begin(9600); // abre el puerto serie configuarando la velocidad a 9600 bps

Para visualizar los datos que transitan por el puerto serie, el IDE de Arduino dispone de dos herramientas:
Menú Herramientas  Monitor Serial (Visualización de los valores recibidos).

B3_Tema 6 Arduino Pág 7


Control y Robótica. IES Cardenal S. y Rojas

Menú Herramientas  Serial Plotter (Visualización gráfica de los valores recibidos)

Y las instrucciones serían:

 Serial.print(data); // Imprime datos al puerto serie.


 Serial.print (“Hola mundo”); // Imprime el texto. No olvidar comillas.
 Serial.println(data); //Imprime datos al puerto serie seguido por un retorno de línea
automático.

Otras instrucciones importantes

 Serial.read(); //Lee o captura un byte (un carácter) desde el puerto serie. Devuelve -1 si no
hay ningún carácter en el puerto serie.
 Serial.available(); // Devuelve el número de caracteres disponibles para leer desde el puerto
serie.

10. ESTRUCTURAS DE CONTROL

if
Se utiliza en conjunción con un operador de comparación(== igual, != distinto, < menor, > mayor).Si
se cumple una condición se ejecutarán las instrucciones.
if (nombre == 5)
{
//instrucciones a ejecutar
}

if / else
Se utiliza en conjunción con un operador de comparación.
Tras comprobar si se cumple una condición permite hacer una cosa u otra.
Permite agrupar múltiples comprobaciones.

if (a < b)
{
//instrucciones a ejecutar
}
else
{
//Si no se cumple instrucciones a ejecutar código 2
}

while
Se utiliza para repetir un bloque de instrucciones hasta que se cumpla una condición. Por ejemplo, que
alguien pulse un botón.

while(boton==0)
{
// instrucciones a repetir
}

for
Se utiliza para repetir instrucciones un número determinado de veces. Se inicializa una variable, se

B3_Tema 6 Arduino Pág 8


Control y Robótica. IES Cardenal S. y Rojas

comprueba una condición y ejecuta un bloque, luego se comprueba nuevamente la condición y así
sucesivamente hasta que la condición ya no sea válida.

for (int a = 0; a < 10; a++)


{
// desde que la variable a vale 0 hasta que valga nueve repite las instrucciones que pongamos aquí.
Cada vez que lo hace suma uno a la variable a.
}

Este código es equivalente al siguiente

int a = 0;
while (a < 10)
{
código
a++
}

Switch …case
Se utiliza para comparar el valor de una variable en diferentes casos.
Cuando el valor de la variable coincide con el valor de uno de los casos, se ejecutará lo que haya
dentro de este.

La sentencia break se utiliza para acabar cada caso.


switch (variable) {
case 1:
// código cuando "variable" es igual a 1
break;
case 2:
//código cuando "variable" es igual a 2
break;
default:
//código ejecutado cuando ninguna de las sentencias se cumple (es opcional)
}
11. GENERACIÓN DE SONIDO
La tarjeta Arduino Basic I/O, posee un pequeño altavoz
conectado a la salida digital 2 de Arduino.

Podemos generar sonido de 2 formas

Automáticamente usando la instrucción tone.

 tone(pin,frecuencia,duración); // Genera una onda cuadrada de la frecuencia especificada


(y un 50% de ciclo de trabajo) en un pin. Si no especificamos duración, la onda continúa hasta
encontrar una instrucción noTone(pin). El pin puede conectarse a un zumbador piezoeléctrico u
otro altavoz.
 noTone(); // Detiene la generación de la señal cuadrada activada mediante la
función tone(). No tiene efecto si no se está generando ningún tono.
12. SENSORES DE LA TARJETA BÁSICA I/O
12.1. POTENCIÓMETRO

En la Figura: Diagrama eléctrico de conexión del potenciómetro, observamos que el valor máximo
B3_Tema 6 Arduino Pág 9
Control y Robótica. IES Cardenal S. y Rojas

devuelto será 1023 correspondiente a 5 V y el mínimo será 0 correspondiente a 0 V.


10
Si queremos saber el voltaje  Voltaje = valorLeido * (Vref/2 ). Por ejemplo:

12.2. INFRARROJOS

El sensor conectado en el pin A3 (CNY70) dispone, además de un


emisor de luz infrarroja, por lo que, si no hay otra fuente infrarroja
cercana, puede usarse para capturar la luz que rebote en un objeto
cercano.

Ejemplo: Podemos calibrar los valores que devuelve el sensor según


la cercanía y el color de un objeto:

luz=analogRead(A3); //Captura valor del pinA3(sensorIR)


Serial.println(luz); //Transmite por el puerto serie la medida
expresada en decimal

12.3. TEMPERATURA

Para obtener la temperatura a partir de la lectura de la entrada analógica solo hay que considerar:
 El convertidor A/D nos va a dar en la salida valores entre 0 y 1023 que se corresponderán
con 0 V y 5 V.
 Según la figura, cada 0,01 V se corresponde con 1 ºC.
La expresión resultante para saber la temperatura será:

Sensor de temperatura LM35 conectado a la entrada analógica A2

12.4. SENSOR DE LUZ VISIBLE


La cantidad de luz incidente hace varia la intensidad que atraviesa al sensor y con ello la caída de potencial
en la resistencia.
De esta forma, el voltaje en A2 varía con la luminosidad.
Con el siguiente ejemplo podemos visualizar, mediante la herramienta Serial Plotter
la variación de la luz que incide en el sensor.
luz =analogRead(A2); // declara la variable luz y la asigna la lectura sensor de luz
Serial.println(luz); // Transmite al puerto serie la medida en decimal

B3_Tema 6 Arduino Pág 10

También podría gustarte