domingo, 27 de febrero de 2022

Los diodos LED (IDE Arduino)

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