Sensore di colore con Arduino: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
spiegazione del codice e descrizione del progetto
Riga 10:
| comune = Urbino
}}
 
 
 
Questa risorsa descrive come realizzare un '''riconoscitore di colori con Arduino, mediante l'utilizzo di un sensore di colori TCS3200 il quale, una volta riconosciuto il colore, accende un LED'''
 
== Indice ==
 
* [[Bastone per non vedenti con Arduino#Presentazione%20del%20progetto|1Presentazione del progetto]]
* [[Bastone per non vedenti con Arduino#Schema%20di%20montaggio|2Schema di montaggio]]
* [[Bastone per non vedenti con Arduino#Codice%20sorgente|3Codice sorgente]]
** [[Bastone per non vedenti con Arduino#Connessione%20dei%20pin|3.1Connessione dei pin]]
** [[Bastone per non vedenti con Arduino#Parametri%20del%20codice|3.2Parametri del codice]]
** [[Bastone per non vedenti con Arduino#Input%20e%20Output|3.3Input e Output]]
** [[Bastone per non vedenti con Arduino#Programma%20principale|3.4Programma principale]]
* 4Espansioni suggerite
 
== Presentazione del progetto ==
[[File:Photodiode_spectral_responsivity.png|miniatura|268x268px|grafico dello spettro dei colori del TCS3200]]
Il '''bastone intelligente per non vedenti''' attraverso un sensore di prossimità, avverte l'utente quando questo si avvicina a un ostacolo, tramite un segnale acustico; inoltre, tramite un motore, viene generata una vibrazione, che guida l'utente a individuare l'ostacolo e – di conseguenza – a superarlo con facilità.
Il progetto volge alla realizzazione di un '''dispositivo in grado di riconoscere il colore''' di un oggetto davanti a sé, grazie al '''sensore di colore TCS 3200''', il quale è dotato di 4 LED a luce bianca e basato su un '''convertitore colore luce-frequenza'''. Quest'ultimo è composto da 16 fotodiodi con filtri blu, 16 con filtri verdi, 16 con filtri rossi e 16 non filtrati. Quando un oggetto è posto frontalmente al modulo, esso viene illuminato dai 4 LED bianchi e la luce riflessa andrà a colpire i 64 fotodiodi, ottenendo in uscita un'onda quadra con una frequenza direttamente proporzionale all'intensità della luce riflessa. Oltre al sensore, il circuito è composto da 5 LED colorati (blu, rosso, verde, giallo e bianco), che si illuminano in base al colore dell’oggetto.
 
Questo progetto semplifica la circolazione dei soggetti con problematiche legate alla vista.
 
== Schema di montaggimontaggio ==
{| class="wikitable"
|+Componenti utilizzati
Line 37 ⟶ 21:
!Tipo
|-
|Sensore di colore
|Active buzzer
|TCS3200
|<math>8~\Omega</math>
|-
|LED
|Ultrasonic Distance Sensor
|5
|HC-SR04
|-
|Resistenze
|Pulsante
|1
|-
|Motore
|DC
|-
|Resistenza
|<math>330~\Omega</math>
|}
[[File:Arduino_Smart_StickSchema di montaggio di riconoscitore di colori.svgpng|centro|senza_cornice|600x600px]]
 
 
== Codice ==
=== Connessione dei pin ===
Come prima cosa definiamo i pin ai quali colleghiamo il sensore di colore TCS3200:
 
S0 e S1 servono per impostare la frequenza di fondoscala, ossia per tarare il grafico dei colori. Abbiamo 4 possibilità di impostazione:
{| class="wikitable"
|+
!S0
!S1
!Segnale in uscita
|-
|L
|L
|//
|-
|L
|H
|2%
|-
|H
|L
|20%
|-
|H
|H
|100%
|}
Con entrambi gli ingressi alti, non viene applicata la scalatura alle frequenze.
 
S2 e S3 servono per selezionare il tipo di fotodiodi da attivare
== Codice ==
{| class="wikitable"
!S2
!S3
!fotodiodi attivati
|-
|L
|L
|Rosso
|-
|L
|H
|Blu
|-
|H
|L
|Non filtrati
|-
|H
|H
|Verde
|}
<syntaxhighlight lang="arduino">
#define LED 2 //definiamo il pin che comanda i 4 LED bianchi del sensore
#define LED 2
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define R 11
#define B 9
Line 69 ⟶ 94:
#define sensorOut 8
 
</syntaxhighlight>Dichiariamo gli OUTPUT e gli INPUT. Impostiamo nel setup sia S0 che S1 come "HIGH", per avere un segnale con frequenza non scalata.<syntaxhighlight lang="arduino">
void setup() {
Serial.begin(9600);
Line 82 ⟶ 109:
}
</syntaxhighlight><syntaxhighlight lang="arduino">
unsigned long r, g, b;
void loop() {
Line 95 ⟶ 123:
b = pulseIn(sensorOut, LOW);
</syntaxhighlight><syntaxhighlight lang="arduino">
Serial.print("R=");
Serial.print("R=");
Serial.print(r);
Serial.print("\tGT=");
Line 119 ⟶ 148:
}
 
</syntaxhighlight>
 
=== Connessione dei pin ===
Come prima cosa definiamo i pin ai quali colleghiamo il buzzer (o cicalino piezoelettrico), il sensore ad ultrasuoni (HC-SR04) ed il motore DC.
 
=== Parametri del codice ===
Line 145 ⟶ 170:
Aggiunta di:
 
* contatore di oggetti in base al colore (con display a sette segmenti)
* Ruota per il movimento facilitato;
* utilizzo di un nastro trasportatore cha fa scorrere gli oggetti direttamente sotto al modulo.
* Sensore di prossimità a 180°;
* funzione S.O.T.F.(stick on the floor) che permette al non vedente di ritrovare il bastone tramite un segnale acustico in caso di caduta e difficoltà a ritrovarlo;
* Sensore di profondità;