🤖 XWK BOT PROGRAMMIEREN

Ohne ein Programm zu installieren oder den XWK-Bot mit einem Kabel zu verbinden kannst du direkt den XWK-Bot über den eingebauten Webeditor programmieren. So kannst du deinen Roboter sogar mit einem iPad programmieren!

Dazu musst du als erstes den XWK-Bot mit deinem WLAN verbinden:

📶 XWK-BOT WLAN KONFIGURATION

🌐 Webeditor öffnen

Web editor

🐍 Programmieren in Micropython

Vielleicht hast du schon mal visuell programmiert z.B. mit Scratch wo man grafische Blöcke mit bestimmten Funktionen zusammenbaut. Das ist zwar recht nett, hat aber auch Nachteile. Z.B. wenn du dein Programm einem Freund schicken möchtest, oder dir von ChatGPT oder einer anderen KI helfen lassen möchtest. Hierfür ist Text einfach am praktischsten, weshalb wir den XWK-Bot in einer richtigen Programmiersprache wie die Profis als Text programmieren. Das kann dir auch später mal sehr nützlich sein.

Für deinen Roboter verwenden wir die Programmiersprache Micropython. Das ist aktuell eine der einfachsten und meistverwendeten Programmiersprachen.

🎯 Dein erstes Programm

Klicke links in der Seitenleiste auf “NEW FILE” und nenne sie “hello.py”. Deine Programme müssen immer die Endung “.py” haben, damit der Roboter sie ausführen kann!

Weditor new file

Hier ein super-einfaches Programm.

Schreibe einfach folgenden Text in das Hauptfenster des Webeditors:

import bot
    
    bot.write('Hello world!')
Hello world Programm

Klicke nun oben auf “SAVE + RUN”. Am Display des Bots sollte nun “Hello world” erscheinen. Hat’s funktioniert? Bravo, du hast erfolgreich dein erstes Programm geschrieben!

🔍 Fehlersuche

Wenn es nicht gleich funktioniert hat, sei nicht traurig. Fehler passieren, das ist ganz normal. Man muss sich nur zu helfen wissen :-)

  1. Schau genau ob du dich irgendwo vertippt hast. Beim Programmieren musst du sehr genau sein und jedes Zeichen richtig eingeben wie z.B. Klammern, Anführungszeichen usw.

  2. Unten hast du die Konsole wo dir Micropython Details über das Problem verrät. Hier ein Beispiel wo ich die falschen Anführungszeichen verwendet habe:

Syntax error
  1. Teile dein Programm über Kopieren und Einfügen mit ein KI-Tool wie z.B. ChatGPT. KI Tools sind hervorragend um Programmier-Fehler zu finden. KI-Tools sind auch geniale Lehrer und können dir genau erklären wie Programme funktionieren oder können dir helfen dein Traum-Programm zu schreiben!

  2. Wenn dein Bot nicht richtig funktioniert, oder der Web-Editor nicht reagiert schalte den Bot ein und aus. Wenn es dann immer noch nicht klappt versuche den Selbsttest auszuführen bzw. die Fehlersuche aus der Zusammenbau-Anleitung zu wiederholen.

👋 Hello Klemm

Ändere nun dein Programm. Statt “world” schreibe deinen Namen!

import bot
    
    bot.write('Hello Klemm!')

Klicke dann wieder “SAVE + RUN”. Was passiert? Wirst du von deinem Bot persönlich begrüsst? Gratuliere!

Sehen wir uns nun das Programm genauer an. Ich habe jetzt “Kommentare” hinzugefügt. Alles was bei hinter einer Raute “#” steht wird von der Programmiersprache ignoriert. IDeal für Notizen. Ich werde von nun an Kommentare verwenden um den Programm-Code zu erklären. Du musst diese Kommentare nicht unbedingt abtippen.

# Diese Zeile musst du am Anfang von jedem XWK-Bot Programm schreiben:
    import bot                      # Lade die XWK-Bot Funktionen
    
    # Dann kannst du dem Bot sagen was er tun soll:
    bot.write('Hello Klemm!')       # Schreibe einen Text auf das Bot-Display

🏃 Achtung, fertig, los

Na, hast du Lust den Bot ein Stück fahren zu lassen? Probiere eine Motor-Funktionen aus!

