Sensore colore arduino

Per la tesina di 5a superiore sto facendo il sensore di colore con l'arduino. Utilizzo un led rgb, una fotoresistenza, arduino uno ed un led. In poche parole pensavo di fare cosi: prendo un cartoncino, ci sparo i tre colori del led rgb, la fotoresistenza misura la resistenza e mi dice che colore ha rilevato. Con un altro led rgb, appena trovato il colore mi dice che colore è stato rilevato. Mi aiutate per il programma? Grazie!

Giama: Utilizzo un led rgb, una fotoresistenza, arduino uno ed un led. In poche parole pensavo di fare cosi: prendo un cartoncino, ci sparo i tre colori del led rgb, la fotoresistenza misura la resistenza e mi dice che colore ha rilevato.

Scusa ... in base quale teoria una fotoresistenza dovrebbe rilevare un colore ??? :astonished:

Guglielmo

Quoto gbp01, se vuoi una cosa semplice e che "forse", e ripeto "forse" funziona, dovresti usare 3 fotoresistenze e metti sopra i sensori delle fotoresistenze dei filtrini colorati, uno rosso, uno verde e uno blu, in modo che lasciano passare soltanto certi colori, e a quel punto forse sei in grado di leggere le varie tonalità di colori in base ai valori di tutte e 3 le fotoresistenze, a quel punto controlli i valori e poni dei range nei quali puoi affermare di ricevere un certo colore. Non è il massimo come cosa, ma è semplice ed è la prima che mi è venuta in mente.

Ciao :)

... o, ancora meglio, usi un piccolo sensore nato apposta per discriminare i colori, come QUESTO ! :)

Guglielmo

@Giama Ti invitiamo a presentarti qui: http://forum.arduino.cc/index.php?topic=113640.0 e a leggere il regolamento: http://forum.arduino.cc/index.php?topic=149082.0 - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: http://forum.arduino.cc/index.php?topic=146152.0 - qui le pinout delle varie schede by xxxPighi: http://forum.arduino.cc/index.php?topic=151646.0 - qui una serie di link utili: http://forum.arduino.cc/index.php?topic=126861.0

Il base alla luce che riflette il cartoncino.. il problema è che non sono molto bravo con l'arduino e mi sto pendendo della mia scelta, ormai è troppo tardi per cambiare progetto, ho bisogno di aiuto =(

Ps: mi presento il prima possibile, adesso sono molto preso con gli studi!

Con una solo fotoresistenza non riesci a riconoscere il colore salvo se ... non bari (... ma il professore se ne accorge) ... ad esempio scegliendo tre valori di luminosità diversa per i tre colori del LED RGB, ma ripeto ... è barare e se ne accorgono XD

Quindi ... il progetto comunque lo devi modificare e allora ... spendi sti' 15 US$ e usa un vero sensore di colore che controlli con Arduino e fai più bella figura !

Guglielmo

gpb01: Con una solo fotoresistenza non riesci a riconoscere il colore salvo se ... non bari (... ma il professore se ne accorge) ... ad esempio scegliendo tre valori di luminosità diversa per i tre colori del LED RGB, ma ripeto ... è barare e se ne accorgono XD

Quindi ... il progetto comunque lo devi modificare e allora ... spendi sti' 15 US$ e usa un vero sensore di colore che controlli con Arduino e fai più bella figura !

Guglielmo

Per prima cosa: grazie per le risposte che mi state dando. Il funzionamento del sensore (il prof mi ha detto che funzionerà con questo principio) è in base allaresistenza. In poche parole, se per esempio metto il cartoncino verde davanti al led rgb, gli sparo i tre colori uno alla volta e in base a qquanta luce riflette imposto dei range di valori che poi mi permetteranno di poter riconoacere il cartoncino, biosnga calibrare il tutto per ogni cartoncino. Il sensore non posso comprarlo perché già da quanto dice il prof, il progetto è abbastanza semplice e "piccolo". Se prendessi il sensore sarebbe troppo facile.. contate che la commissione non può vedere dove c'è il led e la fotoresistenza perché ho fatto la scatola dove monterò il tutto e si vede solo il dietro dei comonenti, non si può vedere quanta luce fa il led.. consigliatemi qualcosa, sono abbastanza disperato e il tempo passa in fretta :(

