Salve, in attesa dei led rgb per costruire il sensore di colore mi stavo trastullando con alcuni led bicolore che avevo acquistato tempo fa.
Con un potenziometro da 1k riesco a variare l'intensità del led, ma volevo variare, ruotando il potenziometro, il colore del led, dal verde all'arancio al rosso.
Ho provato a far accoppiare alcuni codici ma senza risultato...
avete qualche idea? so che dev'essere molto semplice, ma non ci arrivo proprio
int sensorPin[]={x,y};
int sensorValue[] = {0,0};
int led_pin[]={a,b};
void setup()
{
for(int i=0;i<2;i++){
pinMode(led_pin[i], OUTPUT);
}
}
void loop()
{
for(int i=0;i<2;i++){
sensorValue[i] = analogRead(sensorPin[i]);
analogWrite(led_pin[i], sensorValue[i]);
}
}
questa è la porzione di un codice che avevo scritto per far variare il colore di un rgb con 3 potenziometri... spero di averlo modificato bene per il tuo caso... Devi solo cambiare x,y e a,b con i numeri giusti, salvo errori di stanchezza se vuoi ti posto il programma completo domani.
Avevo messo anche un display lcd e ci scrivevo le varie tonalità.
Quello con i tre potenziometri l'ho visto nel playground, ma non è il mio caso
Non che mi occorrano anche le varie sfumature, però era per passare il tempo
Grazie mille per ora, gioco un po' col tuo codice e vediamo cosa esce ^^
io non l'avevo visto nel playground, ci ho perso una giornata perchè non conoscevo la funzione analogWrite
Edit
comunque ti aggiungo il codice completo
#include <LiquidCrystal.h>
int sensorPin[]={0,1,2};
int sensorValue[] = {0,0,0};
const int led_pin[]={7,8,9};
const int numRows = 2;
const int numCols = 16;
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
void setup()
{
for(int i=0;i<3;i++){
pinMode(led_pin[i], OUTPUT);
}
lcd.begin(numRows, numCols);
}
void loop()
{
for(int a=0;a<3;a++){
sensorValue[a] = analogRead(sensorPin[a]);
sensorValue[a] = map(sensorValue[a], 0, 1023, 255, 0);
}
int thisCol = 0;
int thisRow = 0;
lcd.setCursor(thisCol,thisRow);
lcd.print(" R G B");
thisRow = 1;
lcd.setCursor(thisCol,thisRow);
for(int i=0;i<3;i++){
if(sensorValue[i]<100){
lcd.print(" ");
lcd.print(sensorValue[i]);
lcd.print("|");
}
if(sensorValue[i]>100) {
lcd.print(sensorValue[i]);
lcd.print("|");
}
}
for(int i=0;i<3;i++){
analogWrite(led_pin[i], sensorValue[i]);
}
delay(10);
lcd.clear();
}