mercoledì 15 aprile 2020

Arduino N° 45 - Luci psichedeliche a LED V2.0





< Segue da Arduino N°  44             

 Achille De Santis

Arduino N° 46


            






Con questo sketch è possibile pilotare una striscia LED RGB alimentata a 12 volt.
Potete provare il funzionamento del programma predisponendo un solo LED RGB a catodo comune, opportunamente polarizzato, su una piccola breadboard. Un potenziometro in ingresso al segnale di bassa frequenza serve a regolare la sensibilità del dispositivo e ad adattarlo al livello audio.

Poiché molte strisce LED operano a logica negata, serve uno stadio separatore a transistori in configurazione invertente, a tre canali. Il positivo di alimentazione a 12 volt sarà collegato alla linea di ingresso, mentre le tre linee RGB andranno collegate alle uscite (open collector) del driver a BJT.




/* ----------------------------- Inizio Programma ---------------------------------------
 * prof. Achille De Santis  19-01-2020
 * Variazione continua del colore di un LED RGB a catodo comune
 * o di una striscia LED ad anodo comune con driver a BJT
 * Luci psichedeliche a LED V2.0
 * le uscite utilizzate DEVONO essere PWM.
 * -------------------------------------------------------------------------------------------
*/

// ------------ Ingresso analogico ---------------
#define BF   A2
// -----------------------------------------------
// -------- uscite PWM per il LED RGB -----------------
#define ROSSO   10
#define VERDE   11
#define BLU     9
// --------------------------------------------------------------

const int T1=200;                       // tempo di transizione colore
int segnale=0,     segnale2=0;          // inizializza le variabili
int soglia1=20,    soglia2=30;          // ------ valori di soglia per i colori ---------
// -------------------------------------------------------------------------------------------

void coefficienti(int a,int b,int c)  { analogWrite(ROSSO,a); analogWrite(VERDE,b); analogWrite(BLU,c); }

void test()             // routine di prova dei colori.
  {
    coefficienti(255,0,0); delay(500);   coefficienti(0,255,0); delay(500);
    coefficienti(0,0,255); delay(500);   coefficienti(0,0,0); delay(1000);
  }

void intestazione()
  { Serial.println(" ----------------------------------------------\n - Autore: Tecnatron - ing. Achille De Santis -");
    Serial.println(" - Variazione continua della luminosità       -\n - per LED RGB a catodo comune CK             -");
    Serial.println(" - ingresso analogico: A2                     -\n - uscite PWM usate:  D11, D10, D9   V2.0     -");
    Serial.println(" ----------------------------------------------");
  }

void setup()
  {
    Serial.begin(9600);                                         // velocità seriale di comunicazione
    pinMode(BF, INPUT),                                   // imposta il pin come input per il segnale audio
    pinMode(VERDE, OUTPUT), (BLU, OUTPUT), (ROSSO, OUTPUT);   // imposta i pin di uscita
    digitalWrite (VERDE, LOW), (BLU, LOW), (ROSSO, LOW);      // inizialmente, led RGB spento;
    intestazione();    test();
  }

void loop()
  {
    segnale=analogRead(A2);
    segnale2=map(segnale,0,1023,0,255); //
    if (segnale2<soglia1)                      { analogWrite(ROSSO, segnale2); }
    if (segnale2>=soglia1 & segnale2<soglia2)  { analogWrite(VERDE, segnale2); }
    if  (segnale2>=soglia2)                    { analogWrite(BLU, segnale2); }
    // delay(100);
    coefficienti(0,0,0);
 }
// ----------------------------- Fine Programma ---------------------------------------



Simulazione:


Argomenti correlati:


Arduino N° 46

Nessun commento:

Posta un commento