Innholdsfortegnelse
Bit:bot
Her kan du laste ned ferdige hex-filer for å programmere din bit:bot, eller du kan følge bruksanvisningen under for å programmere bit:bot selv. Les mer her om hvordan du programmerer en micro:bit.
Programmeringen gjør du i en vanlig nettleser, adressen er https://makecode.microbit.org/#. Du må muligens gå til innstillinger-menyen for å velge språk. Dersom det allerede ligger ferdige prosjekter på nettsiden kan du lage nytt prosjekt ved å velge Prosjekter→Nytt prosjekt.
Etter å ha overført programmet til micro:bit kan du slå på bit:bot. Merk at du må løfte opp bit:bot fra underlaget når du slår på; bit:bot har lyssensorer på undersiden, og dersom det er mørkt under bit:bot ved oppstart vil den gå i «pairing mode» (for bluetooth). Dersom du løfter den litt opp mot lyset ved oppstart unngår du denne modusen og ditt program vil starte i stedet.
Til hvert trinn i oppskriften finnes et løsningsforslag. Trykk på HTML-knappen for løsningsforslag med javaskript, eller trykk på Result-knappen for løsningsforslag med blokker.
Fjernkontroll
For å kunne styre bit:bot via fjernkontroll trenger vi en micro:bit med batteri. Denne skal vi programmere til å sende kommandoer til en annen micro:bit som er festet til bit:bot og som skal styre bit:bot. Lag et program som kan sende akselerometerets x- og y-verdier til bit:bot. Du trenger ikke regne på kreftene eller akselerasjonen, bare sende verdiene.
Oppdrag 1a. Radiosender
Nå skal du programmere den micro:biten du skal holde i og bruke til å styre bit:bot.
Bruk kommandoer fra Radio-menyen til å lage en radiosender. Du må velge deg en kanal du kan sende meldinger på, og du skal bruke samme kanalnummer som nummeret på datamaskinen du bruker. Dersom datamaskinen din heter Trigger-03 skal du bruke kanal nummer 3.
<hidden Tips 1:>Du velger kanal ved å bruke kommandoen «radio sett gruppe». Det er tilstrekkelig å gjøre dette én gang, f.eks. ved start.</hidden> https://jsfiddle.net/royeven/jLgysx0b/1/embedded/css,html,result/ 100%,400 noscroll noborder left
Oppdrag 1b. Sende data
Les av akselerometerets x- og y-verdi og send disse ut på den valgte radiokanalen. Bit:bot må få hyppige oppdateringer fra fjernkontrollen. <hidden Tips 1:>I Inndata-menyen kan du finne en kommando for å lese akselerometerets verdier.</hidden> <hidden Tips 2:>Du trenger å sende en identifikator i tillegg til x- og y-verdiene. Dersom akselerometerets y-verdi er 1000, og du sender meldingen «1000» til bit:bot, så vet ikke bit:bot om det er x- eller y-verdien som er mottatt. Du må derfor sende en identifikator (f.eks. «acc_y») først. Dersom bit:bot mottar meldingen «acc_y 1000» kan mottageren finne ut at det er y-verdien av akselerometeret som er 1000. Du kan selv velge teksten til identifikatoren, men både sender og mottager må programmeres med samme identifikator.</hidden> <hidden Tips 3:>I Radio-menyen finnes det mange måter man kan sende data på. F.eks. kan du bruke kommandoen «radio send verdi» til å spesifisere en identifikator.</hidden> https://jsfiddle.net/royeven/jLgysx0b/3/embedded/css,html,result/ 100%,400 noscroll noborder left
Oppdrag 1c. Sende ekstra data
Dette er et oppdrag for avanserte brukere. Programmer radiosenderen til også å sende kommandoer for knappetrykk og andre input.
Motta data
Nå skal du programmere den micro:biten som skal sitte i bit:bot og motta kommandoer fra den håndholdte micro:biten med batteri. Her må du benytte enkel matematikk for at fjernkontrollens akselerometer kan styre motorene på bit:bot.
Oppdrag 2a. Nytt prosjekt
Gi programmet du laget til fjernkontrollen et fornuftig navn, f.eks. «Fjernkontroll» og lagre det. Lag deg deretter et nytt prosjekt, for bit:bot må programmeres annerledes enn fjernkontrollen du hittil har jobbet med. Gi det nye prosjektet ditt et fornuftig navn. <hidden Tips:>Du kan lage et nytt prosjekt ved å velge Prosjekt→Nytt prosjekt. Du kan senere finne tilbake til fjernkontroll-programmet ditt ved å velge «Prosjekt» og finne ditt andre program i arkivet nederst på siden.</hidden>
Oppdrag 2b. Laste ned bibliotek
For å styre bit:bot må vi å laste ned et bibliotek med kommandoer spesiallaget for bit:bot. Et programbibliotek er en samling med ferdiglagde kommandoer som vi kan laste ned slik at vi slipper å lage alt selv, og dette biblioteket finner vi ved å først åpne Avansert-menyen, deretter trykke på «Hent tilleggsfunksjon». Der søker du etter «bitbot» og trykker på biblioteket som heter «BitBot - Official Microsoft MakeCode package for the Bit:Bot robot https://4tronix.co.uk/bitbot/». Dette biblioteket inneholder kommandoer for å styre bit:bot.
<hidden Løsningsforslag:>Når du er ferdig med dette trinnet skal du ha et nytt, tomt prosjekt med et fornuftig navn og du skal ha fått to nye menyer for Bitbot og Neopixel. Merk at bitbot-biblioteket skal være orange. Det finnes ett bitbot-bibliotek som kommer med grønn farge, men dette inneholder kommandoer som ikke fungerer og bør derfor ikke brukes.
</hidden>
Oppdrag 2c. Radiomottaker
Lag et program som mottar på samme radiokanal som fjernkontrollen sender på.
<hidden Løsningsforslag:>Merk at kanalnummeret må stemme med nummeret på din datamaskin
</hidden>
Oppdrag 2d. Motta data
Lag et program som mottar data fra den valgte radiokanalen og finner x- og y-akselerasjon og legger tallene i hver sin variabel.
<hidden Tips 1:>Du kan bruke kommandoen «når radio mottar» til å hente data fra radio. Hvilken variant av denne kommandoen du skal bruke kommer litt an på hvilken identifikator du valgte da du programmerte radiosenderen. Du kan bruke den blå knappen med tannhjulet til å velge hvordan du vil motta data. Dersom du valgte en tekst-identifikator (en identifikator som består av tekst, f.eks. «acc_y») kan du benytte en struktur som ligner på dette:
I eksemplet over vil de mottatte dataene bli oppdelt i to deler og lagret som to separate variabler, en som kalles «name» og en som kalles «value». Disse to variablene kan du bruke i ditt program. Hvis radioen f.eks. mottar dataene «acc_y 1000» vil den første delen (acc_y) bli lagret i variabelen «name» og den siste delen (1000) bli lagret i variabelen «value».</hidden>
<hidden Tips 2:>Du kan bruke Hvis-setninger til å filtrere om den mottatte meldingen inneholder x- eller y-verdi:
</hidden>
<hidden Løsningsforslag:>Merk at kanalnummeret må stemme med nummeret på din datamaskin
</hidden>
Styre motorer
Tanken er å bruke fjernkontrollens akselerometer-verdier til å kontrollere bit:bot. Akselerometerets verdier er vist på figuren under. Dersom mikro:biten blir tiltet i pilenes retninger (se bilde til venstre) sender akselerometeret positive verdier, og dersom den blir tiltet motsatt av pilene sendes negative verdier. Jo mer tiltet akselerometeret blir, jo større blir tallet som blir sendt.
Oppdrag 3a. Bruke datavariabel til å styre motorer
Lag et program som bruker y-verdien fra akselerometeret til å styre motorene fram og tilbake. <hidden Tips 1:>Det er én motor for hvert hjul, og med tanke på at bit:bot før eller senere skal kunne svinges må disse hjulene kunne kjøres med hver sin hastighet. Det vil være en fordel for deg om du lager to variabler (f.eks. kalt «høyre» og «venstre») som skal inneholde farten til hver motor. For øyeblikket skal begge gå like fort, men det er likvel greit å lagre dette som to separate verdier.</hidden> <hidden Tips 2:>I Bitbot-biblioteket finner du en kommandom som heter «Kjør motor». Her kan du velge hvilken motor som skal kjøres, og oppgi et tall som bestemmer hvor fort motoren skal kjøre. 0 betyr at motoren står i ro, og hvis du øker tallet går den fortere - jo større tall, jo fortere går den. Negative tall får motoren til å gå bakover.</hidden> <hidden Tips 3:>Legg merke til fortegnet til akselerometerets verdier. Y-verdien fra akselerometeret er negativ hvis du tilter fjernkontrollen forover og positiv dersom du tilter den bakover. Dette må du ta hensyn til når du skal bruke verdien til å styre motorene.</hidden> <hidden Løsningsforslag:></hidden>
Oppdrag 3b. Svinge
Modifiser programmet slik at du kan bruke x-verdien fra akselerometeret til å svinge. Både x- og y-verdien vil variere mellom -1023 og +1023. Ved å bruke enkel regning (pluss og minus) kan vi beregne hvor fort hvert hjul skal gå. <hidden Tips 1:>Dersom du vil svinge til høyre kan du bremse det høyre hjulet slik at det kjører saktere enn det venstre. Du kan også øke farten til det venstre hjulet for å svinge til høyre.</hidden> <hidden Tips 2:>Matematisk kan vi skrive det slik: Høyre hjul kan kjøre med hastighet Y minus X (d.v.s. at høyre hjul går sakte) og venstre hjul kan kjøre med hastighet Y pluss X (altså fortere enn det høyre hjulet). Hvilke fortegn du bruker (+ eller -) vil avhenge av hvordan du har tenkt å bruke fjernkontrollen og hvordan du vil at bit:bot skal oppføre seg.</hidden> <hidden Løsningsforslag:></hidden>
Oppdrag 3c. Endre følsomhet
Test bit:bot med programmet ditt. Du kommer til å merke at fjernkontrollen er veldig følsom. Bit:bot står i ro bare når fjernkontrollen ligger helt flatt. Det er derfor vanskelig å få bit:bot til å stå rolig. Endre programmet ditt slik at det blir enklere å få bit:bot til å stå i ro. <hidden Tips 1:>Kommandoene du trenger finner du i Matematikk-menyen. Denne menyen er todelt. Når du aktiverer den kommer bare de grunnleggende kommandoene opp. Dersom du trykker på «…Mer» (se bildet) får du opp en del mer avanserte kommandoer og funksjoner. </hidden> <hidden Tips 2:>Årsaken til at det er vanskelig å få bit:bot til å stå i ro er at det kun er én verdi (nemlig 0) som får bit:bot til å stå helt i ro. Alle andre verdier vil få bit:bot til å kjøre. Dersom alle verdier fra f.eks. -40 til 40 ble ignorert ville man fått bedre kontroll.</hidden> <hidden Tips 3:>Du kan bruke absoluttverdikommandoen fra Matematikk-menyen til å ignorere fortegnet. Absoluttverdien av 40 er 40. Absoluttverdien av -40 er også 40.</hidden> <hidden Løsningsforslag:></hidden>
Oppdrag 3d. Forbedre svinging
Dette er et oppdrag for avanserte brukere. Test bit:boten din grundig. Du vil muligens merke at jo høyere fart bit:bot har, jo vanskeligere er den å styre. Hva kan årsaken til dette være? Forsøk å forbedre svinge-funksjonen slik at det blir enklere å kontrollere bit:bot.
Neopixler
Bit:bot er utstyrt med 12 neopixler; en neopixel er en programmerbar lysdiode (LED) hvor ditt program kan bestemme hvilken farge den skal ha, og programmet ditt kan også skifte farge på lyset. Først må du bruke en eller flere av kommandoene for å endre på lyset (sett lysdioder til, nullstill lysdioder, skift/roter lysdioder eller sett styrke på lysdioder). Etterpå må du kjøre kommandoen «vis lysdioder». Det er denne kommandoen som «oppdaterer» diodene, og hvis den ikke blir kjørt vil ingenting skje.
Oppdrag 4a. Lage lys
Oppdrag 4b. Lage regnbue
Programmer bit:bot til å la neopixlene skifte farge hele tiden. <hidden Tips 1:>Du kan bruke regnbue-funksjonen i bitbot-biblioteket til å sette forskjellige farger.</hidden> <hidden Tips 2:>Du kan bruke «roter lysdioder» eller «skift lysdioder» (hva er forskjellen?) til å få fargene til å bytte plass.</hidden> <hidden Løsningsforslag:></hidden>
<hidden Avansert ekstraoppgave:>Greier du å programmere bitbot til å sette tilfeldige farger i alle diodene hvert sekund? <hidden Tips>I matematikk-menyen finner du funksjoner for å finne helt tilfeldige tall.</hidden> <hidden Løsningsforslag:></hidden> </hidden>
Oppdrag 4c. Av/på-knapp for lys
Dette er et oppdrag for avanserte brukere. Greier du å lage en fjernstyrt av/på-knapp til blålysene?
Buzzer
Bit:bot er utstyrt med en buzzer som kan lage lyd.
Oppdrag 5a. Lage lyd
Endre programmet ditt slik at du får en sirene når bit:bot kjører bortover.
<hidden Tips 1:>Du kan bruke kommandoen «buzz lyd» fra bitbot-menyen til å lage lyd. Dersom «buzz lyd» settes til 1 får du en høy, skjærende sirene. Hvis den settes til 0 blir det deilig stille. Ikke sett denne kommandoen til 1 unødvendig lenge!</hidden>
<hidden Tips 2:>Dersom du vil ha en annen tone enn den du får med «buzz lyd» kan du bruke «skriv analog til»-kommandoen fra Tilkobling-menyen. Dersom denne kommandoen sender et lite tall (f.eks. 50) blir det en dyp, lav tone. Dersom du gir et høyt tall (f.eks. 1000) blir det en høy, kraftig lys tone. Ikke sett tall høyere enn 1023. Her må du passe på å sette porten til P14.</hidden>
<hidden Løsningsforslag 1:>Bare sirene, uten blålys:
</hidden>
<hidden Løsningsforslag 2:>Sirene og blålys sammen
</hidden>
<hidden Løsningsforslag 3:>Bruk fortrinnsvis løsningsforslag 1
</hidden>
Oppdrag 5b. Lage av/på-knapp for lyden
Dette er et oppdrag for avanserte brukere. Greier du å slå lyden av og på med fjernkontrollen?
Videre oppdrag
Nå har du lært å bruke alle de viktigste funksjonene til micro:bit og bit:bot. Nå kan du fritt leke deg med å få bit:bot til å oppføre seg slik du vil. Greier du å få bit:bot til å sende meldinger tilbake til skjermen på fjernkontrollen? Dersom du bruker MI:powerboard til fjernkontrollen inneholder dette kortet en høyttaler. Greier du få bit:bot til å spille musikk på fjernkontrollen? Greier du å programmere bit:bot til å detektere bråstopp og spille en alarm når den krasjer i veggen?
Lenker
Her kan du lese om detaljert montering og styring av bit:bot: http://4tronix.co.uk/blog/?p=1490
Her kan du lese mer om hvordan du kan styre bit:bot ved hjelp av bluetooth: https://ukbaz.github.io/howto/bitbotRemoteControl.html