Warning: file_exists(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s): (/home/patriyt191/domains/robotmc.be/:/home/patriyt191/domains/include/:/etc/pki/tls/certs:/tmp:/var/tmp:/usr/local/lib/php/:/usr/local/php81/lib/php/:/usr/local/php0/lib/php/) in /home/patriyt191/domains/robotmc.be/public_html/wiki/includes/shell/CommandFactory.php on line 119

Warning: file_exists(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s): (/home/patriyt191/domains/robotmc.be/:/home/patriyt191/domains/include/:/etc/pki/tls/certs:/tmp:/var/tmp:/usr/local/lib/php/:/usr/local/php81/lib/php/:/usr/local/php0/lib/php/) in /home/patriyt191/domains/robotmc.be/public_html/wiki/includes/shell/CommandFactory.php on line 119

Warning: file_exists(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s): (/home/patriyt191/domains/robotmc.be/:/home/patriyt191/domains/include/:/etc/pki/tls/certs:/tmp:/var/tmp:/usr/local/lib/php/:/usr/local/php81/lib/php/:/usr/local/php0/lib/php/) in /home/patriyt191/domains/robotmc.be/public_html/wiki/includes/shell/CommandFactory.php on line 119

Warning: file_exists(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s): (/home/patriyt191/domains/robotmc.be/:/home/patriyt191/domains/include/:/etc/pki/tls/certs:/tmp:/var/tmp:/usr/local/lib/php/:/usr/local/php81/lib/php/:/usr/local/php0/lib/php/) in /home/patriyt191/domains/robotmc.be/public_html/wiki/includes/shell/CommandFactory.php on line 119
MaqueenPlus programmeren in Micropython - RobotMC.be

MaqueenPlus programmeren in Micropython

Uit RobotMC.be
Versie door Ewoud (overleg | bijdragen) op 6 jun 2022 om 17:20 (Artikel gestart over programmeren van de Maqueen Plus in MicroPython)
Ga naar: navigatie, zoeken

Installatie

Een eenvoudige optie om de micro:bit/MaqueenPlus in MicroPython te programmeren is de Mu editor. Dit artikel beschrijft in het Nederlands hoe je deze kunt installeren. De highlights om te starten:

  • Download de Mu-editor van de website. https://codewith.mu/en/download
  • Start het gedownloade installatieprogramma van de Mu-editor.
  • Indien een melding van Microsoft Defender Smartscreen verschijnt dat de app een risico vormt, klik op "Meer informatie". Dan verschijnt er een tweede knop aan de onderkant van het venster met de tekst "Toch uitvoeren". Klik op die tweede knop.
  • Accepteer de voorwaarden en klik op "Install".


Library installeren op de micro:bit

Om de functies van de MaqueenPlus te ontsluiten is er een library te vinden op GitHub. Het bestand lib-robot-maqueen.py kun je van hier downloaden. Kopieer dit bestand met behulp van de Files-functie in de Mu editor naar de micro:bit, dit werkt als volgt:

  • Plaats het bestand lib_robot_maqueen.py in de mu_code directory in je profielmap. Deze directory is aangemaakt tijdens de installatie van Mu. De directory kun je vinden onder C:\Gebruikers\[gebruikersnaam]\mu_code.
  • Open de Mu-editor
  • Klik op "Mode" in de menubalk. Klik daarna op "BBC micro:bit".
  • Verbind de micro:bit aan je computer met de Micro-USB kabel.
  • Klik op "New" om een nieuwe file te creeren.
  • Flash het lege programma naar de microbit met de "Flash" knop in de menubalk. (Dit voorziet de micro:bit van MicroPython firmware.)
  • Reset de micro:bit met de reset button.
  • Klik op de "Files" knop.
  • Sleep het bestand lib_robot_maqueen.py van het rechterpaneel "Files on your computer" naar het linkerpaneel "Files on your micro:bit".
  • Nadat het bestand is overgezet, klik weer op de "Files" knop om terug te keren naar programmeermodus.

