Som vi så i sidste uge, så kan vi med én enkelt sensor, få vores robot til at følge en streg.
Men er der noget som den ikke kan?
Hvad den kan og ikke kan:
Hvis vi forestiller os at tegningen neden under, er nogle streger vi har malet på gulvet ovre på hospitalet.
Kan vi så få vores robot til at følge stregerne og vise besøgende rundt, eller køre sengeliggende patienter rundt mellem de forskellige afdelinger?
Hvis robotten altid vælger den samme vej, hvilken vej er det så?
- A
- B
- C
Vi kan også forestille os at robotten arbejder på et varehus, eller i en restaurent, hvor vi har tegnet en streg i gulvet som på billedet neden under.
Nu vil vi gerne give robotten to kasser (A og B) som den skal levere på de rigtige hylder (A og B).
Eller måske to bakker med sushi (A og B) som skal leves til de rigtige borde (A og B).
Kan vores robot det?
Ved den hvornår den:
- Er ud for bord A?
- Er ud for bord B?
Vi giver robotten en sensor mere:
Til det skal vi bruge:
- 3 stk. han/hun ledninger (21cm) – gerne (rød, sort og grøn)
- 1 stk. træ
- 1-2 stk. tape
- 1 stk. Linjefølger (sensor)
Vi kan nu sætte sensoren på robotten:
Sensoren forbinder vi til P2:
Tjek at begge sensorer virker:
Før vi begynder at programmere hvad robotten skal gøre, skal vi først være sikre på at begge sensorer virker.
Det gør vi “næsten” på samme måde som i sidste uge.
På billedet nedenfor læses sensorerne på samme måde som i sidste uge, prøv at lav denne kode og se hvor hurtigt værdierne kommer på skærmen.
- Kan du se hvilken værdi der er den højre sensor eller den venstre sensor? (jeg kan ikke XD)
Hmm… Hvad gør vi så?
- Vi tilføjer lidt ekstra tekst, så vi kan se hvilken sensor værdien er fra
- Vi tilføjer en pause så det går lidt langsommere
Der er to “problemer” med koden oven over:
- Den fylder rigtig meget
- Den indeholder en pause
Pauser er gode for os mennesker, men de kan være meget svære for robotter.
Forestil dig at du er robotten, du har lige set hvidt og fortæller højre motor at nu skal den køre, mens den venstre står stille.
Herefter holder du en “tænke pause”… Motorne fortsætter, så den højre bliver ved med at køre. Nu er din pause endeligt slut og du kan “tænke” igen, desværre er du i mellemtiden kørt hele vejen hen over stregen og er faret vild! oO
Vi kopierer derfor de kommandoer der skriver vores værdier til skærmen, samt pausen, ind i en funktion.
På den måde kan vi altid kalde på funktionen, når vi vil tjekke vores sensorer og vi kan fjerne den når vi tester robotten. Smart ikke?
Programmering:
Sidste gang skulle vores ene sensor bestemme over begge motorer:
- Når sensoren så hvidt skulle:
- Højre motor køre
- Venstre motor stoppe
- Når sensoren så sort skulle:
- Højre motor stoppe
- Venstre motor køre
Denne gang har vi to sensorer, så det giver god mening at de hver bestemmer over en motor.
Men hvad skal motorerne så gøre?
Prøv at sæt robotten på stregen som på billederne neden under og forestil dig nu at du er robotten.
Hvad skal der ske?:
- Når højre motor ser hvidt:
- Skal højre motor gøre?
- Når højre motor ser sort:
- Skal højre motor gøre?
- Skal højre motor gøre?
- Når venstre motor ser hvidt:
- Skal venstre motor gøre?
- Når venstre motor ser sort:
- Skal venstre motor gøre?
Når du har fundet ud af hvad motorerne skal gøre når højre og venstre sensor ser sort og hvidt, kan du indsætter det i koden denne kode.
Hvad den kan og ikke kan:
Prøv at sætte robotten på en streg som den på billedet nedenunder.
- Zig Zagger robotten stadig, eller kører den mere stabilt?
- Går det hurtigere eller langsommere?
Prøv at sætte den på billedet neden under.
- Hvad sker der nu, når robotten kommer til krydset?
Prøv at sætte den på billedet neden under.
- Kører robotten stadig forbi område A og B?
Prøv at ændre stregen, som på billedet neden under.
- Kører robotten stadig forbi område A og B, eller hvad sker der nu?
Ved den hvornår den:
- Er ud for bord A?
- Er ud for bord B?