Hoe kom je tot een programma die de mBot een lijn laat volgen? Bovenstaand programma doet dat heel goed!
Hoe download je het programma?
- Log in op de laptop met: .\mBlock / Welkom123 (alleen voor Revius-leerlingen)
- Ga naar: https://ide.mblock.cc/ en log daar in met je eigen account
- Ga nu naar: https://ide.mblock.cc/#/?cloudProjectId=4852616
- Kies Bestand > Opslaan op computer
- Open het gedownloade bestand. Het gedownloade bestand wordt nu geopend in het programma mBlock zelf. (En dat is belangrijk, want vanuit de browser lukt het vaak niet om het programma te uploaden naar je robot.)
- Upload het programma nu naar je Robot, zet je robot op de baan en druk op 'A' en test hem uit.
Je mBot rijdt nu rustig maar trefzeker over het circuit met een slome rondetijd van ongeveer 16 seconden. Kom op MAX, dat kan beter! Pas de snelheden V0, V1, V2, V3 en V4 zo aan dat je robot betere rondetijden haalt.
MAAR!!! Hoe sneller je Robot, hoe groter de kans op fouten. Echte whizkids voeren niet alleen de snelheid op, maar verbeteren het programma zelf.
Detecteert je sensor de lijn nu WEL of NIET?
Je wilt je robot zo instellen dat hij de lijn kan detecteren. Maar, hoe weet JIJ wat de robot ziet? Onderstaand hulpprogramma laat de LRED's op de achterkant van de CyberPi mee kleuren met de sensoren. Op het moment dat één van de 4 sensoren de lijn detecteert, kun je dat zien via de 4 achterlichten van de CyberPy.
Waarheidstabel
Onder de mBot2 zitten 4 lijnsensoren. Het is handig om de 4 sensoren te benoemen. Ik benoemde mijn sensoren, van achteren gezien van Links naar rechts: L2, L1, R1 en R2. De 4 sensoren breng je (op papier) onder in een zogenaamde waarheidstabel. Onder L2, L1, R1 en R2 zie je allemaal nullen en enen staan.
- Een 0 wil hier zeggen: de sensor detecteert WIT (er reflecteert veel licht van de witte ondergrond)
- Een 1 wil hier zeggen: de sensor detecteert ZWART (er reflecteert weinig licht van de zwarte ondergrond)
Elke sensor ziet WEL of NIET een lijn. Hierdoor kunnen er 16 situaties ontstaan.
De laatste regel van de tabel hierboven geeft het moment weer waarop alle detectoren 'zwart' waarnemen. Vandaar uitlezing 1 1 1 1. Met zwarte tape heb ik een startstreep/finish op het circuit aangebracht. Op de startstreep krijg je '1 1 1 1'. Vanaf nu is '1 1 1 1' dus een teken dat je over de startstreep/finish rijdt.
Ter vergelijk:
- de linker-mBot van de foto 'ziet' de lijn op L2 en L1, maar niet op R1 en R2 en moet daarom een bocht naar links gaan maken
- de middelste mBot van de foto 'ziet' de lijn op
L2en L1, R1 enR2en moet daarom rechtdoor blijven rijden - de rechter-mBot van de foto 'ziet' de lijn op L2, maar niet op L1, R1 en R2 en moet daarom een scherpere bocht naar links gaan maken
Een beetje spelen: voordat mBot2 start met lijnvolgen geeft hij eerst wat signalen af zoals rode LED's.
Baan volgen met rondetijd-meting
Op mijn circuit heb ik met zwarte tape een start/finish-streep gemaakt:
- De mBot2 start ruim voor de startstreep
- Bij 1e detectie van de startstreep (alle sensoren detecteren zwart) start de tijdklok
- Na elke ronde bij detectie van de startstreep wordt de rondetijd genoteerd rondetijd worden genoteerd in een tabel en wordt de tijdklok op nul gezet zodat hij de tijd van de volgende ronde kan gaan meten.
- Na 3 volle ronden stopt de mBot bij de finish, zie foto!
Dit programma staat hier: https://ide.mblock.cc/share.html?3997841&authuser=0 (rondetijden ca 13 sec)
De video staat hier: https://www.youtube.com/watch?v=sQZHZYOA0Ns
Verbeterd programma met snellere rondetijden (ca 8,2 sec): https://ide.mblock.cc/#/?cloudProjectId=4028082