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.

Wir freuen uns auf die Zusammenarbeit mit Ihnen!