Professional Documents
Culture Documents
1
Índice
¿Qué es Arduino? 3
Hardware Arduino 8
Software Arduino 22
Lenguaje de programación 24
Historia y filosofía de Arduino 26
¿Qué podemos hacer con Arduino? 27
Otras plataformas 31
Introducción 32
Primeros Pasos 34
Pines digitales: salida 34
Temporizaciones Arduino 53
Pines digitales: entrada 54
Variables 70
Regulación led 80
Estructuras de control de flujo 104
Estructuras de control de flujo no repetitivas 105
If 107
else 112
if else if 118
Operadores lógicos 123
Operadores de comparación 129
Operadores compuestos y aritméticos 136
switch 136
Web grafía 139
2
¿Qué es Arduino?
Arduino se ha convertido en un referente del hardware libre que
surgió como una herramienta para estudiantes, pero que, poco a
poco, ha conseguido romper barreras. Cada vez son más las personas
que ven en esta plataforma la herramienta idónea para aprender todo
aquello que quisieron conocer y no pudieron.
3
Imagen 1. MCU
¿Control de procesos?
• Control:
«Regulación manual o automática sobre un sistema».
• Proceso:
«Conjunto de fases sucesivas de un fenómeno natural o de una
operación artificial».
4
Imagen 2. Proceso
5
escoger un MCU de entre todos los que tiene; para analizar los MCU,
necesitamos trabajar con sus manuales.
Imagen 3. Manual
Imagen 4. Componentes
6
reducido tamaño. Aún con todas estas dificultades, vamos a suponer
que nuestra elección es la correcta.
Imagen 5.
7
solución, desarrollar el programa adecuado e implementar
físicamente este sistema (conectarlo a un entorno).
Hardware Arduino
8
Imagen 7.
9
El resto de Arduinos tienen directamente soldado su MCU a la placa;
el no estar soldado a la placa presenta unas grandes ventajas, como
la posibilidad de programar un MCU, quitarlo de la placa e insertarlo
en otro sistema electrónico.
Como comentábamos antes, Arduino no fabrica los MCU, sino que los
adquiere y los implementa en el proceso de fabricación de las placas;
es necesario que le carguen un programa (bootloader) para que
pueda trabajar ese MCU en la plataforma Arduino.
Al comprar por nuestra cuenta el MCU, no vendrá con ese programa
cargado y será trabajo nuestro realizar ese proceso.
10
Revisemos las especificaciones técnicas:
Memoria de datos
EEPROM 1 KB (ATmega328P)
permanentes.
11
información. Además de ser mucha menos información, es mucho
más concreta y, para una persona principiante, será más fácil
asimilar ciertos conceptos con este tipo de disposición.
12
Imagen 8. Pines digitales Arduino UNO
Este tipo de señales nos limitan, ya que habrá una gran cantidad de
situaciones en las que, únicamente con dos estados, no podemos
evaluar una situación, como, por ejemplo, regular la velocidad de un
motor. Un motor tiene más de dos estados de trabajo, no solo
encendido o apagado, también podemos regular su velocidad; por lo
tanto, en muchos procesos necesitamos trabajar con otro tipo de
señales (las señales analógicas, como veremos).
13
¿Qué es una señal PWM? Ahondaremos más en las señales PWM
en el capítulo correspondiente, pero, a grandes rasgos, es una señal
que nos permite variar el valor de una señal digital a lo largo del
tiempo, con lo que ya podemos regular, por ejemplo, la velocidad de
un motor o la luminosidad de un led.
14
Imagen 12. Señales digitales/analógicas
15
Como explicábamos, cabe la posibilidad de que a una entrada digital,
en vez de entrarle una señal con un valor de 0 o 5 V, le entre un
valor intermedio (2,2, 3, 4,8 V). Aún así, el Arduino nos daría uno de
los dos estados posibles: activado (5 V) o desactivado (0 V).
Estos serían los aspectos básicos que hay que analizar en un Arduino.
Esto no quiere decir que haya muchos otros igual o más importantes,
por ejemplo: n.º de interrupciones, resolución de entradas
analógicas, Timers. No obstante, son conceptos más complejos que
es necesario trabajar antes con Arduino para luego tener la capacidad
de evaluarlos.
16
Muchos de los Arduinos incorporan un conector para alimentarlos a
través de una fuente de alimentación diferente al USB, para poder
alimentarlo con pilas, baterías o cargadores, por ejemplo. En el
diseño de algunas placas decidieron añadir esta solución, es decir, no
era imprescindible este conector con su electrónica correspondiente
para alimentar un Arduino. Sin embargo, resulta una funcionalidad
añadida muy útil para cuando queremos que nuestros proyectos no
estén conectados a nuestro PC o un cargador como el de un móvil.
17
Como hemos visto, todos los pines de la placa Arduino tienen
asociada una referencia. Explicábamos que la limitación de intensidad
para cada pin es de 20 mA, tanto sea de salida como de entrada, y es
cierto, pero existe un pin, el de 3,3 V, que permite aportar hasta
50mA.
18
Imagen 17. Arduino NANO
19
Su tamaño lo hace ser uno de los más pequeños y la principal
diferencia que encontramos con respecto al Arduino UNO es la falta
del hardware específico para poder programarlo. Necesitamos un
programador FTDI:
20
Este Arduino, además de una conexión a internet a través de
Ethernet, dispone de un módulo WIFI para una conexión inalámbrica.
21
analizar el hardware, vemos que este elemento de la plataforma
Arduino es libre.
Software Arduino
22
nuestro PC. También disponemos de ejemplos y librerías para que
nos sea más sencillo aprender a programar. Las librerías que tiene
instaladas son las oficiales. ¿Qué es una librería? El término de
«librería» viene de la mala traducción de library («biblioteca») , pero
hace referencia a un programa que tenemos o podemos tener
instalado en nuestro IDE, que podemos usar en cualquier momento.
23
Imagen 26. Interfaz Processing
Lenguaje de programación
24
intuitivos (lo que los hace difíciles de recordar) y programas sencillos
pueden llegar a alcanzar un gran tamaño.
25
Por lo tanto, aunque nosotros programemos en lenguaje a alto nivel,
ese no será el programa que realmente se cargue en la memoria de
programa del MCU, sino su «traducción» al lenguaje máquina
correspondiente, posibilidades:
26
A través de la web de Arduino se crean foros sobre cualquier
temática, no solo para aportar ideas sino para solucionar dudas que
puedan tener otras personas usuarias. Sin embargo, no solo a través
de la web de Arduino se comparte este proyecto, disponemos de una
gran cantidad de webs, blogs, vídeos tutoriales dedicados a Arduino.
27
Imagen 28. Módulos Arduino
28
Queremos conocer la temperatura y humedad de una sala de
calderas, no tenemos más que irnos a nuestro navegador web y
realizar la búsqueda adecuada.
29
componentes, pero en este formato. Por lo tanto, el conectar
cualquier componente siguiendo este tipo de esquemas no va a
suponer un inconveniente.
Si necesitamos algún componente a mayores, como es este caso, nos
aparecería reflejado en la información.
30
¿Disponemos de todo tipo de sistemas electrónicos como el
que acabamos de ver? Si, disponemos de todo tipo de sistemas
que necesitemos.
Otras plataformas
31
ideal. No es necesario, puesto que disponemos de herramientas que
nos van a facilitar este tipo de programación.
Introducción
Como hemos visto, Arduino es algo más que un hardware, está
formado por un software y un lenguaje de programación. Además, en
ciertos casos, necesitaremos conocimientos sobre electrónica.
32
Lo que busca este libro es que, a través de casos prácticos,
adquiramos conocimientos en paralelo sobre cada una de estas áreas.
Los casos irán creciendo en dificultad para ir exigiéndonos más
conocimientos sobre alguna de ellas.
Materiales Unidades
Protoboard 1
Arduino UNO 2
Resistencias 330 ohmios 4
Led 2
Potenciómetro 1k 1
Pulsadores 2
Cables protoboard 20
33
Primeros Pasos
34
Tenemos que recordar que el límite de 20 mA no significa que no
pueda «salir» más intensidad por el pin, sino que, por criterios de
seguridad, no debe salir más.
El primer elemento con el cual vamos a trabajar es una resistencia,
según la RAE:
• Resistencia:
«Elemento que se intercala en un circuito para modificar el paso de la
corriente o para producir calor»
35
Hasta ahora, hemos hablado de tensión e intensidad sin definir estos
términos. Vamos a explicarlos a través de un caso práctico.
Según la RAE:
• Tensión:
«Voltaje con que se realiza una transmisión de energía eléctrica»;
«Voltaje entre dos polos o electrodos».
• Intensidad:
«Magnitud física que expresa la cantidad de electricidad que atraviesa
un conductor en la unidad de tiempo, y cuya unidad en el sistema
internacional es el amperio».
Podemos considerar el voltaje como una fuerza, más bien como una
diferencia de fuerzas. Si la pila por un extremo me aporta un fuerza
de 9 V y, por el otro, una fuerza de 0 V, la fuerza resultante, si nos
conectamos a los dos polos de la pila, es la diferencia de ambas
fuerzas (9-0); por lo tanto, la tensión de la pila es de 9 voltios.
36
Imagen 35. Tensión
37
Imagen 37. Inversión conexión
V(tensión) = I(intensidad)*R(resistencia)
V = I*R
V(voltios) = I(amperios)*R(ohmios)
IR = V(de la resistencia)/100
IR = 9/100
IR = 0.09 amperios
Con estos conceptos básicos de electrónica, podemos empezar a
trabajar con nuestro Arduino.
38
Imagen 38. Salida Arduino
39
Como indicamos, un led es un diodo especial, que emite luz al
circular corriente eléctrica a través de él. Dispone de dos patillas: una
más grande (ánodo) que la otra (cátodo). Debemos conectar el diodo
conforme circule corriente de ánodo a cátodo.
40
Imagen 42. Conexión puntos protoboard
41
Sabemos ya que, si entre nuestro Arduino y el resto de componentes
que usemos, superamos los 500 mA en consumo, la alimentación por
USB no sería la adecuada.
42
Lo primero que debemos hacer es irnos al apartado de herramientas
y asegurarnos de tener seleccionada la placa que usemos en cada
momento. Esto es importante para que el IDE realice las operaciones
necesarias y se asegure de cargar correctamente el programa.
43
Empecemos a programar: para ello, nos vamos a la parte de
desarrollo de programa; es importante conocer la estructura de un
programa y las normas que debemos seguir a la hora de programar.
Al abrir el IDE, nos genera un documento con unas pocas líneas del
programa ya escritas. Si nos situamos antes del void setup(){ y
pulsamos la tecla Enter, vemos que, al igual que en un documento
Word, crearemos un campo en blanco cada vez más grande. Puede
ser todo lo grande que queramos, los espacios en blanco no influyen
en el programa.
44
Una vez finalizada su ejecución «salta» al void loop para ejecutar lo
que haya entre llaves de forma continua.
45
Imagen 50. Comentarios
46
pinMode(param1,param2);
¿Es necesario configurar todos los pines? No, solo los que
utilicemos. Antes de seguir, vamos a explicar un poco el sistema
binario, lo que nos va ha permitir entender mejor lo que estamos
haciendo.
47
Imaginemos un registro como si fuera un celda, en la cual solo puede
haber dos valores posibles, 0 o 1, lo que estamos haciendo entonces
con la instrucción pinMode es ir a ese registro y escribir un 0 (INPUT)
o 1 (OUPUT). Es importante recalcar que, en una celda, siempre tiene
que haber un valor, bien sea 0 o 1; no es posible que una celda se
encuentre vacía. Cada vez que se enciende o resetea el Arduino,
estos registros se ponen a un valor por defecto, es trabajo del
programador cambiar el valor de los registros que sean necesarios.
digitalWrite(param1,param2);
48
Imagen 53. Primer programa Arduino
49
Al instalar el IDE de Arduino se genera una carpeta con el nombre de
Arduino en el directorio de Mis Documentos. Por defecto, los
programas se guardan en esta carpeta (podemos cambiar la carpeta
de destino). Al guardar el programa, se crea otra carpeta dentro de la
anterior con el nombre del programa y, dentro, el archivo de
programa, con extensión .ino; a través de la consola podemos
conocer el proceso de verificación (en este caso, compilando
programa). Si no hay errores nos mostraría un mensaje similar al
siguiente:
50
El proceso de carga del programa es un poco complejo: primero, el
IDE comprueba que no haya errores; luego, «traduce», si es
necesario, ese programa a un lenguaje que pueda almacenar e
interpretar el MCU del Arduino.
Para que esto sea posible, el IDE resetea el Arduino. Cada vez que se
resetea un Arduino, entra en funcionamiento el bootloader que, tal y
como vimos en capítulos anteriores, es un programa que cargan al
MCU antes de vendernos el Arduino.
51
Resumiendo: encender led
Otras pruebas
Imagen 59.Programa
52
Imagen 60.Programa
Temporizaciones Arduino
delay(parámetro);
delayMicroseconds(parámetro);
53
Imagen 61.Programa
Trabajar con un pin como una entrada significa que este debe leer el
valor de una señal. Antes de aprender a hacerlo con un Arduino,
vamos a hacerlo con un multímetro.
Según la RAE:
• Multímetro:
54
Como sabemos, la tensión de una pila es la diferencia de tensiones de
sus polos. Por lo tanto, para calcular la diferencia, debemos conocer
la tensión de cada polo. El multímetro devolverá la tensión de la pila
si se conecta cada polo de la pila a este.
55
Para medir el voltaje de una señal con un multímetro, teníamos que
conectar los dos polos de la batería a este. En el Arduino, sucede lo
mismo; al fin y al cabo, estamos realizando la misma operación.
56
Disponemos de: un pin de 5 V y otros de 3,3 V, a través de los cuales
podemos demandar 20 y 50 mA, respectivamente; dos pines GND y
uno a mayores (encima del pin 13). Es indiferente en cuál realicemos
la conexión. También observamos el pin de Vin, a través de él
podemos alimentar nuestro Arduino, comparte las mismas
propiedades que el conector Jack.
57
En la imagen 68, vemos qué marcaría el multímetro cuando se pulsa
y cuando no se pulsa el botón.
digitalRead(parámetro);
58
Lo que hay que hacer es actualizar el estado de led en función del
valor del pulsador. Para ello, empleamos la instrucción que ya
habíamos visto de digitalWrite(13; hasta aquí, no tenemos ningún
cambio.
59
Imagen 73. Posibilidades Pull_Up
60
Imagen 75. Invertir valor
61
Imagen 77. Arduino circuito Pull_Up
62
Es exactamente lo mismo que hemos hecho en el circuito de Pull_Up.
La única diferencia es que la resistencia que antes conectábamos en
la protoboard, ahora está conectada internamente.
63
Ejercicios propuestos:
64
1. Conectar dos leds: uno debe parpadear cada 5 segundos
y, el otro, cada segundo.
65
2. Conectar un led y un botón (conectado de cualquiera de
las tres formas anteriormente vistas). En caso de que se
pulse el botón, el led debe parpadear cada 2 segundos;
si no está pulsado, debe permanecer apagado.
66
3. Conectar un botón y dos leds (A y B): el led A tiene que
encenderse mientras el botón está pulsado y apagarse
cuando no está pulsado; el led B funciona a la inversa
que el led A.
67
4. Dos Arduinos: el Arduino A debe tener conectado un
botón y, el Arduino B, un led. Si se pulsa el botón del A,
se debe encender el led del B (y, si no, debe apagarse).
El A no puede estar conectado al led, ni el B conectado al
botón.
68
69
Variables
70
Al declarar una variable, esta toma el valor de 0 por defecto; también
tenemos la posibilidad de inicializar una variable, es decir, crear una
variable con un valor determinado.
71
En la imagen anterior, usamos nuestra primera variable. Como
vemos, la declaramos antes del void setup y decidimos inicializarla a
0.
Las variables globales son aquellas que se declaran antes del void
setup, como es el caso anterior. Por eso podemos utilizar esa variable
dentro del void loop, a pesar de no estar declarada en esa parte del
programa.
72
Tal y como vemos en la imagen anterior, si declaramos una variable
dentro del void setup y la utilizamos en el void loop, nos saldrá un
error, diciendo que esa variable no está declarada para ser usada en
esa parte del programa.
73
Repetir los ejercicios propuestos anteriores, pero usando variables
para almacenar todos los datos con los que se trabajen (menos los
valores de los delay).
74
5. Conectar dos leds: uno debe parpadear cada 5 segundos
y, el otro, cada segundo.
75
6. Conectar un led y un botón (conectado de cualquiera de
las tres formas anteriormente vistas). En caso de que se
pulse el botón, el led debe parpadear cada 2 segundos;
si no está pulsado, debe permanecer apagado.
76
7. Conectar un botón y dos leds (A y B): el led A tiene que
encenderse mientras el botón está pulsado y apagarse
cuando no está pulsado; el led B funciona a la inversa
que el led A.
77
8. Dos Arduinos: el Arduino A debe tener conectado un
botón y, el Arduino B, un led. Si se pulsa el botón del A,
se debe encender el led del B (y, si no, debe apagarse).
El A no puede estar conectado al led, ni el B conectado al
botón.
78
79
Regulación led
Lo que se pretende con este caso es trabajar con dos tipos de señales
nuevas, ampliar lo visto sobre el sistema binario y trabajar con
nuevas variables y operaciones.
• Potenciómetro:
«Instrumento que mide las diferencias de potencial eléctrico»;
«Resistencia regulable en un circuito eléctrico».
80
Como vemos en la imagen 88, un potenciómetro dispone de 3
patillas: tanto la patilla de la izquierda como la de la derecha se
utilizan para alimentar el potenciómetro y la patilla central genera
una señal proporcional a la posición del mecanismo de rotación.
Imagen 90.
V(tensión) = I(intensidad)*R(resistencia)
V = I*R
I = 5/1000 = 0,005 amperios (A) = 5 miliamperios (mA)
81
Imagen 91. Tercera patilla potenciómetro
82
El hecho de que dos o más componentes se encuentren conectados
en serie hace que la intensidad que circula a través de cada uno de
ellos sea igual a la que circula por el resto.
Imagen 93.
83
I = 5/1000 = 0,005 amperios (A) = 5 miliamperios (mA)
V = I*R
Imagen 96.
84
valor de la resistencia que contacta con la tercera patilla es de 500
ohmios. Por lo tanto, la tensión de salida de esa patilla es de 2,5
voltios (5 mA*500 ohmios).
Imagen 97.
85
conectemos el positivo o el negativo). En función de la posición, se
varía la tensión de salida por la patilla central.
Imagen 99.
Ilustración 100.
86
La resolución viene definida por el número de bits; en este caso, ya
no trabajamos con un único bit, como llevamos hecho hasta ahora.
Vamos a aprovechar esto para ampliar los conocimientos sobre el
sistema binario.
0 0 0 0 0 0 0 0
Equivalente número
Codificación binario natural
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 1 0 2
0 0 0 0 0 0 1 1 3
0 0 0 0 0 1 0 0 4
0 0 0 0 0 1 0 1 5
87
La configuración inicial sería con todos los bits (sean 8, 10, 20, etc.)
a cero. Al igual que hacemos con los números naturales, al empezar
a incrementar lo hacemos sobre el primer dígito, si desbordamos, es
decir, pasamos de 9, reseteamos ese dígito y sumamos uno al
siguiente.
88
Imagen 102.
89
En conclusión, conectamos una entrada que varía entre 0 y 5 V y el
valor numérico que devuelve el Arduino será de 0 a 1023,
proporcional a la entrada.
analogRead(param1);
90
Las entradas analógicas no necesitan ser inicializadas, como sí ocurre
con las entradas digitales; por defecto, se comportan como entradas
analógicas.
Una señal PWM es una señal que varía periódicamente entre sus dos
posibles estados: encendido o apagado. Esos dos valores, en caso de
un Arduino, son 0 o 5 V.
91
Antes de empezar a generar señales PWM, debemos ver previamente
dos términos: «frecuencia» y «período».
T(período) = 1/f(frecuencia)
T(segundos) = 1/hercios
Imagen 106
92
Por lo tanto, teniendo en cuenta que una señal analógica tiene un
valor de 0 o 5 V, si genero unas 500 señales por segundo y cada una
de ellas dura 2000 microsengudos, si programo que cada señal se
encuentre activa 1000 microsengundos y desactivada otros 1000
microsengundos, la tensión media con la que trabajará el led es de
2,5 V.
analogWrite(param1,param2);
map(valor,min_valor,max_valor,min_resul,max_resul);
Imagen 107.
93
En resumen:
94
Ejercicios propuestos:
95
9. Modificar el tiempo de parpadeo de un led en función de
la señal de un potenciómetro. El tiempo debe variar
entre 100 y 3000 milisegundos.
96
10. Repetir el ejercicio 9, añadiendo un botón y, además, el
led solo puede parpadear si el botón está pulsado; si no,
debe quedar apagado.
97
1. Dos Arduinos: al Arduino A se le conectará un
potenciómetro y, al Arduino B, un led. El led del Arduino
B se debe regular en función del valor del potenciómetro
del Arduino A. El Arduino A no puede estar conectado al
led del B y el Arduino B no puede estar conectado al
potenciómetro del A.
98
99
2. Repetir el ejercicio 11, añadiendo un led al Arduino A y
comparar si los led del Arduino A y B se regulan del
mismo modo.
100
101
3. Modificar el ejercicio 2 para que el led del Arduino B se
regule a la inversa que el Arduino A.
102
103
Estructuras de control de flujo
Hasta ahora, nuestros programas estaban formados por un conjunto
de líneas de código que se ejecutaban en su totalidad y de forma
secuencial, es decir, desde la primera línea hasta la última.
Imagen 110.
104
Estructuras de control de flujo no repetitivas
105
Imagen 112.
Imagen 113.
106
Como podemos comprobar, un diagrama de flujo consiste en plasmar
ideas en un formato sencillo; podemos ser todo lo específicos que
queramos, pero se trata de hacer una primera división de las tareas
más importantes que hay que realizar.
If
Imagen 114.
107
Estructura if:
If(condición)
{
//instrucciones que se ejecutan
}
Imagen 115.
108
Imagen 116.
Imagen 117.
Imagen 118.
109
Si seguimos el esquema de la imagen 116 y cargamos el programa
de la imagen 117, veremos que, si no pulsamos el botón, el led se
encuentra apagado, y si lo pulsamos, veremos cómo se enciende. En
realidad, esta no sería la mejor solución, puesto que, si probamos a
añadir un pequeño delay al final del programa, veremos cómo se
enciende muy débilmente el led, y si aumentamos ese tiempo, acaba
por no encenderse.
Imagen 119.
110
Imagen 120.
Imagen 121.
111
else
If(condición)
{
//instrucciones que se ejecutan
}
else
{
//instrucciones que se ejecutan si no se cumple el if
}
Imagen 122.
112
Imagen 123.
Aun así, hay que recalcar que estos casos son para entender el
funcionamiento de la instrucción if y else. Obviamente, el programa
con menos líneas que aporta el mismo funcionamiento sería el que ya
hemos visto en el capítulo de primeros pasos.
Imagen 124.
113
Ejercicios propuestos:
114
14 Conectar un led y un botón. En caso de que se pulse el
botón, el led debe parpadear cada 2 segundos; si no está
pulsado, debe permanecer apagado.
115
15 Conectar un botón y dos leds (A y B): el led A tiene que
encenderse mientras el botón está pulsado y apagarse
cuando no está pulsado; el led B funciona a la inversa
que el led A.
116
16 Conectar un led, un pulsador y un potenciómetro.
Regular el led siempre y cuando el botón se encuentre
pulsado; de lo contrario, no regular el led.
117
if else if
If(condición)
{
//instrucciones que se ejecutan
}
else
{
//instrucciones que se ejecutan si no se cumple el if
}
118
If(condición1)
{
//instrucciones que se ejecutan si se cumple la condición1
}else if(condición2)
{
//instrucciones que se ejecutan si se cumple la
condición2 y no la 1
}else if(condición3)
{
//instrucciones que se ejecutan si se cumple
la condición3 y no la 1 ni la 2
}else{
//instrucciones que se ejecutan si se no
se cumplen ninguna de las 3 condiciones
}
Imagen 126.
119
Imagen 127.
Ejercicios propuestos:
120
16 Conectar dos botones (A y B) y un led.
121
17 Conectar dos botones (A y B), un led y un
potenciómetro.
122
Operadores lógicos
• && o and
• || o or
Imagen 128.
123
El led solo se debe encender si los dos botones están pulsados. Si al
menos uno de ellos no lo está, el led tiene que apagarse. Si no
trabajamos con los operadores lógicos, el programa y el diagrama de
flujo sería el siguiente.
Imagen 129.
Imagen 130.
124
Si no utilizamos operadores lógicos, un programa tan sencillo como
encender un led, al haber dos botones pulsados, se complica
bastante. Vamos a comparar la solución anterior con la siguiente, que
usa operadores lógicos.
Imagen 131.
Imagen 132.
125
Imágenes 133.
Imagen 134.
126
Imagen 135.
Al igual que ocurría sin el operador and, para realizar una simple
tarea, el programa se puede complicar. Por consiguiente, vamos a
incluir el nuevo operador lógico.
Imagen 136.
127
Imagen 137.
Imagen 138.
128
No obstante, otra solución sería invertir cada condición del if con el
operador !.
Imagen 139.
Operadores de comparación
• == Igualdad
• != Diferencia
129
• < Menor que
Imagen 140.
Imagen 141.
130
Ilustración 142.
Imagen 143.
131
Imagen 144.
Imagen 145.
132
Imagen 146.
Ejercicios propuestos:
133
19 Conectar un botón, un led y un potenciómetro. Si el valor
de la salida del potenciómetro es superior a 2,5 V y el
botón está pulsado, el led debe de encenderse.
134
20 Conectar led, botón y potenciómetro. Regular el led si el
botón está pulsado y la señal del potenciómetro es
superior a 2,5 V. El valor de regulación queda definido
entre 2,5 y 5 V, siendo equivalentes a 0 y 1023,
respectivamente.
135
Operadores compuestos y aritméticos
Aritméticos:
+ Suma
- Resta
* Multiplicación
/ División
% Módulo de una división
Compuestos:
x++; equivalente a x = x + 1;
x--; equivalente a x = x - 1;
x+=3; equivalente a x = x + 3;
x*=3; equivalente a x = x*3;
x/=3; equivalente a x = x/3;
switch
switch(expresión)
{
//La expresión puede ser una variable o una función.
case valor1:
//Si la expresión es igual a este valor, ejecuta las instrucciones
hasta que encuentre
break; //no se evalúan más valores, se sale del bucle.
case valor2:
//Si la expresión es igual a este valor, ejecuta las instrucciones
hasta que encuentre
break; //no se evalúan más valores se sale del bucle.
default;
//si la expresión no es igual a ningún valor, se ejecutan estas
instrucciones y se sale del bucle.
}
136
Imagen 147.
Imagen 148.
137
Imagen 149.
Imagen 150.
138
Con esta última estructura se dan por finalizadas las estructuras de
control de flujo no repetitivas y también este libro. En el siguiente
libro (Arduino. Entendiendo el mundo. Tomo II) trabajaremos con las
estructuras de control de flujo repetitivas, comunicación serie,
funciones e interrupciones.
Web grafía
http://www.rae.es/
https://www.arduino.cc/
139