Teknik 1 · område 2 · pass 8 · utmaning
Ovalbanan med hinder
Roboten följer ovalen. Någon ställer en kartong på banan. Roboten
stannar. Kartongen tas bort. Roboten kör vidare. Bygg vidare på linje.py
från förmiddagen – det är fyra rader till.
1. Uppgiften
Följ linjen som i förmiddags. Stanna om något står framför roboten. Kör vidare när det är borta. Det är allt – men det kräver att hindret kollas först, före linjen, precis som knappen i larmet: det som är viktigast står överst.
hinder_h = Pin(2, Pin.IN)
hinder_v = Pin(3, Pin.IN)
while True:
position, varden = sensor.readLine()
if hinder_v.value() == 0 or hinder_h.value() == 0:
stopp()
elif position < 1500:
kor(20, 45)
elif position > 2500:
kor(45, 20)
else:
kor(40, 40)
or betyder om det ena eller det andra. Ser någon av de två
sensorerna ett hinder stannar roboten. Loopen fortsätter – nästa varv, om hindret
är borta, kör den igen.
2. Hindersensorerna
På robotens framkant sitter två små IR-sensorer, en på varje sida. De fungerar som linjeföljaren – skickar IR-ljus, lyssnar efter reflektionen – men svarar digitalt: 0 = något är framför, 1 = fritt. Som knappen.
| Sensor | Pinne | Värde |
|---|---|---|
| Höger | GP2 | 0 = hinder, 1 = fritt |
| Vänster | GP3 | 0 = hinder, 1 = fritt |
På varje sensor sitter en liten skruv som bestämmer hur nära något måste vara.
Testa med print(hinder_v.value()) och en kartong: den ska ge 0 på
5–10 cm och 1 annars. Ger den 0 hela tiden ser den golvet – vrid skruven.
3. Nivåerna
Ska — nivå E
Bör — nivå C
Utmaning — nivå A
Kryssen sparas i din webbläsare.
4. Efter lovet
Roboten som följer linjen är halva projektet. Andra halvan är att välja väg. Labyrintprojektet presenteras på passet – läs det, och läs dokumentationsmallen över lovet. Rita ett första flödesschema på papper: vad gör roboten när linjen är under mitten, i en korsning, i en återvändsgränd, vid målet?
5. Felsökning
5 rader
| Symptom | Trolig orsak | Åtgärd |
|---|---|---|
| Roboten stannar aldrig för kartongen | Sensorn ser den inte – avståndet är för kort | Skruven på sensorn. Testa med print |
| Roboten stannar hela tiden | Sensorn ser golvet eller sin egen skugga | Vrid skruven åt andra hållet. Kontrollera att 0 verkligen är hinder |
NameError: sensor eller kor | Ny fil utan linjeföljningskoden | Bygg vidare på linje.py – lägg till hinderraderna där |
| Stannar, men kör inte vidare | Något låser efter stopp() | stopp() bara i sin gren. Ingen while inuti loopen |
| Tappar linjen efter stoppet | Rullade förbi linjen när den stannade | Sänk farten. Eller back en kort stund efter stoppet |