Python micro:bit - introduksjon

Like dokumenter
Skrevet av: Oversatt fra microbit-micropython.readthedocs.io (

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

Repetisjon Novice Videregående Python PDF

Forkurs i informatikk Python. Andreas Færøvig Olsen

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Mattespill Nybegynner Python PDF

Python: Input og output

TDT4110 IT Grunnkurs Høst 2016

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Skrevet av: Oversatt fra microbit-micropython.readthedocs.io (

TDT4110 IT Grunnkurs Høst 2016

Øvingsforelesning 1 Python (TDT4110)

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

IN1000 Obligatorisk innlevering 7

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

TDT4110 IT Grunnkurs Høst 2015

Kom i gang med micro:bit

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Skilpaddekunst. Steg 1: Møt skilpadden. Sjekkliste. Introduksjon. Turtles

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

Sprettball Erfaren ComputerCraft PDF

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Øvingsforelesning 3 Python (TDT4110)

Løse reelle problemer

Steg 1: Vår første datamaskin

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

Hangman. Level. Introduksjon

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

JS: Grunnleggende JavaScript Nybegynner

Programmering Høst 2017

Læringsmål og pensum. if (be): else (not_to_be):

Øvingsforelesning i Python (TDT4110)

Norsk informatikkolympiade runde

Steg 1: Piler og knappetrykk

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

IN1140, H2018 gruppetime oppgaver Introduksjon til Tekst i Python

Oppsummering fra sist

Løpende strekmann Erfaren Videregående Python PDF

Elektronikk og programmering av ubrukelige roboter

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

"Hjerneteppe!" er en huskelek hvor du skal huske stadig lengre rekker med bokstaver!

Øvingsforelesning 5 Python (TDT4110)

PXT: Hermegåsa. Introduksjon. Skrevet av: Felix Bjerke og Tjerand Silde

PXT: Hermegåsa. Steg 1: Sjekk at du har riktig utstyr. Sjekkliste. Introduksjon

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

JS: Grunnleggende JavaScript

Løse reelle problemer

Robotinvasjon Introduksjon ComputerCraft PDF

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

Uendelig bakke. Introduksjon. Skrevet av: Kine Gjerstad Eide

Oppgaver uke 1: Løsningsforslag

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Øvingsforelesning 5 Python (TDT4110)

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Visuell Programmering: Kom i gang med Processing

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Skilpadder Introduksjon Python PDF

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Norsk informatikkolympiade runde

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Skilpaddetekst. Steg 1: Tekst på flere linjer. Sjekkliste. Introduksjon

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

INF109 - Uke 1a

Steg 1: Tekst på flere linjer

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Verden - Del 2. Intro. Skrevet av: Kine Gjerstad Eide

PGZ - Hangman Ekspert Python Lærerveiledning

Oppgave 1 Hva tror du følgende program skriver ut til terminalen? Diskuter med gruppen.

Kodetime for Nordstrand barneskole

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2015

Skilpaddefraktaler Erfaren Python PDF

INF120: Oblig 3. Yngve Mardal Moe

MAT1030 Plenumsregning 1

Skilpadder. Introduksjon: Steg 1: Hei, Skilpadde! Sjekkliste. Skrevet av: Oversatt fra Code Club UK (//codeclub.org.uk)

Prototyping med Arduino del 2

Hvordan løse problemer med programmering?

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Steg 1: Installere programvaren

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

PXT: Snake. Introduksjon. Skrevet av: Håvard Nygård Jakobsen

Legg bort skilpaddene dine, i dag skal vi lære hvordan vi kan sende hemmelige beskjeder!

Bygge en pyramide. Introduksjon. Steg 1: Lage en ny mod. Sjekkliste. Skrevet av: Pål G. Solheim

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Transkript:

Python micro:bit - introduksjon Med utganspunkt i http://microbit-micropython.readthedocs.io/en/latest/index.html Kort om Python fra Wikipedia : Python er et objektorientert programmeringsspråk startet av Guido van Rossum i 1989. Van Rossum valgte navnet «Python» fordi han var i et lekent humør da han skulle finne på navn, og fordi han er fan av Monty Python, [1] Python har en lettlest og klar syntaks. I Python deles koden opp etter innrykk, ikke etter spesialtegn som }. Dette er trekk ved programmeringsspråket som skal gjøre det lettere og raskere å skrive programmer. micro:bit kan programmeres med mange ulike programmeringsspråk. Ett av språkene den forstår er det populære programmeringsspråket Python. Versjonen som brukes på micro:bit er MicroPython ( Videre i dokumentet brukes bare Python ) For å programmere i Python på micro:bit kan du bruke netteditoren på microbit.org - http://python.microbit.org eller den enkle kodeeditoren Mu - https://codewith.mu/

Hello, World! Når du programmerer og møter nye programmeringsspråk er det vanlig å få datamaskinen eller dingsen til å si Hei, verden! eller Hello, World! Vi skal starte med dette og tar utgangspunkt i følgende kode: from microbit import * display. scroll ( "Hello, World!" ) Hver linje i Python koden gjør noe spesielt. Vi ser på den første linjen: from microbit import * Denne linjen forteller Python at den skal hente alt som behøves for å fungere med micro:bit. Alt ligger i en modul som heter microbit (modul er forhåndsdefinert bibliotek med koder). Når du bruker import sier du til Python at du ønsker å bruker en modul og * forteller at du ønsker å bruke alt i modulen. display. scroll ( "Hello, World!" ) Denne linjen forteller Python at den skal bruke skjermen til å vise bokstavene ved bevegelse og som er definert mellom anførselstegnene. I dette tilfellet Hello, World! display er et objekt som ligger i microbit modulen og som viser til den fysiske skjermen på micro:bit (5x5 LED). Vi kan be skjermen om å gjøre noe ved hjelp av en kommando eller en metode og et argument. I dette tilfellet er kommandoen scroll (display.scroll) og argumentet er definert med ulike tegn mellom anførselstegnene i en parentes. ( Hello, World! ). Er det slik at metoden ikke krever noe argument bruker du tom parentes () Prøv å endre koden til å vise ditt navn. Eks. Hallo, Lars! PS! micro:bit støtter ikke tegnene æøå

Bilder på skjermen Ved hjelp av skjermene (5x5 LED) kan du lage mange forskjellig figurer. Python kommer med mange ferdigdefinerte bilder og figurer som er lett å ta i bruk. Vi skal nå få micro:bit til å vise et enkelt smilefjes. from microbit import * display. show ( Image. HAPPY ) Vi ser på linjene i koden. Den første linje er forklart tidligere. display. show ( Image. HAPPY ) Her forteller vi Python at den skal bruke skjermen til å vise noe ( show ). Argumentet som er definert i parentesen henter fra det innebygde biblioteket ( Image ) og i dette tilfellet et smilefjes ( HAPPY ) Her er liste over alle innebygde bilder/ikoner som kan brukes med Image.xxxx HEART HEART_SMALL HAPPY SMILE SAD CONFUSED ANGRY ASLEEP SURPRISED SILLY FABULOUS MEH YES NO TRIANGLE TRIANGLE_LEFT CHESSBOARD DIAMOND DIAMOND_SMALL SQUARE SQUARE_SMALL RABBIT COW MUSIC_CROTCHET MUSIC_QUAVER MUSIC_QUAVERS PITCHFORK XMAS PACMAN TARGET TSHIRT ROLLERSKATE DUCK HOUSE TORTOISE BUTTERFLY STICKFIGURE GHOST SWORD GIRAFFE SKULL UMBRELLA SNAKE

CLOCK12, CLOCK11, CLOCK10, CLOCK9, CLOCK8, CLOCK7, CLOCK6, CLOCK5, CLOCK4, CLOCK3, CLOCK2, CLOCK1, ALL_CLOCKS (Viser alle) ARROW_N, ARROW_NE, ARROW_E, ARROW_SE, ARROW_S, ARROW_SW, ARROW_W, ARROW_NW, ALL_ARROWS (Viser alle) Prøv å endre koden til å vise ett av de andre innebygde bildene/ikonene. Erstatt bare Image.HAPPY med en av de andre. Husk Image.xxxx Lag ditt eget bilde eller ikon Det er fullt mulig å lage ditt eget bilde eller ikon på skjermen. Hver LED på skjermen kan settes til en verdi mellom 0 og 9 og består av 5 LED på hver linje. Verdien 0 er av mens 9 er maksimal lysstyrke. Tallene mellom 1 og 9 er ulik grad av lysstyrke. from microbit import * boat = Image ( "05050:" "05050:" "05050:" "99999:" "09990" ) display. show ( boat ) Vi ser på koden for å lage eget bilde eller ikon. Første linje er forklart tidligere. Linje tre starter med at vi deklarerer en ny variabel med navnet boat. Denne variabelen skal brukes som et bilde ( Image ) og har argument i parentes. Hver linje på LED defineres ved hjelp av anførselstegn og 5 siffer mellom 0 og 9, der hver linje avsluttes med kolon.

Som vi ser av koden over er hver linje på LED satt til ny linje i koden. Dette for at det skal være lettere å se bildet eller ikonet i koden. Det er ikke nødvendig at du tar ny linje for hver LED linje og koden kan være på en linje. boat = Image ( "05050:05050:05050:99999:09990" ) Siste linje i koden viser bildet på skjermen ved hjelp av display.show og argumentet er satt til variabelen vi har deklarert - boat. I dette tilfellet bruker vi ikke anførselstegn i argumentet. Prøv å endre koden til å lage ditt eget bilde eller ikon. Hva med en edderkopp som vist på bildet til høyre? Er det lurt å endre variabel til et annet navn? Animasjon Ett bilde eller ikon er gøy, men det er enda mer spennende med en animasjon på micro:bit. For å få til en animasjon trenger du flere bilder som endres over tid. Her kan vi ta i bruk en liste. Egg Tomat Agurk Ost Over ser dere en liste over pålegg vi kan ha på en brødskive. I Python kan denne listen lages som en variabel vi kaller mat og defineres i klammeparentes. I dette tilfellet er det tekst som er definert med anførselstegn. mat = [ Egg, Tomat, Agurk, Ost ] Vi kan lage en tilsvarende liste der vi benytter oss av de innebygde bildene som ligger i microbit biblioteket. from microbit import * animasjon = [Image.DIAMOND, Image.DIAMOND_SMALL, Image.HEART, Image.HEART_SMALL] display.show(animasjon, delay=500, loop=true) Vi deklarerer en variabel med navn animasjon. Variabelen er en liste som inneholder fire elementer og som refererer til 4 ulike bilder. ( Diamant, liten diamant, hjerte, lite hjerte ) Denne listene vises på micro:bit ved hjelp av display.show og argumentet animasjon. Vi har også mulighet til å legge til pause ( delay ) mellom hvert bildet og at det skal gjentas i det

uendelig ( loop). Ofte er det mulig å legge til flere argumenter ved hjelp av komma i parentes. Ved hjelp av egne bilder kan du lage din egen animasjon. I eksemplet under er det samme edderkopp som du lagde tidligere, men som er animert med ti forskjellige bilder for å skape en bevegelse av edderkopp. Pausen mellom hvert bilder er 200 millisekunder, og når alle bildene er vist en gang tømmes skjermen. from microbit import * spider1 = Image("00000:00000:00000:00000:90009") spider2 = Image("00000:00000:00000:90009:90009") spider3 = Image("00000:00000:90009:90009:09990") spider4 = Image("00000:90009:90009:09990:90009") spider5 = Image("90009:90009:09990:90009:90009") spider6 = Image("90009:09990:90009:90009:00000") spider7 = Image("09990:90009:90009:00000:00000") spider8 = Image("90009:90009:90009:00000:00000") spider9 = Image("90009:00000:00000:00000:00000") all_spider = [spider1, spider2, spider3, spider4, spider5, spider6, spider7, spider8, spider9,] display.show(all_spider, delay=200, clear=true)

Prøv å lag en animasjon av en synkende båt ut fra tegningene. Tips på http://microbit-micropython.readthedocs.io/en/latest/tutorials/images.html#animation Tegningen i Excel format: https://github.com/larsgimse/microbit/blob/master/5x5_led_boat.xlsx Knapper Så langt har vi programmert micro:bit til å gjøre noe og vise det for oss. Dette kalles output. En annen mulighet er at vi kan påvirke micro:bit og at den reagerer på dette. Dette kaller vi inputs. Så kort fortalt: output er hva micro:bit viser til verden, mens input er hva som går inn på micro:bit for at den skal gjøre noe. Den mest åpenbare muligheten vi har for input på micro:bit er knappene A og B eller kombinasjonen av disse, A+B. Koden for A knappen er button_a. etterfulgt av en betingelse. Dette kan vi bruke i en enkel kode der vi lar micro:bit vente i ti sekunder før den viser antall ganger A knappen er trykket.

from microbit import * sleep(10000) display.scroll( str (button_a.get_presses())) Koden kort fortalt: 1) sleep funksjonen lar micro:bit vente for ett vis antall millisekunder. Ønsker du en pause i programmet ditt er dette en mulighet. Sleep funksjonen er også en metode, men etterfølges ikke av ett argument. Kun antall millisekunder i parentes. 2) button_a er et objekt som kan la deg samle inn antall ganger det blitt trykket ved hjelp av metoden get_presses. 3) Siden get_presses gir et numeretisk tall og displayet kun kan vise tegn, må vi konvertere tallet til tegn. Dette gjør vi ved bruk av str - forkortelse for string. https://no.wikipedia.org/wiki/vanlig_l%c3%b8k Den tredje linjen i koden er kanskje litt vanskelig å forstå med en gang, men den kan sammenlignes litt med en løk. Lar vi parentesene i koden være løkringene ser vi at display.scroll inneholder str som igjen inneholder button_a.get_presses. Python prøver å løse de innerste svarene først før de starter på de neste lagene utenpå. Dette kalles nøsting eller nesting. display.scrol l ( str ( button_a.get_presses() ) )

