Paso 5:3 3 ejemplo de pantalla LED
Usted puede ver la foto con los LEDs muestran esto se hizo usando el código siguiente. El código también se adjunta un archivo .ino. El LED iluminado son establecidas por el 0 x 02, 0 x 05, 0 x 02. la representación decimal de los valores hexadecimales es 00000010,00000101,00000010. Se puede ver cómo esos valores coinciden con la pantalla.
Si quieres probar esto por ti mismo el código es copia disponible a continuación y sólo el circuito del paso 3!
/ * Transistor multiplexación de LEDs 3 x 3
Por: Marty Peltz
Fecha: 19/07/2013
Propósito: Control de 9 LEDs en un patrón de 3 x 3 usando multiplexación.
Utilizado en Instructiable de Martin Peltz
*/
/ *** variables *** /
char col1_cathode = 0;
char col2_cathode = 1;
char col3_cathode = 2;
char row1_anode = 3;
char row2_anode = 4;
char row3_anode = 5;
void setup()
{
Sets pasadores para salidas
pinMode (col1_cathode, salida);
pinMode (col2_cathode, salida);
pinMode (col3_cathode, salida);
pinMode (row1_anode, salida);
pinMode (row2_anode, salida);
pinMode (row3_anode, salida);
Apague todos los pines GPIO
digitalWrite (col1_cathode, bajo);
digitalWrite (col2_cathode, bajo);
digitalWrite (col3_cathode, bajo);
digitalWrite (row1_anode, bajo);
digitalWrite (row2_anode, bajo);
digitalWrite (row3_anode, bajo);
}
void loop()
{
display_LED(0x02,0x05,0x02);
}
/ *** pantalla LED función *** /
/ * Propósito: llamar a esta función con el parámetro hexdecimal desea mostrar
* Nota: Esta función controla el cátodo, en mi caso controlar las columnas
*/
void display_LED (char c1, char c2, c3 del char)
{
row_anode(C1); Llamar al row_anode con el primer valor de hexdecimal
digitalWrite (col1_cathode, HIGH); Mostrar la primera columna
Delay(1); Esperar un breve retraso por lo que el LED está encendido para 1ms
digitalWrite (col1_cathode, bajo); desactivar la primera columna antes de continuar
row_anode(C2); Llamar al row_anode con el segundo valor de hexdecimal
digitalWrite (col2_cathode, HIGH); Mostrar la segunda columna
Delay(1); Esperar un breve retraso por lo que el LED está encendido para 1ms
digitalWrite (col2_cathode, bajo); desactivar la segunda columna antes de continuar
row_anode(C3); Llamar al row_anode con el segundo valor de hexdecimal
digitalWrite (col3_cathode, HIGH); Exhibición de la tercera columna
Delay(1); Esperar un breve retraso por lo que el LED está encendido para 1ms
digitalWrite (col3_cathode, bajo); desactivar la tercera columna antes de continuar
(Nota intente cambiar el 1s 1ms a 100ms - usted verá una diferencia)
}
/ *** Función de cátodo (columnas) *** /
/ * Objetivo: tomar el valor del parámetro y encender los pernos relacionados con
* Nota: Debido al uso de Arduinos digitalWrite debe ajustar los pernos,
* sin embargo, si utiliza DDRx/PORTx sólo puede aplicar un valor de hexdecimal para configurar los pines en un puerto.
*/
void row_anode(char LEDs_on)
{
if(LEDs_on == 0x00)
{
digitalWrite (row1_anode, bajo);
digitalWrite (row2_anode, bajo);
digitalWrite (row3_anode, bajo);
}
otro if(LEDs_on == 0x01)
{
digitalWrite (row1_anode, HIGH);
digitalWrite (row2_anode, bajo);
digitalWrite (row3_anode, bajo);
}
otro if(LEDs_on == 0x02)
{
digitalWrite (row1_anode, bajo);
digitalWrite (row2_anode, HIGH);
digitalWrite (row3_anode, bajo);
}
otro if(LEDs_on == 0x03)
{
digitalWrite (row1_anode, HIGH);
digitalWrite (row2_anode, HIGH);
digitalWrite (row3_anode, bajo);
}
otro if(LEDs_on == 0x04)
{
digitalWrite (row1_anode, bajo);
digitalWrite (row2_anode, bajo);
digitalWrite (row3_anode, HIGH);
}
otro if(LEDs_on == 0x05)
{
digitalWrite (row1_anode, HIGH);
digitalWrite (row2_anode, bajo);
digitalWrite (row3_anode, HIGH);
}
otro if(LEDs_on == 0x06)
{
digitalWrite (row1_anode, bajo);
digitalWrite (row2_anode, HIGH);
digitalWrite (row3_anode, HIGH);
}
otro if(LEDs_on == 0x07)
{
digitalWrite (row1_anode, HIGH);
digitalWrite (row2_anode, HIGH);
digitalWrite (row3_anode, HIGH);
}
}