/* HuskyLens 2 - Color Recognition Beispiel für ESP32 ---------------------------------------------------- Bibliothek: DFRobot_HuskylensV2 https://github.com/DFRobot/DFRobot_HuskylensV2 Verkabelung (I2C, HuskyLens 2 extern per Power Bank versorgt): HuskyLens SDA -> ESP32 SDA (Standard meist GPIO21, je nach Board) HuskyLens SCL -> ESP32 SCL (Standard meist GPIO22, je nach Board) HuskyLens GND -> ESP32 GND (gemeinsame Masse, zwingend nötig!) Wichtig: - Protokoll an der HuskyLens 2 selbst auf "I2C" oder "Auto Detect" stellen (System Settings -> Protocol Type) - Bibliothek vorher über den Arduino Library Manager installieren: Suche nach "DFRobot_HuskylensV2" */ #include #include "DFRobot_HuskylensV2.h" // HuskyLens-Objekt anlegen HuskylensV2 huskylens; // Falls dein ESP32-Board andere I2C-Pins nutzt, hier anpassen: #define I2C_SDA 21 #define I2C_SCL 22 void setup() { Serial.begin(115200); delay(500); // I2C mit den gewünschten Pins starten Wire.begin(I2C_SDA, I2C_SCL); Serial.println("Verbinde mit HuskyLens 2 ..."); // Warten, bis die HuskyLens erfolgreich initialisiert werden konnte while (!huskylens.begin(Wire)) { Serial.println("HuskyLens 2 nicht gefunden! Verkabelung/Protokoll pruefen."); delay(500); } Serial.println("HuskyLens 2 verbunden!"); // Auf den Color-Recognition-Algorithmus umschalten huskylens.switchAlgorithm(ALGORITHM_COLOR_RECOGNITION); Serial.println("Color Recognition aktiviert. Halte ein Objekt vor die Kamera."); } void loop() { // Neue Ergebnisse vom Sensor abrufen huskylens.getResult(ALGORITHM_COLOR_RECOGNITION); if (huskylens.available(ALGORITHM_COLOR_RECOGNITION)) { int anzahl = huskylens.getCachedResultNum(ALGORITHM_COLOR_RECOGNITION); Serial.print("Erkannte Farbobjekte: "); Serial.println(anzahl); // Das Objekt, das der Bildmitte am naechsten ist void* zentrum = huskylens.getCachedCenterResult(ALGORITHM_COLOR_RECOGNITION); if (zentrum != NULL) { int id = RET_ITEM_NUM(zentrum, Result, ID); int xCenter = RET_ITEM_NUM(zentrum, Result, xCenter); int yCenter = RET_ITEM_NUM(zentrum, Result, yCenter); int breite = RET_ITEM_NUM(zentrum, Result, width); int hoehe = RET_ITEM_NUM(zentrum, Result, height); Serial.print("Farb-ID: "); Serial.print(id); Serial.print(" | Position: ("); Serial.print(xCenter); Serial.print(", "); Serial.print(yCenter); Serial.print(") | Groesse: "); Serial.print(breite); Serial.print("x"); Serial.println(hoehe); // Beispiel: einfache Reaktion je nach erkannter Farb-ID // (Die IDs werden vorher am Geraet selbst antrainiert/zugewiesen) switch (id) { case 1: Serial.println("Blaues Objekt"); break; case 2: Serial.println("Rotes Objekt"); break; default: Serial.println(">> Unbekannte/nicht zugeordnete Farb-ID"); break; } } } else { Serial.println("Keine Farbe erkannt."); } delay(500); }