Håndtere en hendelse Om vi ønsker at micro:bit skal reagere når vi trykker på en knapp må vi bruke en uendelig løkke og sjekke om knappen er trykket ( is_pressed ). Uendelig løkke er enkelt: while True : # Gjør noe (Husk, while sjekker om noe er True for å finne ut om etterfølgende kode skal kjøres. Siden True åpenbart er True for alltid, får du en uendelig løkke!) La oss lage et enkel micro:bit dyr. Det er alltid lei seg helt til du trykker på A knappen. Trykker du på B knappen vil det dø. from microbit import * while True : if button_a.is_pressed(): display.show(image.happy) elif button_b.is_pressed(): break else: display.show(image.sad) display.clear() Forstår du hvordan micro:bit sjekker hvilken knapp som er trykket? I koden over er det brukt if, elif (forkortelse for else if ) og else. Vi kaller disse for betingelser. if ett_eller_annet is True: # gjør noe elif noe_annet is True : # gjør noe annet else: # gjør noe helt annet

Ved bruk av is_pressed metoden har vi to resultater. True (sann) eller False (usann). Trykker du på knappen settes verdien til True, ellers er verdien False. Så tilbake til koden for vårt micro:bit dyr....for evig og alltid, så lenge A knappen trykkes vises smilefjes. Hvis B knappen trykkes kjøres koden break og vi bryter ut av løkken ( while True: ) og programmet stopper. Trykker vi ikke på noen knapper vises et trist fjes. Prøv å endre koden i vårt lille micro:bit dyr til å vise andre bilder på A og B knappen. Prøv også å legge til pinnene P0, P1 og P2 som skaper kontakt ved å holde på GND og en av pinnene. (eks. pin0.is_touched ) Tilfeldigheter (Random) Vi har nå sett på hvordan micro:bit kan vise tekst og bilder på skjermen, og hvordan vi kan kommunisere med micro:bit ved hjelp av knappene. Hittil har vi på forhånd bestemt hva som skjer når vi trykker på knappene. For eksempel kan A knappen vise et smilefjes mens B knappen viser et surfjes. Ved bruk av tilfeldigheter ( random ) kan vi få micro:bit til å bestemme hva som skal vises. Enten det er tilfeldige tall, bilder, ord eller korte setninger? https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/dice.svg/640px-dice.svg.png Tilfeldige tall er veldig nyttig og de er felles i mange spill. Hvorfor ellers har vi terninger? micro:bit kommer med mange ulike måter å bruke tilfeldigheter på. Vi starter med en enkel terning der vi ønsker at micro:bit skal velge et tilfeldig tall mellom 1 og 6. from microbit import * import random while True: if button_a.is_pressed(): display.show(str(random.randint(1, 6))) For at Python og micro:bit skal kunne bruke tilfeldigheter må vi hente inn tilfeldighets modulen i starten av koden. ( import random )

