Skip to Content
RobotikCode refaktorieren und auslagern

Wenn Sie sich Ihren Roboter-Code anschauen, werden Sie feststellen: Er ist ziemlich lang geworden! Über 70 Zeilen Code in einer einzigen Datei. Das macht es schwierig:

  • Den Überblick zu behalten
  • Fehler zu finden
  • Code wiederzuverwenden

Die Lösung: Funktionen und separate Dateien. Schauen wir uns an, wie wir den Code übersichtlicher machen können.

Schritt 1: Logik in Funktionen auslagern

Der Linetracker-Code nimmt viel Platz ein und könnte eine eigene Funktion sein:

def folge_linie(FULL=100, SLOW=0): """Folgt einem schwarzen Fleck am Boden (links herum).""" # Helligkeitssensoren auslesen left = maqueen.read_patrol(0) right = maqueen.read_patrol(1) # Tracker-Logik (0 = dunkel/schwarz, 1 = hell/weiss) # Der Roboter fährt links herum um den schwarzen Fleck if left == 0 and right == 1: # Perfekt! Linker Sensor auf schwarz → Geradeaus maqueen.set_motor(0, FULL) maqueen.set_motor(1, FULL) elif left == 0 and right == 0: # Beide auf schwarz → zu weit links! Nach rechts drehen maqueen.set_motor(0, FULL) maqueen.set_motor(1, SLOW) elif left == 1 and right == 1: # Beide auf hell → zu weit rechts! Nach links drehen maqueen.set_motor(0, SLOW) maqueen.set_motor(1, FULL) # left == 1 and right == 0 → ignorieren, einfach weiterfahren

Auch die Bewegungsbefehle könnten wir vereinfachen:

def fahre(nachricht, FULL=100): """Verarbeitet Bewegungsbefehle.""" if nachricht == "MOVE:FF": maqueen.set_motor(0, FULL) maqueen.set_motor(1, FULL) elif nachricht == "MOVE:LT": maqueen.set_motor(0, -FULL) maqueen.set_motor(1, FULL) elif nachricht == "MOVE:RT": maqueen.set_motor(0, FULL) maqueen.set_motor(1, -FULL) elif nachricht == "MOVE:00": maqueen.motor_stop_all()

Schritt 2: Funktionen in eigene Dateien auslagern

Jetzt wird es richtig elegant! Wir können die Funktionen in eigene Dateien packen:

Datei: linetracker.py

import maqueen def folge_linie(FULL=100, SLOW=0): """Folgt einem schwarzen Fleck am Boden (links herum).""" left = maqueen.read_patrol(0) right = maqueen.read_patrol(1) # Tracker-Logik (0 = dunkel/schwarz, 1 = hell/weiss) if left == 0 and right == 1: # Perfekt! Linker Sensor auf schwarz → Geradeaus maqueen.set_motor(0, FULL) maqueen.set_motor(1, FULL) elif left == 0 and right == 0: # Beide auf schwarz → zu weit links! Nach rechts drehen maqueen.set_motor(0, FULL) maqueen.set_motor(1, SLOW) elif left == 1 and right == 1: # Beide auf hell → zu weit rechts! Nach links drehen maqueen.set_motor(0, SLOW) maqueen.set_motor(1, FULL) # left == 1 and right == 0 → ignorieren, einfach weiterfahren

Datei: bewegung.py

import maqueen def fahre(nachricht, FULL=100): """Verarbeitet Bewegungsbefehle.""" if nachricht == "MOVE:FF": maqueen.set_motor(0, FULL) maqueen.set_motor(1, FULL) elif nachricht == "MOVE:LT": maqueen.set_motor(0, -FULL) maqueen.set_motor(1, FULL) elif nachricht == "MOVE:RT": maqueen.set_motor(0, FULL) maqueen.set_motor(1, -FULL) elif nachricht == "MOVE:00": maqueen.motor_stop_all()

Schritt 3: Refaktoriertes Hauptprogramm

Jetzt sieht unser Hauptprogramm viel übersichtlicher aus:

from microbit import * import maqueen import radio from linetracker import folge_linie from bewegung import fahre # Modi definieren MODE_OFF = "MODE:OFF" MODE_FERNSTEUERUNG = "MODE:FERNSTEUERUNG" MODE_TRACKER = "MODE:TRACKER" # Geschwindigkeiten FULL = 100 SLOW = 0 # 0 für scharfe Kurven, oder 50 für sanftere Kurven # Radio konfigurieren radio.config(group=42) radio.on() # Startzustand mode = MODE_FERNSTEUERUNG while mode != MODE_OFF: # Funknachrichten empfangen nachricht = radio.receive() # Moduswechsel if nachricht == MODE_OFF: mode = MODE_OFF elif nachricht == MODE_FERNSTEUERUNG: mode = MODE_FERNSTEUERUNG elif nachricht == MODE_TRACKER: mode = MODE_TRACKER # Je nach Modus handeln if mode == MODE_FERNSTEUERUNG: display.show("F") fahre(nachricht, FULL) elif mode == MODE_TRACKER: display.show("T") # Linie folgen folge_linie(FULL, SLOW) # Programm wird beendet maqueen.motor_stop_all() display.show("0")

Die Vorteile

Sehen Sie den Unterschied? Das Hauptprogramm ist von über 70 Zeilen auf ca. 40 Zeilen geschrumpft und viel lesbarer:

Übersichtlicher: Die Hauptlogik ist klar erkennbar ✅ Wiederverwendbar: Die Funktionen können Sie in anderen Projekten nutzen ✅ Einfacher zu testen: Sie können jede Funktion einzeln testen ✅ Leichter zu erweitern: Neue Modi hinzufügen wird einfacher ✅ Teamarbeit möglich: Verschiedene Personen können an verschiedenen Dateien arbeiten

Mehr dazu

In der Linienfinder-Lektion finden Sie weitere Details zum Code-Refactoring und wie man Code in mehrere Dateien aufteilt.

Nächste Schritte:

  • Experimentieren Sie mit weiteren Modi (z.B. “Hindernis-Ausweichen”)
  • Kombinieren Sie mehrere Sensoren (Distanz + Helligkeit)
  • Lagern Sie noch mehr Code in eigene Funktionen und Dateien aus
  • Bauen Sie eine Bibliothek von wiederverwendbaren Funktionen für Ihre Projekte
Last updated on