Charlieplexing es una técnica para controlar muchos LED utilizando unos pines de E / S. Charlieplexing es lo mismo que la 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.
Charlieplexing le permite controlar N * (N – 1) LED, donde N es el no de pines. Por ejemplo, puede controlar 12 LED con 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 conectar la pantalla LCD , un montón de LED y algunos sensores, entonces ya no tiene pines. En esa situación, puede charlieplex LED para reducir el número de pines.
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 son paralelos 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 pin C y D deben desconectarse. Se seguirá el mismo procedimiento para los otros LED. La tabla completa de configuraciones de pin 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 4 | ENTRADA | BAJO | ALTO | ENTRADA |
5 5 | ENTRADA | ENTRADA | ALTO | BAJO |
6 6 | ENTRADA | ENTRADA | BAJO | ALTO |
7 7 | ALTO | ENTRADA | BAJO | ENTRADA |
8 | BAJO | ENTRADA | ALTO | ENTRADA |
9 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 a continuación. Como puede ver en la imagen, hay seis grupos de LED y en cada grupo 2 LED están conectados uno frente al otro. El módulo Arduino UNO está alimentado por un puerto USB.
Explicación del código:
Al comienzo del código Arduino, defina todos los pines en los que se conectan 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 del pin. De acuerdo con esta matriz, el LED1 se encenderá primero, luego el LED2 y así sucesivamente.
int matrix [LED_No.] [2] [4] = {
// PIN_CONFIG PIN_STATE
// ABCDABCD
{{OUTPUT, OUTPUT, INPUT, INPUT}, {HIGH, LOW, LOW, LOW}},
{{OUTPUT, OUTPUT, INPUT , INPUT}, {LOW, HIGH, LOW, LOW}},
{{INPUT, OUTPUT, OUTPUT, INPUT}, {LOW, HIGH, LOW, LOW}},
…………………………….
…………………………… ..
Ahora dentro del bucle vacío , el programa ejecutará la matriz LED_COUNT para encender y apagar los LED en la secuencia dada.
void loop () {
for (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 usar la técnica Charlieplexing para controlar muchos LED usando menos pines Arduino . Puede usar este método para controlar más cantidad de LED. Por ejemplo, si desea controlar 20 LED, simplemente edite la matriz y agregue las condiciones para los LED restantes.
-
Arduino ATmega 2560 R3¡Oferta!
$20.50$19.00 -
Arduino Uno Wifi¡Oferta!
$15.00$13.00 -
Arduino Mini USB Nano V3.0 CH340 Chip Board 5V 16M + Cable¡Oferta!
$9.00$8.50