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
}}
== Presentazione del progetto ==
[[File:Photodiode_spectral_responsivity.png|miniatura|268x268px|grafico dello spettro dei colori del TCS3200]]
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.
== Schema di
{| class="wikitable"
|+Componenti utilizzati
Line 37 ⟶ 21:
!Tipo
|-
|Sensore di colore
|TCS3200
|-
|LED
|5
|-
|Resistenze
|<math>330~\Omega</math>
|}
[[File:
== 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
{| 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 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("\tGT=");
Line 119 ⟶ 148:
}
</syntaxhighlight>
=== Parametri del codice ===
Line 145 ⟶ 170:
Aggiunta di:
* contatore di oggetti in base al colore (con display a sette segmenti)
* utilizzo di un nastro trasportatore cha fa scorrere gli oggetti direttamente sotto al modulo.
|