Toran
20.03.2018, 15:48
Tag Zusammen,
ich bin gerade dabei einen Farbsensor(TCS3200) in Betrieb zu nehmen und bin auf ein Problem gestoßen. Die Farbe wird gute 5cm von dem Sensor entfernt sein. Wenn ich mir die Werte anschaue, kann ich jedoch keine Muster entdecken. Zu mindest keine, die das Ergebnis nur auf eine Farbe eingrenzen. Ich habe mich mit mehreren If-Abfragen versucht ans Ziel zu kämpfen, aber es gab immer ein zwei Farben, die nicht richtig erkannt wurden. Wenn es mal bei einer Distanz von 1cm gepasst hat, hat es bei einer Distanz von 5cm wieder überhaupt nicht gepasst. Ich drehe mich nun seit gut 3h im Kreis, was die Abfrage angeht . Im wesentlich würde ich gerne rot, grün, blau, weiß und schwarz erkennen.
Habt ihr vielleicht ein paar Tipps, wie ich ans Ziel komme? Gibt es etwas in meinem Code, das grundlegend falsch ist? Ich benutze für die Programmierung einen Arduino Mega.
Sensor-Daten bei keiner Farbe vor dem Sensor:
https://www.pic-upload.de/view-35031812/Sensordaten.png.html
Sonstige Details:
- Wird in einer eher dunkleren Umgebung eingesetzt (der Boden eines Fahrgestells)
- momentan nur schwaches Licht im Zimmer.
- LED des Sensors ist in Betrieb
Mein Code:
const int s0 = 2;
const int s1 = 3;
const int s2 = 4;
const int s3 = 5;
const int out= 6;
const int motor1 = 7;
const int motor2 = 8;
const int motor3 = 9;
const int motor4 = 10;
const int trigger = 11;
const int echo = 12;
const int musicPin = 13;
int red=0;
int green=0;
int blue=0;
void setup()
{
pinMode(motor1,OUTPUT);
pinMode(motor2,OUTPUT);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(s0,OUTPUT);
pinMode(s1,OUTPUT);
pinMode(s2,OUTPUT);
pinMode(s3,OUTPUT);
pinMode(out,INPUT);
//Scaling to 20% frequency
digitalWrite(s0,HIGH);
digitalWrite(s1,LOW);
Serial.begin(9600);
}
void loop()
{
//RED
digitalWrite(s2,LOW);
digitalWrite(s3,LOW);
red = pulseIn(out,LOW);
//red = map(red, 120,3000,255,0);
Serial.print("R= ");
Serial.print(red);
Serial.print(" ");
delay(100);
//GREEN
digitalWrite(s2,HIGH);
digitalWrite(s3,HIGH);
green = pulseIn(out,LOW);
//green = map(green, 120,3000,255,0);
Serial.print("G= ");
Serial.print(green);
Serial.print(" ");
delay(100);
//BLUE
digitalWrite(s2,LOW);
digitalWrite(s3,HIGH);
blue = pulseIn(out,LOW);
//blue = map(blue, 120,3000,255,0);
Serial.print("B= ");
Serial.print(blue);
Serial.println(" ");
delay(100);
}
ich bin gerade dabei einen Farbsensor(TCS3200) in Betrieb zu nehmen und bin auf ein Problem gestoßen. Die Farbe wird gute 5cm von dem Sensor entfernt sein. Wenn ich mir die Werte anschaue, kann ich jedoch keine Muster entdecken. Zu mindest keine, die das Ergebnis nur auf eine Farbe eingrenzen. Ich habe mich mit mehreren If-Abfragen versucht ans Ziel zu kämpfen, aber es gab immer ein zwei Farben, die nicht richtig erkannt wurden. Wenn es mal bei einer Distanz von 1cm gepasst hat, hat es bei einer Distanz von 5cm wieder überhaupt nicht gepasst. Ich drehe mich nun seit gut 3h im Kreis, was die Abfrage angeht . Im wesentlich würde ich gerne rot, grün, blau, weiß und schwarz erkennen.
Habt ihr vielleicht ein paar Tipps, wie ich ans Ziel komme? Gibt es etwas in meinem Code, das grundlegend falsch ist? Ich benutze für die Programmierung einen Arduino Mega.
Sensor-Daten bei keiner Farbe vor dem Sensor:
https://www.pic-upload.de/view-35031812/Sensordaten.png.html
Sonstige Details:
- Wird in einer eher dunkleren Umgebung eingesetzt (der Boden eines Fahrgestells)
- momentan nur schwaches Licht im Zimmer.
- LED des Sensors ist in Betrieb
Mein Code:
const int s0 = 2;
const int s1 = 3;
const int s2 = 4;
const int s3 = 5;
const int out= 6;
const int motor1 = 7;
const int motor2 = 8;
const int motor3 = 9;
const int motor4 = 10;
const int trigger = 11;
const int echo = 12;
const int musicPin = 13;
int red=0;
int green=0;
int blue=0;
void setup()
{
pinMode(motor1,OUTPUT);
pinMode(motor2,OUTPUT);
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
pinMode(s0,OUTPUT);
pinMode(s1,OUTPUT);
pinMode(s2,OUTPUT);
pinMode(s3,OUTPUT);
pinMode(out,INPUT);
//Scaling to 20% frequency
digitalWrite(s0,HIGH);
digitalWrite(s1,LOW);
Serial.begin(9600);
}
void loop()
{
//RED
digitalWrite(s2,LOW);
digitalWrite(s3,LOW);
red = pulseIn(out,LOW);
//red = map(red, 120,3000,255,0);
Serial.print("R= ");
Serial.print(red);
Serial.print(" ");
delay(100);
//GREEN
digitalWrite(s2,HIGH);
digitalWrite(s3,HIGH);
green = pulseIn(out,LOW);
//green = map(green, 120,3000,255,0);
Serial.print("G= ");
Serial.print(green);
Serial.print(" ");
delay(100);
//BLUE
digitalWrite(s2,LOW);
digitalWrite(s3,HIGH);
blue = pulseIn(out,LOW);
//blue = map(blue, 120,3000,255,0);
Serial.print("B= ");
Serial.print(blue);
Serial.println(" ");
delay(100);
}