/*
*
* Modder: @red9030
* Title: Charlieplexing LED Matrix (6x5)[30 LEDS]
* Date: 20/06/2024
* REF: https://goodarduinocode.com/guides/charlieplexing
*
*/
/*
* NOTAS
* Cálculo de numero de Leds es #Leds = #pins(#pins-1)
*/
/*
*****************************************************
* LIBRERIAS
*****************************************************
*/
/*
*****************************************************
* VARIABLES
*****************************************************
*/
#define SCAN_DELAY 1000
//Aumenta el número de pins respecto a cuan grande sea la matriz
byte LED_PINS[] = { 2, 3, 4, 5, 6, 7 }; //Arduino uno
//byte LED_PINS[] = { 2, 3, 4, 5, 6, 7 };//ESP8266
//byte LED_PINS[] = { 0, 1, 2, 3, 4, 5 };//ESP32
const byte LED_PIN_COUNT = sizeof(LED_PINS);
/*
*****************************************************
* INICIO
*****************************************************
*/
void setup() {
}
/*
*****************************************************
* REPETICIÓN
*****************************************************
*/
/*
void loop() {
for (byte i = 0; i < LED_PIN_COUNT; i++) {
pinMode(LED_PINS[i], OUTPUT);
digitalWrite(LED_PINS[i], LOW);
for (byte j = 0; j < LED_PIN_COUNT; j++) {
if (i != j) {
digitalWrite(LED_PINS[j], HIGH);
pinMode(LED_PINS[j], OUTPUT);
}
}
delay(SCAN_DELAY);
for (byte j = 0; j < LED_PIN_COUNT; j++) {
digitalWrite(LED_PINS[j], LOW);
pinMode(LED_PINS[j], INPUT);
}
}
}*/
//
void loop() {
for (byte i = 0; i <= LED_PIN_COUNT; i++) {
for (byte j = 0; j <= LED_PIN_COUNT; j++) {
if (i != j) {
pinMode(LED_PINS[i], OUTPUT);
pinMode(LED_PINS[j], OUTPUT);
digitalWrite(LED_PINS[i], LOW);
digitalWrite(LED_PINS[j], HIGH);
delay(SCAN_DELAY);
pinMode(LED_PINS[i], INPUT);
pinMode(LED_PINS[j], INPUT);
}
}
}
}//
/*
*****************************************************
* FUNCIONES
*****************************************************
*/