Hi Leute!
ich habe ein Problem bei Trackcolor.
bei mein Programm geht darum dass, mann drei unterschiedliche object bezüglich ihre farbe zu unterscheiden.
wenn ich ein rot (oder grün, oder Blau) kugel auf der kamera durchlaufen muss der rot (oder grün, oder Blau) led einschalten. aber wenn ich mein programm Upload ist sofort die Led rot und blau ein obwohl kein objekt auf der Kamera durchlauft.
#include <CMUcam4.h> // Bibliothek
#include <CMUcom4.h>
#define LED_BLINK 5 // 5 Hz
#define WAIT_TIME 5000 // 5 seconds
#define LED_UP 11 // zahlen die mit Ausgänge zusammenpasst
#define LED_MID 10
#define LED_DOWN 12
//#define LED_DEBUG 13
CMUcam4 cam(CMUCOM4_SERIAL);
void setup() { cam.begin();
cam.LEDOn(LED_BLINK);
delay(WAIT_TIME);
cam.autoGainControl(false);
cam.autoWhiteBalance(false);
cam.LEDOn(CMUCAM4_LED_ON);
// Deklaration von digitale Ausgänge
pinMode(LED_UP, OUTPUT);
pinMode(LED_MID, OUTPUT);
pinMode(LED_DOWN, OUTPUT);
//pinMode(LED_DEBUG, OUTPUT);
}
void loop() {
CMUcam4_tracking_data_t data; // l’état des LED.
int lightUp, lightMid, lightDown;
for(; {
// reset alle variablen
lightUp = LOW;
lightMid = LOW;
lightDown = LOW;
//lightDebug = LOW; // ROUGE
cam.trackColor(120,255,0,60,0,60); // Track Rot
cam.getTypeTDataPacket(&data);
// récupérer les infos transmises par la cam
if(data.pixels > 1) { // si on détecte des pixels de cette couleur
lightUp = HIGH; // on allumera la LED UP
} // Track grün
cam.trackColor(0,60,0,255,0,120);
cam.getTypeTDataPacket(&data);
if(data.pixels > 1) { lightMid = HIGH; }
// Track Blau
cam.trackColor(0,60,0,60,120,255);
cam.getTypeTDataPacket(&data);
if(data.pixels > 1) {
lightDown = HIGH;
}
digitalWrite(LED_UP, lightUp);
digitalWrite(LED_MID, lightMid);
digitalWrite(LED_DOWN, lightDown);
//digitalWrite(LED_DEBUG, lightDebug);
}
}