Beispielcode (MicroPython für OpenMV)
# GoMaker × Adafruit – Objekterkennung per Farbbereich (OpenMV Cam H7, SKU: 4478)
# Buzzer: 5V Breadboard friendly (SKU: 1536) an P0
# Hinweis: Schwellwerte (thresholds) mit dem Threshold Editor kalibrieren!
import sensor, image, time
import pyb
# --- Hardware ---
BUZZER_PIN = 'P0'
buzzer = pyb.Pin(BUZZER_PIN, pyb.Pin.OUT_PP)
buzzer.low()
# --- Kamera vorbereiten ---
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA) # 320x240, ausreichend schnell
sensor.skip_frames(time=1000)
sensor.set_auto_gain(False) # Für Farberkennung fixieren
sensor.set_auto_whitebal(False)
clock = time.clock()
# --- Farbschwellen (LAB) anpassen! Beispiel: Rot-Objekt ---
# Mit Tools -> Threshold Editor ermitteln und hier einsetzen.
# Format: (L_min, L_max, A_min, A_max, B_min, B_max)
RED_THRESHOLDS = [(30, 80, 20, 127, -10, 127)]
# Mindestgröße (Pixel) für gültige Blobs
MIN_PIXELS = 800
def beep(ms=120, reps=2, gap=80):
for _ in range(reps):
buzzer.high()
pyb.delay(ms)
buzzer.low()
pyb.delay(gap)
while True:
clock.tick()
img = sensor.snapshot()
# Blobs im Rot-Bereich suchen
blobs = img.find_blobs(RED_THRESHOLDS, pixels_threshold=MIN_PIXELS, area_threshold=MIN_PIXELS//2, merge=True)
if blobs:
# Größten Blob wählen
b = max(blobs, key=lambda x: x.pixels())
# Rechteck und Mittelpunkt markieren (Debug auf dem IDE-Preview)
img.draw_rectangle(b.rect(), color=(255, 0, 0))
img.draw_cross(b.cx(), b.cy(), color=(255, 0, 0))
# Akustisches Feedback
beep(ms=80, reps=1, gap=0)
# Optional: FPS im Terminal
# print("FPS:", clock.fps())
Kalibrierung: Passe RED_THRESHOLDS
an dein Objekt an (ggf. für Blau/Gelb weitere
Bereiche ergänzen). Beleuchtung hat großen Einfluss – konstantes Licht macht die Erkennung stabil.