← Område 2 Uppgift · Ovalbanan med hinder Felsökning

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.

SensorPinneVärde
HögerGP20 = hinder, 1 = fritt
VänsterGP30 = hinder, 1 = fritt
Avståndet ställs med en skruv

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

SymptomTrolig orsakÅtgärd
Roboten stannar aldrig för kartongenSensorn ser den inte – avståndet är för kortSkruven på sensorn. Testa med print
Roboten stannar hela tidenSensorn ser golvet eller sin egen skuggaVrid skruven åt andra hållet. Kontrollera att 0 verkligen är hinder
NameError: sensor eller korNy fil utan linjeföljningskodenBygg vidare på linje.py – lägg till hinderraderna där
Stannar, men kör inte vidareNågot låser efter stopp()stopp() bara i sin gren. Ingen while inuti loopen
Tappar linjen efter stoppetRullade förbi linjen när den stannadeSänk farten. Eller back en kort stund efter stoppet