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:

LEDPin 8Pin 9Pin 10Pin 11
1ALTOBAJOENTRADAENTRADA
2BAJOALTOENTRADAENTRADA
3ENTRADAALTOBAJOENTRADA
4 4ENTRADABAJOALTOENTRADA
5 5ENTRADAENTRADAALTOBAJO
6 6ENTRADAENTRADABAJOALTO
7 7ALTOENTRADABAJOENTRADA
8BAJOENTRADAALTOENTRADA
9 9ENTRADAALTOENTRADABAJO
10ENTRADABAJOENTRADAALTO
11ALTOENTRADAENTRADABAJO
12BAJOENTRADAENTRADAALTO

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.

https://circuitdigest.com/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *