Code-Template für die Schüler
Code-Template für die Schüler.
This commit is contained in:
parent
3351d86989
commit
73d07d1a9f
1 changed files with 94 additions and 0 deletions
94
final_code/Code_Template.ino
Normal file
94
final_code/Code_Template.ino
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
#include <Wire.h>
|
||||
#include "DFRobot_HuskylensV2.h"
|
||||
|
||||
HuskylensV2 huskylens;
|
||||
|
||||
// --- PIN-DEFINITIONEN ---
|
||||
// TODO: Tragt hier die Pins ein, an die ihr eure LEDs auf dem Steckbrett angeschlossen habt.
|
||||
int rotPin = ;
|
||||
int blauPin = ;
|
||||
|
||||
// --- VARIABLEN FÜR STATUS UND TIMING ---
|
||||
// Wir nutzen eine sogenannte "State Machine" (Zustandsautomat), um uns zu merken, was gerade passiert.
|
||||
enum LedStatus { KEINE, ROT, BLAU };
|
||||
LedStatus aktuellerStatus = KEINE;
|
||||
|
||||
// Variablen für das nicht-blockierende Blinken
|
||||
unsigned long letzterWechsel = 0;
|
||||
bool ledAn = false;
|
||||
const unsigned long blinkIntervall = 500; // Blink-Geschwindigkeit in Millisekunden
|
||||
|
||||
void setup() {
|
||||
// TODO: Konfiguriert die beiden LED-Pins als OUTPUT
|
||||
|
||||
|
||||
// Serielle Kommunikation und I2C-Bus starten
|
||||
Serial.begin(115200);
|
||||
Wire.begin();
|
||||
|
||||
Serial.println("Verbinde mit HuskyLens 2...");
|
||||
|
||||
// Warteschleife, bis die HuskyLens gefunden wurde
|
||||
while (!huskylens.begin(Wire)) {
|
||||
Serial.println("HuskyLens 2 nicht gefunden! Verkabelung pruefen...");
|
||||
delay(500);
|
||||
}
|
||||
|
||||
// HuskyLens in den Farberkennungs-Modus schalten
|
||||
huskylens.switchAlgorithm(ALGORITHM_COLOR_RECOGNITION);
|
||||
Serial.println("HuskyLens 2 verbunden! Bereit.");
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// 1. Aktuelles Ergebnis der Farberkennung abholen
|
||||
// (Dieser Befehl ist vorgegeben, damit die Kamera neue Bilder verarbeitet)
|
||||
huskylens.getResult(ALGORITHM_COLOR_RECOGNITION);
|
||||
|
||||
LedStatus neuerStatus = KEINE; // Standardannahme: Es wird gerade keine Farbe erkannt
|
||||
|
||||
// 2. Auswertung der erkannten Farben
|
||||
if (huskylens.available(ALGORITHM_COLOR_RECOGNITION)) {
|
||||
|
||||
// TODO: Prüfe, ob ID2 (Rot) erkannt wurde. Nutze dazu den Befehl aus dem Cheat-Sheet!
|
||||
// if (...) {
|
||||
// neuerStatus = ROT;
|
||||
// }
|
||||
|
||||
// TODO: Prüfe im Anschluss, ob ID1 (Blau) erkannt wurde.
|
||||
// else if (...) {
|
||||
// neuerStatus = BLAU;
|
||||
// }
|
||||
}
|
||||
|
||||
// 3. Statusänderung erkennen und im Monitor ausgeben
|
||||
// Wir führen diesen Block nur aus, wenn sich die gesehene Farbe geändert hat.
|
||||
if (neuerStatus != aktuellerStatus) {
|
||||
aktuellerStatus = neuerStatus; // Status aktualisieren
|
||||
|
||||
// TODO: Wenn der Status ROT ist -> Schreibe "Rote LED aktiv" in den Monitor und schalte die blaue LED sicherheitshalber aus (LOW).
|
||||
|
||||
// TODO: Wenn der Status BLAU ist -> Schreibe "Blaue LED aktiv" in den Monitor und schalte die rote LED aus.
|
||||
|
||||
// TODO: Wenn der Status KEINE ist -> Schreibe "Nichts erkannt" und schalte BEIDE LEDs aus.
|
||||
|
||||
}
|
||||
|
||||
// 4. Nicht-blockierendes Blinken der aktiven LED (ohne delay!)
|
||||
// Wir blinken nur, wenn eine Farbe erkannt wurde.
|
||||
if (aktuellerStatus != KEINE) {
|
||||
|
||||
// TODO: Überprüfe, ob die Zeit (blinkIntervall) abgelaufen ist. Nutze dafür millis() und letzterWechsel!
|
||||
// if (...) {
|
||||
|
||||
// TODO: Aktualisiere 'letzterWechsel' auf die aktuelle Zeit.
|
||||
|
||||
// TODO: Kehre den Zustand der Variable 'ledAn' um (aus true mach false, aus false mach true).
|
||||
|
||||
// TODO: Schalte jetzt je nach 'aktuellerStatus' die richtige LED ein oder aus (nutze dafür den Wert von 'ledAn').
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
// Kleine Pause am Ende der Schleife, damit der I2C-Bus nicht mit Anfragen überflutet wird
|
||||
delay(50);
|
||||
}
|
||||
Loading…
Reference in a new issue