Ok, se puoi inserire dei filtri colorati, allora la cosa potrebbe anche funzionare ... :roll_eyes:

Accenderai UN colore e passerai tutti e tre i filtri leggendo la resistenza e te la segnerai, poi farai la stessa cosa per un altr colore ed infine per l'ultimo colore. A questo punto avrai TRE triplette di resistenze che ti identificano ciascun colore (ovvero .. avrai fatto una specie di calibrazione del tutto).

Quando dovrai indovinare il colore, ne accenderai UNO dei TRE, passerai di nuovo i TRE filtri colorati e, confrontando i valori con quelli che avevi acquisito (... con una certa tolleranza) ... dovresti riuscire a riconoscere quale LED è stato acceso.

Guglielmo

Ma cosi non mi aiuterà a riconoscere il colore del cartoncino che ho passato davanti alla fotoresistenza..

a me sembra un sistema empirico.... comunque...

Questo lo avevi gia' visto ?

Brunello:
a me sembra un sistema empirico

… per usare un dolce eufemismo … XD XD XD

Lo avrei definito in altro modo, ma … probabilmente mi avrebbero bannato :grin: XD :grin: XD

Guglielmo

Brunello: a me sembra un sistema empirico.... comunque...

Questo lo avevi gia' visto ?

Si l'avevo già visto, non ho capito bene a cosa servano il nero ed il bianco.

A quanto vedo, credo che la soluzione migliore sia quella offerta da Duecce, oppure puoi prendere esempio dal progetto "Lampada miscela colori" che trovi sul libro dello Starter Kit ... devi solo adattare lievemente il listato alle tue reali necessità, sono convinto che sia la strada più breve per ottenere ciò che ti serve.

Ciao, prova a dare un occhiata anche qui: http://www.gioblu.com/tutorials/sensori/275-sensore-di-colore-led-rgb

Chiedo perdono per aver creato un’altra discussione. Per prima cosa sono felicissimo di dirvi che sto facendo progressi, ho fatto il programma:

int FotoPin = 1;
int FotoValue;
int ledPin1 = 2;
int ledPin2 = 3;
int ledPin3 = 4;
 
void setup() { 
  Serial.begin(9600);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
}
 
void loop() {
  FotoValue = analogRead(FotoPin);
  Serial.println(FotoValue);
  if (FotoValue< 20){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
} else if ((FotoValue< 85) && (FotoValue> 70)){
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
} else if ((FotoValue< 40) && (FotoValue> 25)){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
} else if ((FotoValue< 63) && (FotoValue> 45)){
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, HIGH);
}
 delay(500);
}

Con questo programma sparo la luce su un cartoncino, e in base ai valori che riflette accende il colore corrispondente con un led rgb. Esempio: cartoncino verde, lo passo sotto il led che rimane sempre acceso, la fotoresistenza rileva il valore e siccome è in un range (per il verde è 63 e 45) il led rgb accende la luce verde.

Adesso vorrei complicare la storia, non mi piace troppo vedere il risultato tramite un led rgb, vorrei un display che mi scrivesse ROSSO quando passo il cartoncino rosso e cosi via… Secondo voi è fattibile?

Ti è stato detto più volte, ma continui a non applicarlo ... IL CODICE VA RACCHIUSO NEGLI APPOSITI TAG !!!

Per la tua domanda, ovviamente certo che lo puoi fare, dove è la difficoltà ? Prendi un LCD (magari se vuoi risparmiare pin prendilo già con interfaccia I2C) e poi scrivi quello che ti pare. Da Adafruit li trovi addirittura RGB ... così puoi fare le scritte del giusto colore :grin:

Come detto, per risparmiare piedini, puoi convertire quel display in I2C con QUESTO accessorio ...

Guglielmo

Il problema è che non so come dire ad arduino che se c'è un determinato valore deve scrivermi una cosa su il display.. Inoltre non ho capito come funziona l'accessorio per risparmiare piedini. Grazie per i link!

C'è una apposita libreria per gli LCD ... te la scarichi, te la studi e ti guardi gli esempi ... semplice no ?

EDITA IL TUO POST E SISTEMA IL CODICE !!!

Guglielmo

Ok adesso leggo e scrivo il programma appena ho capito qualcosa :P

Secondo te mi conviene utilizzare l'accessorio per occupare meno pin?