Oefenen met twee sensoren en twee servo's
Met één sensor en één servo ziet je robot een bal en slaat hij hem weg. Met twee van elk kan hij meer: hij ziet wáár de bal ligt, en hij kiest welke servo slaat. Daarna ken je de sensor en de servo goed genoeg om de Lego eromheen te bouwen.
Je docent zegt of er voor jou een tweede sensor en een tweede servo klaarliggen. Je sluit ze niet in één keer aan: eerst komt er een sensor bij, dan een servo, en pas aan het eind gebruik je ze samen. Heb je alleen een tweede sensor? Doe dan alleen het deel Een tweede sensor. Heb je alleen een tweede servo? Doe dan alleen het deel Een tweede servo.
Elk deel begint makkelijk. Oefening 8, de laatste, is een puzzel.
Een tweede sensor
De servo blijft er één, op D9. Er komt alleen een sensor bij.
Aansluiten
Zet je robot uit met de knop ON/OFF. De eerste sensor blijft op A0 en de servo op D9, zoals bij de IR-sensor en de servo. De tweede sensor komt op de rij van A1 van het shield:
| Pin van de tweede sensor | Komt op |
|---|---|
| VCC (rode draad) | 5V |
| GND (zwarte draad) | GND |
| A0 (oranje draad) | het signaal van A1: het pinnetje het dichtst bij de naam A1/D15 |
Let op: op de sensor zelf heet de pin nog steeds A0. Dat is de naam van het pootje op de sensor. De draad gaat op het shield naar A1.
Zit alles vast? Zet je robot dan weer aan met ON/OFF.
In het blok Lees anapin kies je zelf welke sensor je robot leest. Klik op A0, en kies A1 in het lijstje.
Oefening 1: een andere sensor
Pak je programma van Zie de bal, sla de bal. Je verandert maar één ding: klik in Lees anapin op A0 en kies A1.
De blokken worden geladen.
Klik op Upload naar robot en leg de bal eerst voor de ene sensor, en dan voor de andere. Klopt je voorspelling? Slaat de servo helemaal niet, of juist steeds, dan past de grens uit je programma niet bij deze sensor. Dat meet je in de volgende oefening.
Oefening 2: twee sensoren tegelijk
Nu zet je de getallen van allebei de sensoren op het scherm. Daarvoor heb je het andere blok Toon op scherm uit Actuatoren nodig, dat met een = erin. In het eerste vakje typ je de naam van de sensor, en in het tweede komt Lees anapin.
De blokken worden geladen.
Klik op Upload naar robot en open het scherm met de knop Toon output op scherm. Klopt je voorspelling?
Hoe ver kijkt elke sensor? Schuif de bal langzaam naar een sensor toe en kijk bij welke afstand het getal omlaag gaat. Schrijf voor elke sensor drie dingen op: het getal zonder bal, het getal met bal, en de afstand waarop hij de bal ziet.
Twee sensoren van dezelfde soort geven vaak niet precies hetzelfde getal. Kies daarom voor elke sensor een eigen grens. In de voorbeelden hieronder is de grens van A0 300 en die van A1 350. Gebruik jouw eigen getallen.
Zelf maken
Laat het scherm bal bij A0 tonen als de sensor op A0 de bal ziet, en bal bij A1 als de sensor op A1 hem ziet.
Tip
Je hebt twee keer als … dan nodig, onder elkaar in herhaal voor altijd. Het werkt net als bij stap 2 van de IR-sensor. In het ene blok staat Lees anapin A0, in het andere Lees anapin A1. Voor deze zinnen neem je weer het blok Toon op scherm met één vakje.
Antwoord
De blokken worden geladen.
Houd je een bal voor allebei de sensoren, dan zie je allebei de zinnen.
Oefening 3: alleen als ze hem allebei zien
Zet de twee sensoren vlak naast elkaar, zodat één bal voor allebei kan liggen. Begin met je programma van oefening 1. De servo op D9 slaat nu alleen als de sensor op A0 én de sensor op A1 de bal zien. Ziet maar één sensor de bal, dan gebeurt er niets.
Daarvoor heb je een nieuw blok nodig: en, uit de groep Getal blokken. Het heeft twee gaten. In elk gat past een vergelijking, en het blok klopt alleen als ze allebei kloppen.
Tip
In het gat achter als zit nog de vergelijking met Lees anapin A1. Sleep die eerst uit het gat en leg hem even opzij; in het lege gat komt het blok en. Voor A0 pak je nog een vergelijkblok uit Getal blokken. Dat staat eerst op 1 = 1, dus klik op het = en kies <. Zet er Lees anapin A0 en je grens voor A0 in. Die vergelijking gaat in het linkergat van en, en die met Lees anapin A1 in het rechtergat.
Antwoord
De blokken worden geladen.
Onderzoek: klik in het blok op en, en kies of. Wat doet je robot nu?
Hij slaat al als één van de twee sensoren de bal ziet. Zien ze hem allebei, dan slaat hij ook.
Oefening 4: een stand per sensor
Je hebt nog één nieuw blok nodig. In de groep Denk stappen staan twee blokken als. Het tweede heeft onderaan nog een gat, met anders ervoor: dat is als … dan … anders. Klopt de vergelijking, dan doet je robot wat achter dan staat. Klopt hij niet, dan doet hij wat achter anders staat.
Begin met een leeg programma: het Leaphy-blok met alleen herhaal voor altijd erin. Laat de servo op D9 aanwijzen waar de bal ligt:
- ligt de bal bij de sensor op A0, dan draait de servo naar 45°;
- ligt hij bij A1, dan gaat de servo naar 135°;
- zonder bal staat de servo op 90°.
Tip
Je hebt twee blokken als … dan … anders nodig. Het eerste kijkt naar A0. Zet het tweede in het gat achter anders van het eerste: dat kijkt naar A1.
Antwoord
De blokken worden geladen.
Ziet A0 geen bal, dan gaat je robot naar anders. Daar kijkt hij naar A1. Ziet A1 ook geen bal, dan komt hij bij het laatste anders, en dat is 90°.
Hier staat geen duurt in. Dat hoeft niet: zolang de bal blijft liggen, krijgt de servo steeds dezelfde stand.
Een tweede servo
Nu komt er een servo bij. De sensoren mogen blijven zitten.
Aansluiten
Zet je robot uit met de knop ON/OFF. De eerste servo blijft op D9. De tweede servo komt op de rij van D10:
| Draad van de tweede servo | Komt op |
|---|---|
| bruin | GND |
| rood | 5V |
| oranje | het signaal van D10: het pinnetje het dichtst bij de naam D10 |
Zit alles vast? Zet je robot dan weer aan met ON/OFF.
Sleep je een nieuw blok Servo in je programma, dan staat het eerst op Servo 2 op 90. Voor de tweede servo klik je op de 2 en kies je 10.
Oefening 5: een andere servo
Pak het programma Heen en weer van de servo. Je verandert alleen het pinnummer: klik in allebei de blokken Servo op de 9 en kies 10.
De blokken worden geladen.
Klik op Upload naar robot en kijk of je voorspelling klopt.
Oefening 6: twee servo's om de beurt
Dit programma laat eerst de servo op D9 draaien, en daarna die op D10.
De blokken worden geladen.
Upload het programma en kijk of je gelijk had.
Zelf maken: gespiegeld
Leg de twee servo's naast elkaar, op dezelfde manier. Laat ze nu tegelijk bewegen, als in een spiegel: gaat de servo op D9 naar 45°, dan gaat die op D10 naar 135°. Na een seconde draaien ze om: D9 naar 135° en D10 naar 45°.
Tip
Zet de twee blokken Servo direct onder elkaar, zonder duurt ertussen, dan bewegen ze tegelijk. Pas daarna wacht je robot een seconde.
Antwoord
De blokken worden geladen.
Tussen Servo 9 en Servo 10 staat geen duurt. Het zijn twee verschillende servo's, dus ze zitten elkaar niet in de weg. Tussen twee standen van dezelfde servo staat wel een duurt.
Twee sensoren en twee servo's
Nu gebruik je de tweede sensor en de tweede servo samen, dus je hebt ze allebei nodig.
Oefening 7: elke sensor zijn eigen servo
Ziet de sensor op A0 een bal, dan slaat de servo op D9. Ziet de sensor op A1 een bal, dan slaat de servo op D10. Slaan gaat zoals bij Zie de bal, sla de bal: uithalen naar 0°, 500 ms wachten, terugslaan naar 90°, en 2000 ms wachten. Gebruikte je bij de servo 10° in plaats van 0°? Doe dat hier ook.
Tip
Begin met het programma van Zie de bal, sla de bal. Daar staat één als … dan in, en je hebt er twee nodig. Klik met de rechtermuisknop op het woord als en kies Dupliceren. Je krijgt een kopie met alle blokken erin, en die zet je onder de eerste. Kies daarin bij Lees anapin de pin A1, typ je grens voor A1, en klik in de blokken Servo op de 9 en kies 10.
Antwoord
De blokken worden geladen.
Oefening 8: gekruist
Nu ruil je de servo's om. Ziet de sensor op A0 een bal, dan slaat de servo op D10. Ziet de sensor op A1 een bal, dan slaat de servo op D9.
Tip
Begin met je programma van oefening 7. Er hoeft geen blok bij en geen blok af. In elk als … dan staan twee blokken Servo: kijk welk pinnummer erin staat.
Antwoord
De blokken worden geladen.
Je verandert vier pinnummers: twee keer 9 in 10, en twee keer 10 in 9.
Er gaat iets mis
Er beweegt maar één servo, terwijl je er twee aanstuurt.
Oorzaak: in alle blokken Servo staat hetzelfde pinnummer. Je programma stuurt dan steeds dezelfde servo aan, en de servo op D10 krijgt nooit een bericht.
Oplossing: klik in het blok op het pinnummer en kies 10. Kijk ook of de oranje draad van de tweede servo op het signaal van D10 zit.
Zelf vinden: tel in je programma hoe vaak er Servo 9 staat en hoe vaak Servo 10.
Met een bal voor de eerste sensor gaan allebei de getallen omlaag.
Oorzaak: in het tweede blok Lees anapin staat nog A0. Dan lees je twee keer de eerste sensor, ook al heb je er A1 voor getypt. Een bal voor de tweede sensor verandert dan niets.
Oplossing: klik in het tweede blok Lees anapin op A0 en kies A1.
Het getal achter A1 = verandert niet als je een bal voor de tweede sensor houdt.
Oorzaak: de oranje draad van de tweede sensor zit niet op het signaal van A1, maar op een andere rij of op een ander pinnetje van de rij van A1. Op de sensor heet die pin A0, en dan zoek je op het shield al snel op de verkeerde rij.
Oplossing: zet je robot uit, en zet de oranje draad op het signaal van A1: het pinnetje het dichtst bij de naam A1/D15.
Zelf vinden: houd de bal voor de eerste sensor. Gaat het getal achter A1 = dan ook omlaag? Dan zit de fout in je programma, zoals bij de kaart hierboven.
De ene sensor ziet de bal wel, de andere niet.
Oorzaak: twee sensoren geven niet precies hetzelfde getal. Een grens die bij de ene sensor past, kan bij de andere te laag zijn.
Oplossing: geef elke sensor zijn eigen grens. Zet het programma van oefening 2 terug en schrijf voor elke sensor het getal met en zonder bal op. Kies voor elke sensor een grens die daar netjes tussenin ligt.
Als de twee servo's tegelijk bewegen, trillen ze of begint je robot opnieuw.
Oorzaak: twee servo's samen vragen meer stroom dan de usb-kabel kan geven.
Oplossing: geef je robot stroom via de aansluiting op het shield, met de knop ON/OFF aan. Vraag je docent welke adapter of batterij erbij hoort.
Zelf vinden: laat de servo's om de beurt bewegen, zoals in oefening 6. Gaat het dan wel goed, dan lag het aan de stroom.
Klaar met oefenen? Zet je robot uit met ON/OFF en haal de tweede sensor en de tweede servo weer los. Je Golfer gebruikt alleen de sensor op A0 en de servo op D9.
Ken je de sensor en de servo nu goed? Dan bouw je de Golfer van Lego.