salve a tutti, ho creato una sorta d'algoritmo per convertire una lettura analogica in 3 valori, che tramite dei led rgb mi diano un colore.
al momento ho buttato giu solo il colore rosso, per essere certo che funzionasse, naturalmente non funziona.
girando uil potenziometro ottengo dei valori che dovrebbero andare da 0 a 100, ma oscillano da -566 a +666.
con il monitor seriale ho controllato la lettura analogica e le varie variabili, sono tutte normali, finche non entrano nel mio algoritmo.
ma visto che il codice ha sempre ragione, e quindi probabilmente sarò io a ad aver fatto qualche errore, eccolo:
const int Rpin = 9; // pin led RGB
const int Gpin = 10;
const int Bpin = 11;
int Analog = 0;
int h = 0;
int R = 0; //verra salvato il valore ottenuto dallo switch case prima di essere moltiplicato per pwm
int G = 0;
int B = 0;
int pwmR = 0; // valore da applicare per il pwm
int pwmG = 0;
int pwmB = 0;
void setup() {
pinMode (Rpin, OUTPUT); //pin led RGB
pinMode (Gpin, OUTPUT);
pinMode (Bpin, OUTPUT);
Serial.begin(9600);
}
void loop() {
Analog = (analogRead(0)); //lettura potenziometro
h = (map(Analog,0,1023,0,360)); // nel successivo switch case userò valori compresi tra 0 e 360
if (h<60) R=100;
if (h>60 && h<120) R=(100 - ((h - 60)*1,666));
if (h>120 && h<240) R=0;
if (h>240 && h<300) R=((h - 240)*1,666);
if (h>300) R=100;
Serial.println(R);
pwmR = ((R)*2,55); //numero applicabile per pwm
analogWrite (Rpin, R);
}
per chi non avesse mai trafficato con i led RGB ecco a voi lo "schema" su cui mi sono basato:
