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.

