Benutzer-Werkzeuge

Webseiten-Werkzeuge


hello_mbot_programmorganisation

Dies ist eine alte Version des Dokuments!


Hello mBot Programmorganisation

Eine professionelle Programmstruktur für den Arduino (mBot) sollte modular, erweiterbar und gut wartbar sein. Ich verwende hier eine Finite-State-Machine (FSM), um verschiedene Abläufe sauber steuern zu können. Die Steuerung erfolgt hier mit Hilfe der Infrarot-Fernbedienung. Alternativ kann man natürlich auch Bluetooth verwenden. Dies würde auch komplexere Abläufe ermöglichen, da man beispielsweise einen Rechner mit einem Python-Programm als Steuerung verwenden könnte.

Vorteile einer geordneten Programmstruktur:

  • Modularität: Jeder Modus ist in einer eigenen Funktion gekapselt.
  • Erweiterbarkeit: Neue Modi oder Befehle können problemlos hinzugefügt werden.
  • Wartbarkeit: Durch die klare Zustandsaufteilung ist der Code auch bei Änderungen leicht nachvollziehbar.
  • Flexibilität: Unterschiedliche Abläufe (wie Kalibrierung, Labyrinth oder Stopp) können unabhängig voneinander optimiert und getestet werden.

FIXME ABSCHNITT SCHREIBEN 8-)

enum State {
  STATE_IDLE,
  STATE_CALIBRATION,
  STATE_LABYRINTH,
  STATE_STOP
};

State currentState = STATE_IDLE;

void setup() {
  // Initialisierung z. B. von IR-Empfänger, Serial, etc.
}

void loop() {
  byte cmd = readIR(); // Funktion, die IR-Befehle einliest

  // Befehl verarbeiten und ggf. Zustand wechseln
  if (cmd != NO_CMD) {
    processCommand(cmd);
  }

  // Je nach aktuellem Zustand die entsprechende Routine ausführen
  switch (currentState) {
    case STATE_IDLE:
      idleRoutine();
      break;
    case STATE_CALIBRATION:
      calibrationRoutine();
      break;
    case STATE_LABYRINTH:
      labyrinthRoutine();
      break;
    case STATE_STOP:
      stopRoutine();
      break;
  }
}

void processCommand(byte cmd) {
  // Beispiel: Wenn 'f' (als Byte) empfangen wird, dann Stop-Zustand setzen
  if (cmd == CMD_STOP) {
    currentState = STATE_STOP;
  }
  // Hier können weitere Befehle verarbeitet werden,
  // z. B. Übergang in den Kalibrierungs- oder Labyrinthmodus.
}

// Implementierung der einzelnen Routinen
hello_mbot_programmorganisation.1739645089.txt.gz · Zuletzt geändert: 2025/02/15 18:44 von torsten.roehl