Cubo de ledes 2x2x2
Cubo de LEDs 2x2x2
El objetivo de esta práctica es crear un cubo de LEDs de 2x2x2 utilizando 8 LEDs para simular diferentes efectos de luces con forma de ruleta.
Autor de la práctica |
---|
Miguel Ángel Abellán |
Materiales
- 1 Arduino
- 1 placa Protoboard
- 4 resistencias de 220Ω (rojo-rojo-marrón)
- 2 resistencias de 10KΩ (marrón-negro-naranja)
- 8 leds (4 rojos, 4 azules)
- 2 transistores NPN
- 7 conectores de colores
Esquema eléctrico
Características Transistor BC548 | |
---|---|
Polarizado | NPN |
Características LED | |
---|---|
Polarizado | Sí |
Intensidad de Corriente | 20mA |
Tensión Led (verde, ámbar, rojo) | 2.1V |
Tensión Led blanco | 3.3V |
Cada nivel del cubo de LEDs se conecta a un transistor que activaremos en saturación y corte.
Programación en mBlock
Para programar los efectos de ciclo y parpadeo con mBlock vamos a necesitar crear 2 funciones a las cuales se le pasa por parámetro las diferentes opciones de activación de los niveles del cubo de LEDs. En la función ciclo se establece en primer lugar el nivel del cubo y a continuación se encienden y apagan los diferentes LEDs de dichos niveles. Por otro lado, en la función parpadeo se encienden y apagan todos los LEDs del nivel activado.
Programación en Arduino
El primer paso será inicializar los pines a utilizar en nuestra placa de Arduino. En nuestro caso utilizamos los pines digitales 13 y 12 para activar o desactivar los niveles del cubo de LEDs; el 13 será utilizado para el primer nivel de color rojo y el 12 para el segundo nivel de color azul. Por otro lado, los pines 1, 2, 3 y 4 se utilizarán para los LEDs en sentido de las agujas del reloj.
A continuación programaremos el bucle principal de la programación encargado de establecer los valores las funciones que veremos a continuación, para realizar diferentes formas o figuras. En este caso se han creado las funciones ciclo() y parpadeo(). Observa como se le pasa por parámetro 2 valores, correspondientes al nivel del cubo de LEDs, es decir, la primera llamada a la función ciclo(1, 0), indica que solamente encenderá los LEDs de la posición activada con el valor lógico 1, los LEDs rojos en este caso.
/**
* Cubo de LEDs 2x2x2
*/
void setup() {
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
ciclo(1, 0);
ciclo(0, 1);
ciclo(1, 1);
parpadeo(1, 0);
parpadeo(0, 1);
parpadeo(1, 1);
}
void ciclo(int rojo, int azul){
digitalWrite(13, rojo);
digitalWrite(12, azul);
for(int i=1; i<=4; i++){
digitalWrite(i, HIGH);
delay(50);
digitalWrite(i, LOW);
delay(50);
}
}
void parpadeo(int rojo, int azul){
digitalWrite(13, rojo);
digitalWrite(12, azul);
for(int j=0; j<=4; j++){
for(int i=1; i<=4; i++){
digitalWrite(i, HIGH);
}
delay(50);
for(int i=1; i<=4; i++){
digitalWrite(i, LOW);
}
delay(50);
}
}
Obra publicada con Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0