Als erstes erstelle eine neues Programm. Klicke links in der Seitenleiste auf “NEW FILE” und nenne sie z.B. “motor.py”. Wenn du eine neue Idee hast erstelle immer ein neues Programm mit einem guten Namen, sodass du dich später erinnern kannst was es tut.

import bot
    
    bot.step_forward()              # Fahre einen Schritt nach vorne

Klicke immer “SAVE + RUN” wenn du dein Programm verändert hast und ausprobieren möchtest, ich werde das später nicht immer extra dazuschreiben.

Hinweis: Der XWK-Bot Version 1 ist nicht sehr gut darin geradeaus zu fahren wenn das drehbare Hinterrad schief steht.

💃 Let’s dance

Wenn du verschiedene Motor-Funktionen kombinierst kannst du deinen Roboter tanzen lassen:

import bot
    
    bot.step_forward()              # Fahre einen Schritt nach vorne
    bot.step_backward()             # Fahre eine Schritt nach hinten
    bot.step_left()                 # Drehe dich nach links
    bot.step_right()                # Drehe dich nach rechts

Hinweis: Auf dem XWK-Bot Schummelzettel findest du alle Funktionen des Bots und wie man sie verwendet!

😴 Pause, gute Nacht und schlafe gut!

Vielleicht möchtest du, dass dein Bot Pause zwischen den Dance-Moves macht?

Bei dieser Funktion kannst du in die Klammer dazuschreiben wie viele Sekunden der Bot pause machen soll. So etwas nennt man einen Parameter.

import bot
    
    bot.step_forward()
    bot.sleep(1)                    # "Schlafe" - mach eine Sekunde Pause
    bot.step_backward()
    bot.sleep(0.5)                  # Mach eine halbe Sekunde Pause, Achtung du musst einen Punkt statt einem Komma verwenden!
    bot.step_left()

💡 Light-Show

Der Bot hat eine “RGB”-Leuchtdiode eingebaut. “RGB” steht für Rot-Grün-Blau. Aus diesen drei Grundfarben kann man alle Farben mischen. Das Funktioniert so: für jede Farbe gibst du eine Zahl von 0 bis 255 an. 0 = ganz dunkel, 255 = ganz hell. Die erste Zahl steht für rot, die zweite für grün und die dritte für blau.

Also z.B. für ein helles Rot schreibst du (255, 0, 0). Für ein dunkles Grün schreibst du z.B. (0, 10, 0).

Du kannst auch folgende eingebaute Farbnamen verwenden:

# Farbnamen        Rot  Grün  Blau (RGB)
    bot.BLACK       # (0,   0,    0)
    bot.RED         # (255, 0,    0)
    bot.GREEN       # (0,   255,  0)
    bot.BLUE        # (0,   0,    255)
    bot.CYAN        # (0,   255,  255)
    bot.YELLOW      # (255, 255,  0)
    bot.MAGENTA     # (255, 0,    255)
    bot.WHITE       # (255, 255,  255)
    bot.GREY        # (128, 128,  128)

Was noch zu beachten ist: die LED leuchtet dauerhaft in der Farbe die du einstellst. Willst du sie auschalten verwendest du “bot.BLACK”. Willst du Blink-Effekte erzeugen verwende dazwischen “sleep()”.

Erfinde deine eigene Light-Show!

import bot
    
    bot.rgb_led(bot.RED)            # Leuchte rot
    bot.sleep(0.5)                  # Warte eine halbe Sekunde
    bot.rgb_led((0, 10, 0))         # Leuchte dunkelgrün
    bot.sleep(0.5)
    bot.rgb_led(bot.BLACK)          # Schalte die LED aus

🔊 Make some Noise!

Tanzen kann der Bot schon, aber es fehlt noch der Sound!

Mit der “beep()” Funktion kann dein Bot Töne erzeugen. Du kannst als Parameter in der Klammer die Tonhöhe in Hertz angeben.

Hier ein paar Töne und deren Frequenzen in Hertz (Hz):

Ton | Frequenz (Hz)
    ----|--------------
    C   | 262
    D   | 294
    E   | 330
    F   | 349
    G   | 392
    A   | 440
    B   | 494
    C   | 523

Komponiere einen coolen Track! Wenn du Pausen einbauen willst verwende die “sleep()” Funktion von oben.