Når micro:bit skal håndtere en eller flere hendelser bruker vi en uendelig løkke som hele tiden følger med på hvilke betingelser vi legger inn i kode. Vi starter med A knappen som en betingelsen. Når vi trykker på A knappen skal den vise en tekst på skjermen ut fra betingelsene som er satt til skjermen. I dette tilfellet er det koden (str(random.randint(1, 6)) randint er en funksjon til random og returnerer verdien av heltall mellom 1 og 6 som er satt som argument i parentes. Siden displayet krever at det er tekst må vi konvertere det tilfeldige tallet til tekst. Dette gjøres ved at vi legger til str før koden for tilfeldig tall. For eksempel tallet 6 gjøres om til tekst 6. Du husker vel at Python starte med det innerst skallet før det jobbes utover. I dette tilfellet er random.randint(1,6) det innerste skallet og display.show er det ytterste skallet. display.show (str (random.randint(1, 6) ) ) Navn plukker https://pixabay.com/en/child-children-kids-people-life-1099755/ Ofte er det vanskelig å komme på et nytt navn. Enten om du venter baby eller trenger et tilfeldig navn. Hva med å ta utgangspunkt i de ti mest populære navnene og programmerer dette inn i en micro:bit? Vi henter ut en liste fra Statistisk sentralbyrå over de ti mest populære navnene. Navnene lagres i en liste med kommategn som skiller de ulike navnene. En for gutt og en for jente. Vi har tidligere sett på lister i Python der vi skiller innhold i lister ved hjelp av anførselstegn og komma. Dette fungerer fint om vi skal lage korte lister og vil bruke innholdet direkte. mat = [ Egg, Tomat, Agurk, Ost ]

Når vi skal lage lengre lister eller hente inn fra andre lister vi har fra før kan dette gjøres enkelt ved bruk av tre anførselstegn i start og slutt og skilletegn mellom verdiene. gutt = """ William,Oskar,Lucas,Mathias,Filip,Oliver,Jakob,Emil,Noah,Aksel """ I listen over er gutt satt til å være ti guttenavn som skilles ved hjelp av kommategn og rammet inn med tre anførselstegn ( ) i start og slutt. Når vi bruker denne metoden ser Python en lang streng av navn og komma. Skal vi hente ut de enkelte navnene må vi programmere hvilket tegn som skiller de ulike navnene. Til det bruker vi koden split og sier hvilke tegn som er skilletegn. I dette tilfellet er det tegnet komma. gutt_split = gutt.split(",") For å utnytte at vi splitter data fra en variabel ( gutt ) lager vi en ny variabel ( gutt_split ) der vi referere til variabelen ( gutt ) etterfulgt av metoden.split og hvilket argument vi bruker. I dette tilfellet ønsker vi å dele dataene ved hjelp av kommategnet og legger dette inn som et argument gutt.split(, ). Vi gjør tilsvarende for listen over jentenavn. Ved hjelp av de nye variabelenen ( gutt_split / jente_split ) kan vi bruke disse til å hente ut tilfeldige navn fra en liste ved hjelp av random.choice og argument som i dette tilfellet er gutt_split. Dette kan så knyttes opp mot en hendelse på micro:bit som i eksemplet under er lagt til A knappen for guttenavn. from microbit impor t * import random gutt = """William,Oskar,Lucas,Mathias,Filip,Oliver,Jakob,Emil,Noah,Aksel""" jente = """Nora,Emma,Sara,Sofie,Sofia,Maja,Olivia,Ella,Ingrid,Emilie""" gutt_split = gutt.split(",") jente_split = jente.split(",") while True: if button_a.is_pressed(): display.scroll(random.choice(gutt_split)) if button_b.is_pressed(): display.scroll(random.choice(jente_split)) if pin0.is_touched(): display.scroll(random.choice(gutt_split + jente_split)) else: display.show(image.heart) I koden over brukes A og B knappen pluss pinne P0. Lag nye lister der du også bruker pinne P1 og P2. Eks. tilfeldig dyr (P1) og tilfeldig gutt eller jente med et tilfeldig dyr (P2). Tips til siste: (random.choice(gutt_split + jente_split) + " : " + random.choice(dyr_split)) der (+ : +) legger til mellomrom og kolon mellom tilfeldig navn og dyr på micro:bit Eksempelkode: http://bit.ly/navn_dyr

Bevegelse https://commons.wikimedia.org/wiki/file:3d_coordinate_system.svg micro:bit kommer med akselerometer som gjør at den kan oppdage bevegelser i tre akser. X-akse: bevegelse mellom høyre og venstre Y-akse: bevegelse forover eller bakover Z-akse: bevegelse opp eller ned Ved bruk av akselerometeret i micro:bit returnere hver enkel akse et positivt eller negativt tall. Når verdien er tallet 0 er du i midten av den aktuelle aksen. Vi starter med X-aksen og lager et lite program som viser om micro:bit bevegere seg mot høyre eller venstre. from microbit import * while True: xakse = accelerometer.get_x() if xakse > 25: display.show("h") elif xakse < -25: display.show("v") else: display.show("-") For å hente ut data fra X-aksen bruker vi koden accelerometer.get_x(). Denne knytter vi opp mot en egendefinert variabel, xakse. Deretter bruker vi ulike betingelser ( if, elif og else ) for hva som skal vises på skjermen til micro:bit. Er verdien fra X-aksen større enn 25 eller mindre enn -25 skal den vise henholdsvis H (Høyre) eller V (Venstre). Er micro:bit i midten skal det vises en strek.

https://az742082.vo.msecnd.net/pub/xanjzxnk I steden for bruk av tekst kan vi bruke LED pixel displayet. Disse kan programmeres ved hjelp av koden display.set_pixel(x, y, lys). Der x er hvilket vannrett punkt som skal brukes, y er hvilket loddrett punkt som skal brukes og lys er hvor sterkt LED skal lyse (0 er av, og lysstyrke mellom 1-9) from microbit import * while True: xakse = accelerometer.get_x() display.clear() if xakse > 25: display.set_pixel(4, 2, 9) elif xakse < -25: display.set_pixel(0, 2, 9) else: display.set_pixel(2, 2, 9) Som dere ser av kode over har vi satt variabelen xakse til å lese verdien fra akselerometeret på X-aksen. Vi har lagt til tre betingelser. Er xakse verdien større enn 25 skal vi skru på LED (4,2) med full lysstyrke som tilsvarer grønn farge på figuren over. Når verdien er et positivt tall på X-aksen beveges micro:bit mot høyre. Tilsvarende når micro:bit beveges mot venstre får vi negative verdier og setter betingelsen til mindre enn minus 25 for blå farge på figuren over. Er verdien fra xakse mellom -25 og 25 skal displayet vise LED i midten på (2,2) og med full lysstyrke. For at vi skal få til en bevegelse av LED legger vi til display.clear() i den evige løkken (loop), slik at displayet tømmes mellom hver gang før den igjen ser på betingelsene. Siden den evige løkken går kjempefort, vil vi få LED som endres ved bevegelse av micro:bit til høyre eller venstre. Prøv å endre koden slik at du får til samme bevegelse av LED for Y-aksen, der LED beveger seg opp og ned når micro:bit beveges forover eller bakover. Koden for Y-aksen og akselerometeret er accelerometer.get_y()

Elektronisk vater https://commons.wikimedia.org/wiki/file:tool-level.jpg Til nå har vi prøvd ut både X-aksen og Y-aksen på micro:bit. Om vi kombinerer disse kan vi lage et elektronisk vater på micro:bit ved hjelp av LED displayet. For å kunne bruke LED displayet på micro:bit til vater må vi se på verdiene fra akselerometeret og hvilke verdier som kan brukes på pixlene. Vi starter med X-aksen. X-akse mer mot venstre litt mot venstre i vater litt mot høyre mer mot høyre Akselerometer > -500 (-1024 til -501 ) > -200 (-500 til -201) 0 (-200 til 200) > 200 (201 til 500) > 500 (501 til 1024) LED pixle X 0 1 2 3 4 Basert på tabellen over kan vi bruke dette i en egendefinert funksjon def xakse(verdi): som endrer verdiene på x ut fra hvilke forutsetninger som kommer inn ( x_acc ). I dette tilfellet vil det være verdiene fra akselerometeret som returnerer en verdi mellom 0 og 4 som vi kan bruke til å vise LED pixel på displayet. from microbit import * def xakse(x_acc): x = 0 if x_acc > -500: x = x + 1 if x_acc > -200: x = x + 1 if x_acc > 200: x = x + 1 if x_acc > 500: x = x + 1 return x while True: display.clear() x_display = xakse(accelerometer.get_x()) display.set_pixel(x_display, 2, 9)

Ser vi på koden x_display = xakse(accelerometer.get_x()) kan vi forklare den på følgende måte. Verdien som kommer fra accelerometer.get_x() sendes til xakse og returneres med en verdi som kan brukes i LED displayet i variabelen x_display. Denne kan vi så bruke i koden display.set_pixel(x_display, 2, 9) der vi skrur på LED på koordinatet (x_display, 2) med full lysstyrke (9). For at LED pixel skal endres mellom hver loop med spørring, bruker vi koden display.clear() i starten av loopen og LED beveger seg når vi beveger micro:bit. Prøv å utvid koden slik at du også får til bevegelse av LED pixel for Y-aksen samtidig som X-aksen også er aktiv. Tips! Du må utvide med en ny funksjon som oversetter verdiene fra Y-aksen og du må lage en ny variabel for y-koordinatet (eks. y_display ) Eksempelkode: http://bit.ly/vater_x_y Veien videre: Gå inn på nettressursen som dette dokumentet bygger på: http://microbit-micropython.readthedocs.io/en/latest/index.html