Detekce barev pomocí Arduina
Příklad ukazuje, jak můžeme detekovat barvu pomocí modulu barevného senzoru ve spojení s mikrokontrolérem Arduino.
Příklad používá následující prvky:
Připojení senzoru k Arduinu:
Připojení k Arduinu je následující:
Modul TCS3200D | Pin Arduino |
---|---|
VCC | 5 V |
GND | GND |
VEN | 2 |
S0 | 3 |
S1 | 4 |
S2 | 5 |
S3 | 6 |
Schéma připojení modulu k Arduino Uno.
Program pro Arduino
V příkladu byl použit následující kód:
int s0 = 3, s1 = 4, s2 = 5, s3 = 6; // piny modulu připojené k Arduinu int out = 2; // pin 2 Arduino a OUT ze snímače příznak int = 0; čítač bajtů = 0; počet bytů R = 0, počet G = 0, počet B = 0; neplatné nastavení () { Serial.begin (9600); // inicializace sériového monitoru pinMode (s0, VÝSTUP); // nastavit piny jako výstup pinMode (s1, VÝSTUP); pinMode (s2, VÝSTUP); pinMode (s3, VÝSTUP); } neplatné TCS () { vlajka = 0; digitalWrite (s1, HIGH); digitalWrite (s0, HIGH); digitalWrite (s2, LOW); digitalWrite (s3, LOW); attachInterrupt (0, ISR_INTO, LOW); timer0_init (); } neplatné ISR_INTO () { counter ++; } void timer0_init (void) { TCCR2A = 0x00; TCCR2B = 0x07; // frekvence hodin - 1024 TCNT2 = 100; // přetečení 10 ms TIMSK2 = 0x01; // povolení k přerušení } int i = 0; ISR (TIMER2_OVF_vect) // časovač 2, 10ms přetečení 10ms. funkce přerušení interního přetečení { TCNT2 = 100; flag ++; if (flag == 1) // získává a zobrazuje komponenty RGB na obrazovce { countR = počitadlo; Serial.print ("red ="); Serial.print (countR, DEC); Serial.print ("tt"); digitalWrite (s2, HIGH); digitalWrite (s3, HIGH); } else if (flag == 2) { countG = counter; Serial.print ("green ="); Serial.print (countG, DEC); Serial.print ("t"); digitalWrite (s2, LOW); digitalWrite (s3, HIGH); } else if (flag == 3) { countB = počitadlo; Serial.print ("blue ="); Serial.print (countB, DEC); Serial.print ("t"); Serial.println ("n"); digitalWrite (s2, LOW); digitalWrite (s3, LOW); } else if (flag == 4) { vlajka = 0; } counter = 0; } void loop () // hlavní smyčka programu { TCS (); zpoždění (500); while (1); }
Program zobrazuje hodnotu komponent RGB pro rozpoznanou barvu. Výsledek práce programu lze sledovat níže:
Screenshot sériového monitoru.