Nr.06 – Farbsensor

Farbsensor mit Arduino Mikrocontrollern auslesen

farbsensor-arduino

 

Aufgabe: Mit Hilfe eines Farbsensor sollen die Farben Rot, Grün und Blau erkannt werden und eine entsprechende LED aufleuchten.

Material: Arduino / Kabel / Farbsensor / Rote LED / Grüne LED / Blaue LED /Widerstände für die LEDs

Auf dem Farbsensor befinden sich 4 weiße LEDs um genauere Werte zu erhalten. In der Mitte der LEDs befindet sich ein kleines Viereck aus Fotodioden, welche die Intensität einer Farbe filtern können. Es sind Fotodioden für grüne, rote und blaue Farbe, sowie Fotodioden ohne Farbfilter vorhanden. Diese „filtern“ heraus welche Farbe gerade vor den Farbsensor gehalten wird und wandeln diese in Werte um, die der Arduino Mikrocontroller verarbeiten kann.

Der Farbsensor kann zum Beispiel in dem Aufbau einer Sortiermaschine verwendet werden.

Für unseren Testaufbau haben wir folgenden Aufbau mit entsprechender Verkabelung vorgenommen

blau

Verkabelung:

Farbsensor >>> Arduino

VCC >>> 5V

GND >>> GND

S0 >>> 8

S1 >>> 9

S2 >>> 12

S3 >>> 11

OUT >>> 10

OE >>> GND

LEDs >>> Arduino

Rote LED >>> 2

Grüne LED >>> 3

Blaue LED >>> 4

 

Dies ist ein Beispielcode, mit dem die drei Farben Rot, Grün und Blau vom Arduino ausgelesen werden. Gleichzeitig zeigen drei entsprechend farbige LEDs an, welche Farbe gerade vom Sensor erkannt wurde.

 

const int s0 = 8; //Verbindung der Farbsensorkontakte mit dem Arduino festlegen

const int s1 = 9;

const int s2 = 12;

const int s3 = 11;

const int out = 10;

int roteLED = 2; //Verbindung der LEDs mit dem Arduino festlegen

int grueneLED = 3;

int blaueLED = 4;

int rot = 0; //Variablen für LEDs benennen

int gruen = 0;

int blau = 0;

void setup()

{

Serial.begin(9600); //Serielle Kommunikation starten

pinMode(s0, OUTPUT); //Die Kontakte des Farbsensors werden als Output oder

pinMode(s1, OUTPUT); // Input festgelgt

pinMode(s2, OUTPUT);

pinMode(s3, OUTPUT);

pinMode(out, INPUT);

pinMode(roteLED, OUTPUT); //Die LEDs werden als Output festgelegt

pinMode(grueneLED, OUTPUT);

pinMode(blaueLED, OUTPUT);

digitalWrite(s0, HIGH); //Die vier weißen LEDs am Farbsensor sollen leuchten

digitalWrite(s1, HIGH);

}

void loop()

{

color();//Diese Funktion wird am Ende des Codes festgelegt (s.“void color();“)

Serial.print(" Wert Rot: "); //Auf dem seriellen Monitor soll jeweils „Wert“

Serial.print(rot, DEC); //mit der entsprechenden Farbe angezeigt

Serial.print(" Wert Gruen: ");//werden und dahinter der Wert, welcher in der

Serial.print(gruen, DEC); //void color(); Funktion ausgelesen wurde.

Serial.print(" Wert Blau: ");

Serial.print(blau, DEC);

//Hier folgen die Befehle für die LEDs

if (rot < blau && rot < gruen && rot < 20) //Wenn der Filterwert für rot //kleiner ist als alle anderen Werte..

{

Serial.println(" – (Rote Farbe)"); //..soll “Rote Farbe“ am seriellen //Monitor angezeigt werden und..

digitalWrite(roteLED, HIGH); //…ie rote LED leuchtet auf, die anderen

digitalWrite(grueneLED, LOW); //bleiben aus

digitalWrite(blaueLED, LOW);

}

else if (blau < rot && blau < gruen) //Das gleiche bei Blau und Grün

{

Serial.println(" – (Blaue Farbe)");

digitalWrite(roteLED, LOW);

digitalWrite(grueneLED, LOW);

digitalWrite(blaueLED, HIGH);

}

else if (gruen < rot && gruen < blau)

{

Serial.println(" – (Gruene Farbe)");

digitalWrite(roteLED, LOW);

digitalWrite(grueneLED, HIGH);

digitalWrite(blaueLED, LOW);

}

else{ //Wenn keine Werte vorhanden sind..

Serial.println(); //..nichts auf dem seriellen Monitor anzeigen und..

}

delay(300);

digitalWrite(roteLED, LOW); //…alle LEDs ausschalten

digitalWrite(grueneLED, LOW);

digitalWrite(blaueLED, LOW);

}

void color() //Hier werden die Werte vom Farbsensor ausgelesen und unter den

//entsprechenden Variablen gespeichert

{

digitalWrite(s2, LOW);

digitalWrite(s3, LOW);

rot = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

digitalWrite(s3, HIGH);

blau = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

digitalWrite(s2, HIGH);

gruen = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

}

Um unseren Aufbau zu überprüfen haben wir uns einen Zettel mit einer roten, grünen und blauen Fläche ausgedruckt.

farbsenor-tutorial-noch-nicht-fertig

Der serielle Monitor sollte so aussehen:

serial-monitor-farbsensor-arduino

Je nach dem über welche Farbe man den Farbsensor hält sollte jetzt die entsprechende LED aufleuchten.

rot

gruen

blau