mercoledì 17 febbraio 2021

Arduino N° 82 - Charlieplexing 12 LED




< Arduino N° 81

 Achille De Santis

> Arduino N°  83



Charlieplexing! 

Ovvero, multiplazione di 12 LED utilizzando soltanto 4 uscite. 
  















/* ---------- Inizio programma ------------------------------------------
 *  Charlieplexing 12 LEDs
 *  Comando di 12 LED con 4 linee di uscita.
 *  Achille De Santis V2.1 del 15-02-2018
--------------------------------------------------------------
Row 1 (R1): Arduino Pin 13
Row 2 (R2): Arduino Pin 12
Row 3 (R3): Arduino Pin 11
Row 4 (R4): Arduino Pin 10
-------------------------------------------------------------
variable    pinMode      state
 L           OUTPUT       LOW 
 H           OUTPUT       HIGH
 Z           INPUT        LOW
 Z           INPUT        LOW
-----------------------------------------------------------
      R1(Pin 13)     R2(Pin 12)     R3(Pin 11)  R4(Pin 10)
L1      L                H               Z            Z
L2      H                L               Z            Z
L3      Z                L               H            Z
L4      Z                H               L            Z
L5      L                Z               H            Z
L6      H                Z               L            Z
L7      L                Z               Z            H
L8      H                Z               Z            L
L9      Z                L               Z            H
L10     Z                H               Z            L
L11     Z                Z               L            H
L12     Z                Z               H            L
----------------------------------------------------------
LED    Cathode     Anode       LED      Cathode      Anode
1       R2          R1          2         R1          R2
3       R3          R2          4         R2          R3         
5       R3          R1          6         R1          R3 
7       R1          R4          8         R4          R1 
9       R2          R4          10        R4          R2 
11      R3          R4          12        R4          R3 
------------------------------------------------------------
*/

#define R1  13     // Riga 1
#define R2  12     // Riga 2    
#define R3  11     // Riga 3
#define R4  10     // Riga 4


void intestazione()
{ Serial.println(" ---------------------------------------------- ");
  Serial.println(" - Tecnatron - ing. Achille De Santis         - ");
  Serial.println(" - tecnatron@gmail.com                        - "); 
  Serial.println(" - Charlieplexing 12 LEDs                     - "); 
  Serial.println(" - D13  R1  13      Riga 1                    - "); 
  Serial.println(" - D12  R2  12      Riga 2                    - "); 
  Serial.println(" - D11  R3  11      Riga 3                    - "); 
  Serial.println(" - D10  R4  10      Riga 4                    - "); 
  Serial.println(" ---------------------------------------------- ");
}

void setup() 
  {              
          // il set-up è variabile! 
          // il setup fisso può essere questo
    Serial.begin(9600);      // stabilisco la velocità di comunicazione
    intestazione();          // intestazione, inviata alla seriale
  }

void charlie(int L1, int L2, int L3, int L4)         // Routine per la gestione dei Led
{             // Basso,  Alto,  Z,  Z)
  // accende il LED generico
  pinMode(L1, OUTPUT);   digitalWrite(L1, LOW);  // Riga 1
  pinMode(L2, OUTPUT);   digitalWrite(L2, HIGH); // Riga 2
  
  pinMode(L3, INPUT);    digitalWrite(L3, LOW);  // Riga 3
  pinMode(L4, INPUT);    digitalWrite(L4, LOW);  // Riga 4
  
  delay(500);
}

void loop()
{
  charlie(R1, R2, R3, R4);    //turn on LED1
  charlie(R2, R1, R3, R4);    //turn on LED2
  
  charlie(R2, R3, R1, R4);    //turn on LED3
  charlie(R3, R2, R1, R4);    //turn on LED4
  
  charlie(R1, R3, R2, R4);    //turn on LED5
  charlie(R3, R1, R2, R4);    //turn on LED6
  
  charlie(R1, R4, R2, R3);    //turn on LED7
  charlie(R4, R1, R2, R3);    //turn on LED8
  
  charlie(R2, R4, R1, R3);    //turn on LED9
  charlie(R4, R2, R1, R3);    //turn on LED10
  
  charlie(R3, R4, R1, R2);    //turn on LED11
  charlie(R4, R3, R1, R2);    //turn on LED12  
}
// ---------- Fine programma ----------------------------------------------




Lo sketch e la simulazione del circuito sono disponibili per l'analisi e il download.


Simulazione:

Charlieplexing con 6 LED


Argomenti correlati:  



tecnatronATgmail.com

> Arduino N°  83

Nessun commento:

Posta un commento