import bot
    
    bot.beep()           # Piepse ohne bestimmte Tonhöhe
    bot.sleep(1)         # Pause
    
    bot.beep(262)        # Note tiefes "C"
    bot.beep(523)        # Note hohes "C"
    bot.beep(262)
    bot.beep(523)
    bot.sleep(0.25)      # Kurze Pause 1/4 Sekunde
    bot.beep(262)
    bot.beep(523)
    bot.beep(440)        # Note "B"
    bot.beep(523)

🔄 Dauerschleife

Falls du möchtest dass dein Sound-Track länger dauert musst du ganz schön viele Funktionen hintereinander schreiben, oder?

Programmierer sind von Natur aus faul ;-) und haben sich viele Tricks einfallen lassen. Z.B. die “Schleife” um Funktionen zu wiederholen!

Probiere es aus!

import bot
    
    while True:              # Unendliche Wiederholung
        bot.beep(262)        # Achtung: hier musst du vorne 4 Leerzeichen hinschreiben (Oder die "Tab" Taste drücken)
        bot.beep(523)        # Auch hier mit 4 Leerzeichen einrücken

Was passiert? Richtig, der Bot spielt nun unendlich lange die beiden Töne in einer Schleife ab. Praktisch, oder? Das Programm läuft nun bis in alle Ewigkeit (naja, eigentlich bis die Batterien leer sind). Wenn du es stoppen möchtest klicke im Webeditor auf “STOP/RESET”, oder schalte den Bot aus und wieder ein. Dann musst du kurz warten bis der Webeditor wieder einsatzbereit ist.

Woher weiß der Computer was du alles wiederholen möchtest? In der Programmiersprache “Python” funktioniert das über die Einrückung mit Leerzeichen. Sowas nennt man einen “Block”. Das erkennst du am “:” Doppelpunkt am Ende der Zeile “while True:”, und dann daran dass alle Funktionen mit 4 Leerzeichen eingerückt sind.

🎭 Combination rules the nation

Jetzt hast du schon einiges über Programmieren entdeckt. Wirklich cool und kreativ wird es wenn du verschiedene Funktionen kombinierst. Kombiniere Tanz, Musik und Licht zur ultimativen Bot-Disko!

Hier ein Beispiel zur Inspiration:

import bot
    
    while True:                 # Unendliche Wiederholung
        bot.rgb_led(bot.BLUE)   # LED blau
        bot.beep(262)           # Tiefes C
        bot.rgb_led(bot.RED)    # LED rot
        bot.beep(523)           # Hohes C
        bot.step_left()         # Drehe dich nach links
    
        bot.rgb_led(bot.GREEN)  # LED grün
        bot.beep(262)           # Tiefes C
        bot.rgb_led(bot.YELLOW) # LED gelb
        bot.beep(523)           # Hohes C
        bot.step_right()        # Drehe dich nach rechts

🦇 Fledermausohren

Nun wollen wir den Ultraschall-Sensor verwenden. Das ist vorne die kleine Platine mit zwei “Augen”. Diese sind aber ein Lautsprecher und ein Mikrofon. Der Senor funktioniert wie das Gehör einer Fledermaus. Er sendet einen Ton aus, der so hoch ist, dass du ihn nicht hören kannst. Dann horcht er wie lange es dauert bis der Schall zurückgeworfen wird. Also z.B. wenn der Bot 30cm von einer Wand entfernt ist, dauert es eine gewisse Zeit bis die Schallwelle die Wand erreicht und von dort zurückgeworfen wird. Aus dieser Zeit berechnet der Ultraschall-Sensor die Entfernung in cm.

Probieren wir das aus, indem wir wiederholt die Entfernung am Bildschirm ausgeben:

import bot
    
    while True:                     # Unendliche Wiederholung
        bot.write(bot.distance())   # Schreibe die aktuell gemessene Entfernung in cm auf den Bildschirm
        bot.sleep(1)                # Warte ein bisschen 

Cool, du hast jetzt ein magisches Maßband, das dir die Entfernung zu Gegenständen sagt! Visiere mit dem Ultraschall-Sensor verschiedene Dinge an und lese am Bildschirm ab wie weit sie entfernt sind.

🧠 Wenn ich nur intelligent waere…

Hey, da wir nun wissen wie weit Dinge entfernt sind, könnten wir den Bot herumfahren lassen. Wenn er nahe an Gegenstände herankommt, könnte er in eine andere Richtung fahren!