Daarna kun je in de Mu editor je python script schrijven, wat je met de Flash-functie op de micro:bit plaatst.


Voorbeeldprogramma's

Om je op weg te helpen met het programmeren in MicroPython volgen hier wat voorbeelden:


Gebruik van de RGB LEDs

import microbit
import lib_robot_maqueen as mqn
import time

mq = mqn.MaqueenPlus()

mq.RGBLight(mq.RGB_L, mq.RED)
mq.RGBLight(mq.RGB_R, mq.BLUE)


Aansturen van de motoren

Er staan twee functie ter beschikking om de motoren aan te sturen. De move functie geeft de mogelijke om vooruit, achteruit, linksaf en rechtsaf te rijden. Met de motorControl functie kunnen de motoren individueel worden aangestuurd.

import microbit
import lib_robot_maqueen as mqn
import time

mq = mqn.MaqueenPlus()


mq.move("F", 70)
time.sleep(2) #wait for 2s
mq.move("R", 70)
time.sleep(2) #wait for 2s
mq.move("L", 70)
time.sleep(2) #wait for 2s
mq.stop()


Gebruik van de ultrasone afstandssensor

Dit programma gebruikt de meegeleverde URM10 ultrasone sensor om van de MaqueenPlus een obstakelvermijdende robot te maken.

import microbit
import lib_robot_maqueen as mqn
import time

mq = mqn.MaqueenPlus()

def turn():
    mq.stop()
    time.sleep(0.2)
    mq.move("B", 60)
    time.sleep(0.4)
    mq.stop()
    time.sleep(0.2)
    mq.move("R", 60)
    time.sleep(0.8)
    mq.stop()
    time.sleep(0.2)

while True:
    time.sleep(0.1)
    dist = mq.ultrasonic()
    print((dist,))
    if (dist > 0.3):
        mq.move("F", 60)
    else:
        turn()


Gebruik van de lijnvolgsensor

Een lijnvolgprogramma in MicroPython.

import microbit
import lib_robot_maqueen as mqn
import time

mq = mqn.MaqueenPlus()

while True:
    Line = mq.getLine()
    MotL = 30
    MotR = 30
    if Line["L1"] == 0 and Line["L2"] == 0:
        if Line["R1"] == 1 and Line["R2"] == 0:
            MotL = 80
            MotR = 20
        elif Line["R1"] == 1 and Line["R2"] == 1:
            MotL = 140
            MotR = 20
        elif Line["R1"] == 0 and Line["R2"] == 1:
            MotL = 255
            MotR = 15
    elif Line["R1"] == 0 and Line["R2"] == 0:
        if Line["L1"] == 1 and Line["L2"] == 0:
            MotR = 80
            MotL = 20
        elif Line["L1"] == 1 and Line["L2"] == 1:
            MotR = 140
            MotL = 20
        elif Line["L1"] == 0 and Line["L2"] == 1:
            MotR = 255
            MotL = 15
    print((Line["L2"], Line["L1"], Line["R1"], Line["R2"]))
    mq.motorControl(mq.MT_L, 1, MotL)
    mq.motorControl(mq.MT_R, 1, MotR)
    time.sleep(0.05)


Geheugengebruik onder MicroPython

Helaas neemt de MicroPython firmware en een library (zelfs een kleine) een flink deel van het geheugen in beslag op de micro:bit waardoor je programma al snel te groot wordt. Je kunt de resterende vrije ruimte opvragen. Start de REPL-functie in Mu en geef de volgende commando's:

>>> import gc
>>> gc.collect()
>>> gc.mem_free()

Een oplossing voor het geheugentekort is aanschaf van een micro:bit V2 in plaats van een V1. De micro:bit V1 heeft ca 9k vrij lees/schrijf geheugen, de V2 heeft 63k vrij geheugen. Daarnaast heeft de V2 dubbel zoveel flash-geheugen als de V1. Flink meer mogelijkheden dus.