El shield multifunción cuenta con cuatro diodos LED, D1, D2, D3 y D4, que están conectados a los pines 13, 12, 11 y 10 de Arduino. Para controlarlos es necesario programar dichos pines como salidas con la instrucción pinMode y, posteriormente, encenderlos o apagarlos con la instrucción digitalWrite, suministrando un voltaje bajo (LOW del orden de 0 voltios) o alto (HIGH unos 5v).
Nuestro primer programa sirve para encender el LED D1. En él vamos a utilizar las instrucciones comentadas anteriormente.
/*
* encendidoLedD1
* Este programa enciende el Led D1, conectado al pin13.
* Por la manera en la que están conectados en el shield, los
* diodos Led se encienden con un nivel de voltaje bajo LOW
* y se apagan con un voltaje alto HIGH.
*/
void setup() {
pinMode(13, OUTPUT); //programamos pin 13 como salida
digitalWrite(13, LOW); //ponemos un voltaje bajo en pin 13
}
void loop() {
}
Ahora vamos a hacer que el LED D1 parpadee a intervalos de 1 segundo. Usaremos la instrucción delay para detener el programa durante el tiempo que deseemos, expresado en milisegundos (1 seg = 1000 mseg).
/*
* parpadeoD1
* Este programa hace parpadear el Led D1, pin 13,
* a intervalos de 1 segundo.
* El tiempo hay que expresarlo en milisegundos
* 1 seg = 1000 mseg.
*/
void setup() {
pinMode(13, OUTPUT); //programamos pin 13 como salida
}
void loop() {
digitalWrite(13, LOW); //encendemos Led D1
delay(1000); //esperamos 1 segundo
digitalWrite(13, HIGH); //apagamos Led D1
delay(1000); //esperamos 1 segundo
}
En el siguiente programa vamos a ir encendiendo los LED de uno en uno a intervalos de 1 segundo. Después se apagan todos durante 2 segundos y vuelve a iniciarse el ciclo.
/*
* encendidoProgresivoLED
* Los LED se van encendiendo de uno en uno a intervalos
* de un segundo. Después se apagan durante dos segundos
* y vuelve a iniciarse el ciclo.
*/
void setup() {
pinMode(13, OUTPUT); //todos los pines salidas
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
digitalWrite(13, HIGH); //apagamos todos los LED
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
}
void loop() {
digitalWrite(13, LOW); //encendemos D1
delay(1000);
digitalWrite(12, LOW); //encendemos D2
delay(1000);
digitalWrite(11, LOW); //encendemos D3
delay(1000);
digitalWrite(10, LOW); //encendemos D4
delay(1000);
digitalWrite(13, HIGH); //apagamos todos los LED
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
delay(2000);
}
Ejercicios propuestos:
1.- Hacer un programa que provoque el parpadeo alternativo de los LEDs 1-2 y los LEDs 3-4. Es decir, se encienden los LEDs 1 y 2 mientras que los LEDs 3 y 4 permanecen apagados durante medio segundo, posteriormente, se apagan los LEDs 1 y 2 y se encienden los LEDs 3 y 4 durante medio segundo. El ciclo se repite permanentemente.2.- Ahora tenemos que conseguir un movimiento rápido de sube-baja con un único LED encendido.3.- Programar un semáforo para coches. El LED D1 sería el rojo, el D2 el ambar y el D3 el verde. Posteriormente, se podría ampliar el programa usando el LED D4 para los peatones, encendido no se puede pasar y apagado si, incluso se puede hacer parpadear para avisar que el tiempo de paso se agota antes de ponerse en rojo.
No hay comentarios:
Publicar un comentario