Ciao, sto usando il mio arduino come voltmetro, l'ho attaccato a una batteria, e vorrei che un led rgb andasse dal verde (ovvero quando è carica), al rosso (quando è scarica), passando in dissolvenza dall'arancione.. come posso fare?
Il voltmetro dovrebbe darti un valore 0-1023 visto che lo colleghi ad un pin digitale. Non credo sia proprio 0-1023 ma dovrebbe essere all'incirca quello l'intervallo.
Per il led rgb dovrai usare dei pin PWM, uno per ogni colore, tralasciando il blu, quindi 2 pin PWM.
I pin PWM vanno da 0 (spento) a 255 (massima luminosità di quel colore)
In base al valore di analog/voltmetro dovrai calcolare il valore del rosso e il valore del verde.
Batteria scarica, circa 0 da analog, quindi rosso=255 e verde=0
Batteria carica, circa 1023 da analog, quindi rosso=0 e verde=255
Batteria a metà carica, circa 512 da analog, quindi rosso=128 e verde=128
puoi usare la funzione "map" per convertire un range in un altro range.
in sostanza:
int VisualizzaTensione = map(VariabileLettaDalPinAnalogicoDoveCollegoIlPartitoreDiTensione, 0, 1023, 0, 255);
dove 0-1023 è la scala che ho in ingresso e 0,255 la scala che voglio in uscita.
Se parlassimo di volt da visualizzare, dopo il partitore, potrei dire che in ingresso ho 0,5V ma voglio visualizzato sul display 0-12V che sarebbero i veri volt che sto misurando...
quindi:
int VisualizzaTensione = map(VariabileLettaDalPinAnalogicoDoveCollegoIlPartitoreDiTensione, 0, 5, 0, 12);
lcd.print(VisualizzaTensione)
che appunto mi visualizzera un valore proporzionale 0-12V pur leggendo 0-5V
altro esempio:
Devo ruotare un servo che fa solo 0-270° ma ho un valore analogico 0-1024
int PosizioneAngolare = map(AnalogRead, 0, 1024, 0, 270);
spero ti sia utile.
occhio ai famosi +1 della partenza 0
0-270 sono 271, come 0-1024 sono 1025 e non va molto bene...