< Segue da Arduino N° 44 |
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