Ich stelle mir das so vor:

Hast du’s gemerkt? Da ist ein “wenn” drinnen! Das nennt man beim Programmieren eine “Bedingung”. Also wenn irgendwas so ist, dann mach dass, ansonsten mach was anderes. Bedingungen geben deinen Programmen Superkräfte weil du damit intelligent auf Situationen reagieren kannst!

Erstelle wieder eine neue Programmdatei:

import bot
    
    while True:                     # Unendliche Wiederholung
        if bot.distance() > 50:     # Wenn Gegenstände weiter als 50cm entfernt sind..
            bot.forward()           # ...fahre geradeaus ohne zu stoppen
        else:                       # Ansonsten... (also wenn ein Gegenstand weniger als 50cm entfernt ist)
            bot.turn_left()         # ...drehe dich nach links 

Starte das Programm und beobachte das Verhalten! Ist das nicht faszinierend, dass der Bot mit ein paar Zeilen Programmcode schon auf seine Umwelt reagieren kann?

Wenn du Fehlermeldengen in der Konsole unten bekommst achte darauf dass du die Einrückungen im Programmcode sauber machst, und dass alle Sonderzeichen wie Doppelpunkte, Kleiner-Zeichen usw richtig geschrieben sind. Falls es dann immer noch nicht klappt lies oben das Kapitel zur Fehlersuche.

Hast du Ideen wie man das Programm verbessern könnte?

👁️ Infrarot-Sensoren

Vorne hat der Bot zwei Infrarot-Sensoren. Diese funktionieren ähnlich wie der Ultraschall-Sensor, aber nur mit Licht. Eine LED strahlt wie eine Taschenlampe Licht aus, die zweite LED ist das Auge dass hell und dunkel erkennen kann. Leider kannst du das Licht nicht sehen, denn es ist unsichtbares Infrarot-Licht. In der Aufbau-Anleitung hast gelernt wie man die Infrarot-Sensoren richtig einstellt.

Zum Programmieren sagt dir ein Infrarotsensor einfach nur ob er hell oder dunkel sieht.

Testprogramm:

import bot
    
    while True:                         # Unendliche Wiederholung
        if bot.ir_is_bright_left():     # Wenn der linke Infrarot-Sensor hell sieht...
            bot.rgb_led(bot.YELLOW)     # ...lasse die LED gelb leuchten ("hell")
        else:                           # Andernfalls... (also Infrarot-Sensor sieht dunkel)
            bot.rgb_led(bot.BLUE)       # ...lasse die LED blau leuchten ("dunkel")

Starte das Programm und zeige dem linken Infrarot-Sensor verschiedene Materialen. Er sollte hell von dunkel unterscheiden können.

🛤️ Folge der Linie

Damit können wir nun einen Linien-Verfolger bauen! Klebe auf einen hellen Boden eine Spur aus schwarzem Isolierband. Achte darauf, dass du nicht zu enge Kurven klebst, und dass das Isolierband schön faltenfrei, flach am Boden klebt. Dann prüfe ob der Sensor gut zwischen dem (hellen) Boden und dem (dunklen) Isolierband unterscheiden kann. (Siehe Aufbauanleitung - Infrarotsensor-Einstellung)

Die Idee:

import bot
    
    while True:                         # Unendliche Wiederholung
        if bot.ir_is_dark_left():       # Wenn der linke Infrarot-Sensor dunkel erkennt...
            bot.turn_left()             # ...drehe dich nach links
        elif bot.ir_is_dark_right():    # aber wenn der rechte Infrarot-Sensor dunkel erkennt...
            bot.turn_right()            # ...drehe dich nach rechts
        else:                           # Ansonsten... (also wenn beide Sensoren "hell" sehen)
            bot.forward()               # ... fahre geradeaus

Funktioniert es? Bravo! Du hast jetze schon eine ganze Menge über Programmieren gelernt!

Wenn du neugierig auf mehr bist: - Erfinde deine eigenen Programme! - Sieh dir den XWK-Bot Schummelzettel an - Schau dir den Programm-Code vom Bot an (Webeditor -> “MORE” -> “lib” -> “bot.py”) - Lass dir von der AI mehr erzählen

Ich hoffe es hat dir viel Spaß gemacht!