Lijnvolgen
Met twee IR-sensoren en twee motoren volgt je robot een zwarte lijn. Je sluit ze aan zoals bij Analoge IR-sensor en DC-motor: de sensoren op A0 (links) en A1 (rechts), de motoren op het motor shield.
Hoe werkt lijnvolgen?
De truc: laat de motoren reageren op wat de sensoren zien. Je robot komt de tegels hieronder tegen.

Denk eerst zelf na
- Beide sensoren zien wit (lijn zit tussen de sensoren in). Wat moeten de motoren doen?
- Alleen de linkersensor ziet zwart. Welke motor moet bijsturen?
- Alleen de rechtersensor ziet zwart. En nu?
- Beide sensoren zien zwart. Wat betekent dat?
Tip
Stel je voor dat de robot over de lijn heen rijdt, met de lijn tussen zijn twee sensoren. Als hij naar links afdwaalt, ziet de rechtersensor de lijn. Hij moet dus terug naar rechts. Dat doe je door de linker motor harder te laten draaien dan de rechter.
Antwoord
- Beide wit: rechtdoor. Allebei de motoren even hard vooruit.
- Alleen links zwart: de robot is naar rechts afgedwaald. Stuur naar links: rechter motor harder, linker motor zachter (of stil).
- Alleen rechts zwart: omgekeerd. Linker motor harder, rechter motor zachter.
- Beide zwart: meestal een kruising of het einde van het parcours. Wat je dan doet is een keuze: rechtdoor, stoppen of een kant op draaien.
Code
Hieronder staat een werkende basis. De if-takken voor links en rechts bijsturen zijn nog leeg — die ga je zelf invullen.
Voorbeeld
from leaphymicropython.sensors.linesensor import AnalogIR
from leaphymicropython.actuators.dcmotor import DCMotors
from time import sleep
motoren = DCMotors()
motor_a = motoren.motor_a
motor_b = motoren.motor_b
a0 = AnalogIR("A0", 2500) # linker sensor
a1 = AnalogIR("A1", 2500) # rechter sensor
while True:
left = a0.black_or_white()
right = a1.black_or_white()
if left == 'white' and right == 'white':
motor_a.forward(255)
motor_b.forward(255)
if left == 'white' and right == 'black':
# naar rechts bijsturen
motor_a.forward(255)
motor_b.forward(255)
if left == 'black' and right == 'white':
# naar links bijsturen
motor_a.forward(255)
motor_b.forward(255)
sleep(0.01)
Uitleg
- Eerst lees je beide sensoren uit (
leftenright). - Daarna kijk je met
if-statements naar de mogelijke combinaties. Bij beide zwart doet deze code niets. - Bij beide wit rijden beide motoren vol vooruit.
- Bij de overige gevallen moet je zelf bedenken welke motor je lager zet om bij te sturen.
Opdracht: vul de bijsturing in
Verander de snelheden bij naar rechts bijsturen en naar links bijsturen zodat de robot daadwerkelijk de lijn volgt.
Tip
Als de linkersensor wit ziet en de rechter zwart, is de robot naar links afgedwaald. Stuur naar rechts: motor_b (rechts) lager, motor_a (links) op 255. Maar pas op: welke motor links en welke rechts zit, hangt af van hoe je de motoren hebt aangesloten. Test eerst met motor_a.test().
Oplossing (één mogelijkheid)
from leaphymicropython.sensors.linesensor import AnalogIR
from leaphymicropython.actuators.dcmotor import DCMotors
from time import sleep
motoren = DCMotors()
motor_a = motoren.motor_a
motor_b = motoren.motor_b
a0 = AnalogIR("A0", 2500)
a1 = AnalogIR("A1", 2500)
while True:
left = a0.black_or_white()
right = a1.black_or_white()
if left == 'white' and right == 'white':
motor_a.forward(255)
motor_b.forward(255)
if left == 'white' and right == 'black':
motor_a.forward(255)
motor_b.forward(150) # rechter motor zachter
if left == 'black' and right == 'white':
motor_a.forward(150) # linker motor zachter
motor_b.forward(255)
sleep(0.01)
Welke motor je zachter zet hangt af van jouw bedrading. Test en pas aan tot het werkt.