Farberkennung mit Arduino
Das Beispiel zeigt, wie wir Farben mit einem Farbsensormodul in Verbindung mit einem Arduino-Mikrocontroller erkennen können.
Das Beispiel verwendet die folgenden Elemente:
Anschließen des Sensors mit Arduino:
Die Verbindung zum Arduino ist wie folgt:
TCS3200D-Modul | Arduino-Stift |
---|---|
VCC | 5 V |
Masse | Masse |
AUS | 2 |
S0 | 3 |
S1 | 4 |
S2 | 5 |
S3 | 6 |
Diagramm der Verbindung des Moduls mit dem Arduino Uno.
Programm für Arduino
Im Beispiel wurde folgender Code verwendet:
Ganzzahl s0 = 3, s1 = 4, s2 = 5, s3 = 6; // Modulstifte mit Arduino verbunden int aus = 2; // Pin 2 Arduino und OUT vom Sensor Int-Flag = 0; Bytezähler = 0; Byte countR = 0, countG = 0, countB = 0; Void-Setup () { Serial.begin (9600); // Initialisierung des seriellen Monitors PinMode (s0, AUSGANG); // Pins als Ausgang setzen PinMode (s1, AUSGANG); PinMode (s2, AUSGANG); PinMode (s3, AUSGANG); } Nichtig TCS () { Flagge = 0; digitalWrite (s1, HOCH); digitalWrite (s0, HOCH); digitalWrite (s2, NIEDRIG); digitalWrite (s3, NIEDRIG); AttachInterrupt (0, ISR_INTO, LOW); timer0_init (); } ungültig ISR_INTO () { Zähler ++; } void timer0_init (nichtig) { TCCR2A = 0x00; TCCR2B = 0x07; // Taktfrequenz - 1024 TCNT2 = 100; // Überlauf 10 ms TIMSK2 = 0x01; // Abbrucherlaubnis } int ich = 0; ISR (TIMER2_OVF_vect) // Timer 2, 10 ms Überlauf 10 ms. Interne Überlauf-Interrupt-Funktion { TCNT2 = 100; Flagge ++; if (flag == 1) // RGB-Komponenten abrufen und auf dem Bildschirm anzeigen { countR = Zähler; Serial.print ("rot ="); Serial.print (countR, DEC); Serial.print ("tt"); digitalWrite (s2, HOCH); digitalWrite (s3, HOCH); } Sonst wenn (Flag == 2) { countG = Zähler; Serial.print ("grün ="); Serial.print (countG, DEC); Serial.print ("t"); digitalWrite (s2, NIEDRIG); digitalWrite (s3, HOCH); } Sonst wenn (Flag == 3) { countB = Zähler; Serial.print ("blau ="); Serial.print (countB, DEC); Serial.print ("t"); Serial.println ("n"); digitalWrite (s2, NIEDRIG); digitalWrite (s3, NIEDRIG); } Sonst wenn (Flag == 4) { Flagge = 0; } Zähler = 0; } void loop () // Hauptprogrammschleife { TCS (); Verzögerung (500); während (1); }
Das Programm zeigt den Wert der RGB-Komponenten für die erkannte Farbe an. Das Ergebnis der Arbeit des Programms kann unten beobachtet werden:
Screenshot des seriellen Monitors.