Arduino 3 PDF
Arduino 3 PDF
Tema: Arduino
Prof. Verena Mercado Polo
M.Sc. Ing. Electricista
Instrucción condicional IF en arduino
La instrucción if en arduino, seguida de una condición, hará posible que
nuestro programa coja distintos caminos dependiendo de si se cumplen
o no.
La estructura condicional tiene la siguiente sintaxis:
if (condición) {……..}
Comenzamos con la instrucción if.
Seguido, y entre paréntesis, escribiremos una condición. Si esta
condición se cumple, será validada y por tanto se ejecutará el código
que pongamos entre las llaves {…………}. En caso contrario, el
programa continuará en la siguiente instrucción sin ejecutar lo
encerrado entre llaves.
Para escribir la condición a cumplir usaremos los operadores de
comparación dentro de los paréntesis, por ejemplo:
1 if (x>5) { digitalWrite(pinLed,HIGH); }
Condiciones y uso de operadores de
comparación
La condición es una expresión lógica que pondremos entre paréntesis
después del comando if
De que se cumpla o no dependerá que se ejecuten las instrucciones
que hayamos escrito entre las llaves.
Para hacer esta condición, disponemos de los operadores.
x == 7 // si x es igual a 7
x != 7 // si x es distinto de 7
x<7 // si x es menor que 7
x>7 // si x es mayor que 7
x >= 7 // si x es mayor o igual a 7
x <= 7 // si x es menor o igual a 7
x < 3 || x >7 // si x es menor que 3 O mayor que 7
x <== 3 && r ==7 // si x es menor o igual a 3 Y r es igual a 7
Análisis del uso de operadores de
comparación
Se usa el operador == (dos iguales) para comparar la variable
con el número. Si pusiésemos solo uno, r = 7, estaríamos asignando el
valor 7 a la variable r por lo que ahora pasaría a valer 7 (es una
asignación).
|| OR, se usa si cuando alguna de las dos condiciones se cumple (o las
2 a la vez),
&& AND, se usa solo cuando las dos condiciones se cumplen a la vez,
no en todas las combinaciones restantes
Existen muchos más operadores lógicos. Un caso particular de la
condición es que solamente pongamos una variable entre los paréntesis
por ejemplo:
if (x) { .... ...... }
se ejecutará cuando x sea igual a 1
Se trata de encender y apagar 4 leds secuencialmente. Los leds deben estar
Ejemplo 2 conectados a los pines 5, 6, 7 y 8. Se deben encender y posteriormente
apagar los leds desde el pin 5 al 8, con un tiempo de duración de encendido
y apagado de 300 milisegundos. El encendido de los leds es mediantea a) un
pulsador b) un pulsador o un switch c) un pulsador y un switch
int tiempo=300; int tiempo=300;
int n; int n;
int pulsador=3; int pulsador=3;
int switc=9;
void setup() {
pinMode (pulsador,INPUT); void setup() {
for (n=5;n<=8;n++) { pinMode (pulsador,INPUT);
pinMode (n, OUTPUT); pinMode (switc,INPUT);
} for (n=5;n<9;n++) {
} pinMode (n, OUTPUT);
void loop() { }
if (digitalRead(pulsador)==HIGH) { }
for (n=5;n<9;n++) { void loop() {
digitalWrite (n, HIGH); if (digitalRead(pulsador)==HIGH||digitalRead(switc)==HIGH) {
delay (tiempo); for (n=5;n<=9;n++) {
digitalWrite (n, LOW); digitalWrite (n, HIGH);
delay (tiempo); delay (tiempo);
} digitalWrite (n, LOW);
} delay (tiempo);
} }
}
Estructura de control if – else
Una variante a la estructura de control if en arduino, es cuando usamos
else. 1 if (condición) {.....
2 instrucciones si se cumple
3 }
4 else {......
5 instrucciones si no se cumple
6 }
void setup() {
pinMode (switc,INPUT);
for (n=5;n<=8;n++) {
pinMode (n, OUTPUT);
}}
void loop() {
if (digitalRead(switc)==HIGH) {
for (n=5;n<=8;n++) {
digitalWrite (n, HIGH);
}}
else {
for (n=5;n<=8;n++) {
digitalWrite (n, LOW);
}}}
Estructuras de control repetitivas o
iterativas en Arduino
Arduino nos da la posibilidad al igual que muchos otros lenguajes de
programación utilizar varias opciones para trabajar con bucles como
son el while, do while y el for
Trabajar con bucles implica que realizaremos una misma tarea varias
veces.
While
Esta estructura de control repetitiva, agrupa un conjunto de instrucciones
que solo es ejecutada en caso que se cumpla una condición que es evaluada
en cada iteración.
Es necesario declarar dentro de las instrucciones una variable que cambia
constantemente y es evaluada para seguir o finalizar el bucle.
Estructuras de control repetitivas o
iterativas en Arduino
Ejemplo While
Mientras el pulsador esté pulsado el LED parpadee, y de lo contrario esté
apagado.
Estructuras de control repetitivas o
iterativas en Arduino
Comparación del if y el While. ¿Diferencias?
Es el identificador por el
El tipo de valor que cual se puede llamar a la
arroja la función función Parámetros o argumentos
de la función
result = x * y;
return result;
}
¿Qué es una función? y ¿cómo
utilizarla?
Partes de una función.
Tipo de dato: int, doublé, void. (Tipo void, si no regresa ningún valor).
Nombre de la función: El nombre no puede llevar espacios y no puedes
utilizar palabras reservadas del lenguaje de programación.
Parámetros: es una variable que envía la función loop, se utiliza para
realizar algún cálculo o tarea. Se dejan vacíos si no requiere ningún
parámetro.
Código: El código que escribiremos debe estar entre las llaves y cada línea
se cierra con punto y coma.
Retorno: “return” es el valor que regresa la función, debe ser del mismo
tipo del parámetro que se escribió.
Para llamar a una función, simplemente:
nombreFunción(parámetros);
¿Qué es una función? y ¿cómo
utilizarla?
Podemos declarar la función de dos maneras diferentes:
1. La primera forma es escribir la parte de la función llamada prototipo de función
encima de la función de bucle, que consiste en:
Función tipo de retorno
Nombre de la función
Tipo de argumento de la función, no es necesario escribir el nombre del
argumento
int sum_func (int x, int y){
int z = 0;
z = x+y;
return z; // retorna los valores
}
void setup () {
}
void loop () {
int result = 0;
result = sum_func (5,6); // se llama la función
}
¿Qué es una función? y ¿cómo
utilizarla?
2. La segunda parte, que se llama definición o declaración de función, debe
declararse debajo de la función de bucle, que consiste en:
Función tipo de retorno
Nombre de la función
Tipo de argumento de la función, aquí debe añadir el nombre del argumento
El cuerpo de la función (instrucciones dentro de la función que se ejecuta
cuando se llama la función)
void setup () {
}
void loop () {
int result = 0;
result = sum_func (5,6); // Se llama la función
}
int sum_func (int x, int y){
int z = 0;
z = x+y ;
return z; // retorna los valores
}
¿Qué es una función? y ¿cómo
utilizarla?
Llamar la función.
Para llamar la función en el caso de funciones que regresan un valor. Está
compuesta por una variable que va almacenar el valor de retorno.
int a = 10;
int b = 20;
Serial.println(funcion(a,b));
Serial.println(funcion(10,20));
Se trata de encender y apagar 4 leds secuencialmente. Los leds
Ejemplo 1 deben estar conectados a los pines 5, 6, 7 y 8. Se deben
encender y posteriormente apagar los leds desde el pin 5 al 8,
con un tiempo de duración de encendido y apagado de 300
milisegundos.
int tiempo=300;
int n;
int leds[]={5,6,7,8};
int pulsador=3;
int tiempo=300;
int n=0;
void setup() {
void setup() {
for (n=5;n<9;n++) {
for (n=0;n<4;n++) {
pinMode (n, OUTPUT);
pinMode (leds[n], OUTPUT);
pinMode (pulsador,INPUT);
}}
}
void secuencia() {
}
for (n=0;n<4;n++) {
void loop() {
digitalWrite (leds[n], HIGH);
if (digitalRead(pulsador)==HIGH) {
delay (tiempo);
for (n=5;n<9;n++) {
digitalWrite (leds[n], LOW);
digitalWrite (n, HIGH);
delay (tiempo);
delay (tiempo);
}}
digitalWrite (n, LOW);
void loop() {
delay (tiempo);
secuencia();
}
}
}
}
Ejemplo 2 Se trata de encender y apagar 4 leds secuencialmente al accionar un
pulsador. El pulsador debe estar conectado al pin 4, y los leds a los pines
5, 6, 7 y 8. Se deben encender y posteriormente apagar los leds desde el
pin 5 al 8, con un tiempo de duración de encendido y apagado de 200 ms.
int cadenaleds[]={5,6,7,8}; int leds[]={5,6,7,8};
int tiempo=200;
int pulsador=4; int pulsador=4;
int tiempo=200; int n=0;
int n=0; int valorpulsador=0;
void setup(){
void setup() { for(n=0;n<4;n++){
for(n=0;n<4;n++) { pinMode(leds[n],OUTPUT);
pinMode (cadenaleds[n],OUTPUT); }
pinMode(pulsador,INPUT);
} Serial.begin(9600);
pinMode (pulsador,INPUT); }
} void monitoriza(){
Serial.print("El valor del pulsador es ...");
void flash() { Serial.println(valorpulsador);
for (n=0;n<4;n++) { delay(1000);
digitalWrite (cadenaleds[n],HIGH); }
void secuencia(){
delay (tiempo); for(n=0;n<4;n++){
digitalWrite (cadenaleds[n],LOW); digitalWrite(leds[n],HIGH);
delay (tiempo); delay(tiempo);
digitalWrite(leds[n],LOW);
}} delay(tiempo);
void loop() { }}
if (digitalRead(pulsador)==HIGH) { void loop(){
valorpulsador=digitalRead(pulsador);
flash (); monitoriza();
}} if (valorpulsador==1){
secuencia();
}}
Ejercicio: Se trata del encendido de int leds[]={4,5,6,7};
int tiempo=500;
4 leds conectados en los pines 4, 5, 6 int n=0;
y 7, mediante dos pulsadores (2 y 3) int valorpulsador=0;
y un interruptor (8). Si se activa el void setup() {
pinMode(2,INPUT);
pulsador (2) o el interruptor (8) se pinMode(3,INPUT);
encienden los leds desde el 4 al 7. pinMode(8,INPUT);
Pero si se acciona el pulsador (3), for (n=0;n<4;n++) {
pinMode (leds[n], OUTPUT);
parpadea el Led (4), si se deja de }}
accionar el pulsador (3) continuará void secuencia() {
el encendido de los leds del 4 al 7. valorpulsador=digitalRead(2);
if (valorpulsador==1||digitalRead(8)==0){
for (n=0;n<4;n++) {
digitalWrite (leds[n], HIGH);
delay (tiempo);
digitalWrite (leds[n], LOW);
delay (tiempo);
}}}
void loop() {
secuencia();
while( digitalRead(3) == 1 ) {
digitalWrite(4,HIGH);
delay(1000);
digitalWrite(4,LOW);
delay(1000);
}}
Ejercicio 1