Farbsensor TCS3200 Smarties

Guten Nachmittag,

ich bin gerade dabei eine Sortiermaschine für Smarties zu bauen. So weit, so gut. Nun habe ich den Farbsensor TCS3200 montiert und programmiert. Alles läuft soweit. Leider erkennt er jedoch die Farben nicht. Bei einem roten Smartie erkennt er zum Beispiel Grün oder bei einem Grünen ein Lilanes. Ich habe die Werte auch schon mehrmals konfiguriert, ohne Erfolg. Der Abstand müsste auch stimmen. Kennt sich da jemand besser aus und hatte schonmal das gleiche Problem bzw weiß eine Lösung ?

Ich wäre sehr dankbar!

Für Fragen bin ich jederzeit offen .

Link zum Farbsensor : GY-31 TCS3200 Farbsensor günstig online kaufen | Funduino

Hier noch der Sktech :wink:

#include <Servo.h> //Die Servobibliothek wird aufgerufen. Sie wird benötigt, damit die Ansteuerung des Servos vereinfacht wird.

#define EN_PIN 6 //enable (CFG6)
#define DIR_PIN 4 //direction
#define STEP_PIN 5 //step

Servo servoblau; //Erstellt für das Programm ein Servo mit dem Namen „servoblau“
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 rot = 0; //Variablen für LEDs benennen
int gruen = 0;
int blau = 0;

void setup(){

servoblau.attach(7); //Das Setup enthält die Information, dass das Servo an der Steuerleitung (gelb) mit Pin 8 verbunden wird. Hier ist natürlich auch ein anderer Pin möglich.

pinMode(EN_PIN, OUTPUT);
digitalWrite(EN_PIN, HIGH); //deactivate driver (LOW active)
pinMode(DIR_PIN, OUTPUT);
digitalWrite(DIR_PIN, HIGH); //LOW or HIGH
pinMode(STEP_PIN, OUTPUT);
digitalWrite(STEP_PIN, LOW);

digitalWrite(EN_PIN, LOW); //activate driver
Serial.begin(9600); //Serielle Kommunikation starten
pinMode(s0, OUTPUT); //Die Kontakte des Farbsensors werden als Output oder...
pinMode(s1, OUTPUT); // (Warum als Output? Die Frequenzwerte (s0-s3) sollen im
pinMode(s2, OUTPUT); // seriellen Monitor ausgegeben werden.)
pinMode(s3, OUTPUT);
pinMode(out, INPUT); // ...Input festgelegt


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

}

void loop(){

digitalWrite(STEP_PIN, LOW);
delayMicroseconds(800);
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(800);

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 == 7  && gruen == 7 && blau == 6 || blau == 5) //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..
delay(1000);
servoblau.write(40);//Position 2 ansteuern mit dem Winkel 90

}

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

{

Serial.println(" – (blau)");
delay(1000);
servoblau.write(0); //Position 2 ansteuern mit dem Winkel 90


}

else if (gruen == 7 || gruen ==6 && rot == 6 && blau == 5)

{

Serial.println(" – (Lila Farbe)");
delay(1000);
servoblau.write(40); //Position 2 ansteuern mit dem Winkel 90



}

else (gruen == 4 && rot == 4 || rot == 5 && blau == 3 || blau == 4);{ //Wenn keine Werte vorhanden sind..

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

}

delay(300);



}

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);

}

Hast Du schon mal "arduino smarties sortierung" in die Suchmaschine Deiner Wahl eingegeben?

Ansonsten brauchen wir den Link zum Sensor und zu Deiner Lib, so wie Deinen Sketch in Codetags. Wie das geht, steht hier.

Gruß Tommy

Liest Du Umgebungslicht mit?
Grüße Uwe

Alles klar, ich ändere es gleich mal ab. Danke soweit

Bis jetzt ja. Ich könnte mal probieren, das ganze mit schwarzen Papier mal abzukleben, dass kein Licht rein kommt.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.