Charlieplexing es una técnica para controlar muchos LED usando unos pocos pines de E / S. Charlieplexing es lo mismo que multiplexación, pero utiliza la lógica de tres estados (entrada alta, baja) para reducir drásticamente el número de pines y ganar eficiencia sobre la multiplexación. La técnica Charlieplexing lleva el nombre de su inventor, Charlie Allen, quien inventó la técnica en 1995. Anteriormente usamos la técnica de multiplexación en Arduino para conectar una pantalla de 7 segmentos de 4 dígitos y una matriz de LED de 8x8.
Charlieplexing le permite controlar N * (N - 1) LED, donde N es el número de pines. Por ejemplo, puede controlar 12 LED usando 4 pines Arduino 4 * (4-1) = 12. Los LED son diodos y, en los diodos, la corriente fluye en una sola dirección. Entonces, en Charlieplexing, conectamos dos LED en paralelo entre sí pero con polaridad opuesta para que solo se encienda un LED a la vez. Cuando se trata de Arduino u otras placas de microcontroladores, nunca tiene suficientes pines de entrada / salida. Si está trabajando en un proyecto en el que necesita interconectar la pantalla LCD, un montón de LED y algunos sensores, entonces ya se ha quedado sin pines. En esa situación, puede charlieplex LED para reducir el número de pines.
En este tutorial, usaremos la técnica Charlieplexing para controlar los 12 LED usando 4 pines Arduino.
Componentes requeridos
- Arduino UNO
- LED (12)
- 4 resistencias (330 ohmios)
- Cables de puente
- Tablero de circuitos
Diagrama de circuito
Básicamente, en este diagrama de circuito, 12 LED están conectados con 4 pines Arduino a través de resistencias. Cada pin de Arduino está conectado con tres LED. Hay seis grupos de LED, y en cada grupo, 2 LED están conectados, y ambos LED están en paralelo entre sí pero con polaridad opuesta, de modo que solo se enciende un LED a la vez. Entonces, de acuerdo con el diagrama del circuito para encender el LED 1, debe haber una señal ALTA en el pin A y una señal BAJA en el pin B, y los pines C y D deben desconectarse. Se seguirá el mismo procedimiento para los demás LED. La tabla completa de configuraciones de pines para cada LED se muestra a continuación:
LED | Pin 8 | Pin 9 | Pin 10 | Pin 11 |
1 | ALTO | BAJO | ENTRADA | ENTRADA |
2 | BAJO | ALTO | ENTRADA | ENTRADA |
3 | ENTRADA | ALTO | BAJO | ENTRADA |
4 | ENTRADA | BAJO | ALTO | ENTRADA |
5 | ENTRADA | ENTRADA | ALTO | BAJO |
6 | ENTRADA | ENTRADA | BAJO | ALTO |
7 | ALTO | ENTRADA | BAJO | ENTRADA |
8 | BAJO | ENTRADA | ALTO | ENTRADA |
9 | ENTRADA | ALTO | ENTRADA | BAJO |
10 | ENTRADA | BAJO | ENTRADA | ALTO |
11 | ALTO | ENTRADA | ENTRADA | BAJO |
12 | BAJO | ENTRADA | ENTRADA | ALTO |
Después de las conexiones, mi hardware se parece a la imagen de abajo. Como puede ver en la imagen, hay seis grupos de LED y en cada grupo hay 2 LED conectados uno frente al otro. El módulo Arduino UNO se alimenta mediante un puerto USB.
Explicación del código
El código completo con un video funcional se da al final de este tutorial, aquí estamos explicando el programa completo para entender el funcionamiento del proyecto.
Al comienzo del código Arduino, defina todos los pines en los que están conectados los LED. Después de eso, defina el número total de LED y el estado del LED.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
Ahora cree una matriz para encender y apagar los LED en una secuencia, puede cambiar la secuencia cambiando el estado y la configuración de los pines. Según esta matriz, el LED1 se encenderá primero, luego el LED2 y así sucesivamente.
int matrix = { // PIN_CONFIG PIN_STATE // ABCDABCD {{SALIDA, SALIDA, ENTRADA, ENTRADA}, {ALTA, BAJA, BAJA, BAJA}}, {{SALIDA, SALIDA, ENTRADA, ENTRADA}, {BAJA, ALTA, BAJA, BAJO}}, {{ENTRADA, SALIDA, SALIDA, ENTRADA}, {BAJO, ALTO, BAJO, BAJO}}, ……………………………. ……………………………..
Ahora, dentro del bucle vacío , el programa ejecutará la matriz LED_COUNT para encender y apagar los LED en la secuencia dada.
bucle vacío () { para (int l = 0; l <LED_Num; l ++) { lightOn (l); retraso (1000 / LED_Num); }
Ahora conecte el Arduino con la computadora portátil y elija la placa y el puerto correctamente y luego haga clic en el botón Cargar. Después de cargar el código, sus LED deberían comenzar a parpadear.
Así es como se puede utilizar la técnica Charlieplexing para controlar muchos LED utilizando menos pines Arduino. Puede utilizar este método para controlar más LED. Por ejemplo, si desea controlar 20 LED, simplemente edite la matriz y agregue las condiciones para los LED restantes.
Encuentre el código completo y el video de trabajo a continuación.