MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Relevanta dokument
Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

ENKEL Programmering 3

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Användarhandledning Version 1.2

Digitalt lärande och programmering i klassrummet

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Språket Python - Del 1 Grundkurs i programmering med Python

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 2 Programmeringsteknik och C DD1316

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Klassdeklaration. Metoddeklaration. Parameteröverföring

729G04 Programmering och diskret matematik. Python 3: Loopar

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Tentamen i Introduktion till programmering

TDIU01 - Programmering i C++, grundkurs

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

v. 42 Python HT17 En introduktion Oscar Bergqvist

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Övningsuppgifter kapitel 8

Uppgifter teknik HT17 (uppdaterad v. 40)

Grundläggande datalogi - Övning 1

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

v. 43 Python HT17 En introduktion Oscar Bergqvist

Sätt att skriva ut binärträd

DD1314 Programmeringsteknik

Språket Python - Del 2 Grundkurs i programmering med Python

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Laboration: Whitebox- och blackboxtesting

Programmeringsteknik med C och Matlab

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

TDIU01 - Programmering i C++, grundkurs

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

i LabVIEW. Några programmeringstekniska grundbegrepp

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Funktioner. Linda Mannila

Metoder (funktioner) Murach s: kap Winstrand Development

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

DD1361 Programmeringsparadigm. Carina Edlund

TDDE44 Programmering, grundkurs

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Inledande programmering med C# (1DV402) Summera med while"-satsen

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Föreläsning 3-4 Innehåll

Variabler och konstanter

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Inlämningsuppgift MiniPlotter

Introduktion till programmering och Python Grundkurs i programmering med Python

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Introduktion till programmering SMD180. Föreläsning 8: Listor

Logik och kontrollstrukturer

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Parameteröverföring. Exempel. Exempel. Metodkropp

Visual Basic, en snabbgenomgång

"Crash Course in Programming"

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

64 för BBC micro:bit. :GAME Varning: TM. Kortets layout:

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Tentamen , Introduktion till Java, dtaa98, dtea53

Datalogi för E Övning 3

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo,

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Kom igång med Micro:bit och JavaScript Blocks Editor. Framsida

Teknikhistoria: Den första programmeraren

Övningar i 2D2050. Per-Anders Staav (kallas Pa) Epost: eller

JavaScript Block Editor:

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Programmering A. Johan Eliasson

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Beräkningsvetenskap föreläsning 2

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Vilken skillnad gör det var du placerar det? Prova båda.

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Använda Python Laboration 1 GruDat, DD1344

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

7 GRUNDERNA I PROGRAMMERING

Objektorienterad Programmering (TDDC77)

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Problemlösning och funktioner Grundkurs i programmering med Python

Transkript:

MicroPython Ett textbaserad programmeringsspråk för Micro:bit Introduktion till informationsteknologi 1DT051 2018-09-24 karl.marklund@it.uu.se Uppsala universitet

Programming, problemlösning och algoritmer På kursen får du lära dig grundläggande principer som är oberoende av programmeringsspråk

Ada Lovelace 1815-1852 Enda barn till poeten Lord Byron och Anne Isabella Byron. Ada Lovelace - porträtt av brittiska konstnären Margaret Sarah Carpenter, 1836. Källa https://sv.wikipedia.org/wiki/ada_lovelace 2017-09-21

Charles Babbage 1791-1871 Brittisk matematiker berömd för sina skisser på maskiner, till exempel differensmaskinen och den betydligt mer ambitiösa analysmaskinen, som var föregångare till dagens datorer. Källa https://sv.wikipedia.org/wiki/charles_babbage 2017-09-21

Den analytiska maskinen 1837 Den analytiska maskinen var världens första ritning på en mekanisk programmerbar dator. Maskinen blev aldrig färdigställd. En modell av en del av den analytiska maskinen byggd av Baggage. Maskinen bestod av en aritmetisk logisk enhet (ALU) och en kontrollenhet med stöd för alternativ (branches) och slingor (loops). Än i dag är datorer uppbyggda på samma sätt fast gjorda av miljontals små transistorer istället för av kugghjul och stänger. Källa https://en.wikipedia.org/wiki/analytical_engine 2017-09-21

Ada Lovelace 1815-1852 Enda barn till poeten Lord Byron och Anne Isabella Byron. Makarna separerade en månad efter att dottern fötts. Adas mor var bitter på Lord Byron, och hon främjade dotterns intresse för matematik och logik i ett försök att förhindra att också hon utvecklade den galenskap som hon såg hos barnafadern. Källa https://sv.wikipedia.org/wiki/ada_lovelace 2017-09-21

Adas Lovelaces matematiska talanger lade grunden för ett långvarigt samarbete med Charles Babbage. Åren 1842 43 översatte Ada en artikel om maskinen skriven av den italienske ingenjören Luigi Menabrea, vilken hon kompletterade med en omfattande notapparat. Dessa noter innehåller vad många anser vara det första datorprogrammet. I sina noter tryckte Lovelace på skillnaden mellan den analytiska maskinen och tidigare räknemaskiner, särskilt vad gäller dess möjlighet att programmeras för att lösa problem av olika svårighetsgrad. Datorspråket Ada, skapat för USA:s försvarsdepartement i slutet av 1970-talet, namngavs efter Ada Lovelace. Sedan 1998 har Computer Society delat ut Lovelace Medal till hennes ära. Ada Lovelace Day är ett årligt evenemang i mitten av oktober, med målet att stärka den kvinnliga närvaron inom vetenskap, teknologi, ingenjörsvetenskap och matematik. Källa https://sv.wikipedia.org/wiki/ada_lovelace 2017-09-21

På kursen får du lära dig grundläggande principer som är oberoende av programmeringsspråk Under din utbildning kommer du inte bli expert på ett specifikt programmeringsspråk. Du kommer att bli expert på att förstå hur olika typer av programmeringsspråk fungerar. Du kommer bli expert på att bryta ner problem så att de går att lösa med programmering. Du kommer bli expert på att lära dig nya programmeringsspråk.

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Programmering Programmering handlar om att hitta en sekvens av instruktioner som automatiserar lösningen av ett givet problem eller automatiskt utför en viss procedur.

Programmeringsspråk Programspråk, eller programmeringsspråk, är ett språk som en människa använder för att skapa datorprogram Källa https://sv.wikipedia.org/wiki/programspråk 2017-09-20

Syntax Varje programmeringsspråk har en uppsättning regler som bestämmer hur bokstäver eller andra symboler kan kombineras för att utgöra ett giltigt program, dessa regler utgör språkets syntax.

Blocks Blocks är ett exempel på ett visuellt programmeringsspråk för Micro:bit. En stor fördel med visuella programmeringsspråk är att de grafiska objekten endast går att kombinera på vissa sätt, dvs det går endast att skapa syntaktiskt korrekta program.

Textbaserade programmeringsspråk De visuella programmeringsspråken är relativt få till antalet. Det övervägande antalet programmeringsspråk är i stället textbaserade där programmeraren konstruera sitt program genom att i text beskriva vad programmet skall göra. Programmeraren måste vara mycket noggrann med detaljer för att inte av misstag skapa text som inte följer språkets regler, dvs av misstag skapa program med syntaxfel.

Blocks Programmering sker genom att sammanfoga grafiska block.

MicroPython MicroPython är ett textbaserat programmeringsspråk för Micro:bit.

Variant av Python 3 MicroPython är en variant av Python 3 som är optimerad för att köras på en mikrokontroller, dvs köras på en dator med begränsade resurser. MicroPython inkluderar ett urval av Pythons standardbibliotek och åtkomst till funktionalitet specifikt för en viss sorts hårdvara fås genom import av olika moduler.

Blocks MicroPython

Import av modul from microbit import * Funktionalitet som är specifik för Micro:bit finns i modulen microbit. Alla program du skriver i språket MicroPython för Micro:bit bör börja med denna rad. *Stjärnan betyder importera allt från modulen microbit.

Paus from microbit import * display.show(image.happy) sleep(3000) display.show(image.heart) För att ta en paus i 3 sekunder används funktionen sleep med argumentet 3000 (ms). Funktionen sleep är en av de funktioner som vi importerat från modulen microbit.

Visa ikon på displayen Blocks I text skriver vi så här för att visa ikonen med ett glatt ansikte på displayen. display.show(image.happy)

Korrekt syntax display.show(image.happy) Syntaxfel display..show[image.happy) En punkt för mycket Fel sorts parentes

Kommentarer i koden I Python används tecknet # för att placera kommentarer i koden. Kommentarer är endast till för en mänsklig läsare av koden och har ingen effekt på programmet under körning. Syntax: En kommentar börjar alltid med # och sträcker sig till slutet av raden. # Visa ett hjärta på displayen display.show(image.happy) display.show(image.happy) # Visa ett hjärta

Variabler I Blocks kan vi skapa variabler och lagra värden i variabler Motsvarande program i MicroPython ser ut så här. from microbit import * x = 2 Syntax: I MicroPython används operatorn = för att tilldela en variabel ett värde.

Syntax för test av likhet I Python används operatorn = för att tilldela en variabel ett värde. För att testa om något är lika med något används operatorn ==. from microbit import * # Tilldelning x = 2 # Test av likhet, ger resultat False x == 4 # Test av likhet, ger resultat True x == 2

Objekt, metod och attribut I MicroPython representeras olika delar av hårdvaran och annat i form av olika objekt. Ett objekt lagrar data av olika slag i form av attribut. Ett objekt kan även ha ett antal metoder som låter oss göra något med objektet.

Åtkomst av attribut För att komma åt ett attribut hos ett objekt skrivs namnet på objektet följt av. (punkt) följt av namnet på attributet. Detta är ett exempel på syntax, dvs en regel som bestämmer hur vi måste skriva för att komma åt ett objekts attribut.

} namn på objekt } I MicroPython lagras alla ikoner som attribut i objektet Image. namn på punkt attribut

Anrop av metod För att göra något med ett objekt anropar vi något av objektets metoder. För att anropa en metod på ett objekt skriver vi: först namnet på objektet följt av. (punkt) följt av namnet på metoden följt av vänster-parentes ( följt av eventuella argument (indata) till metoden separerade med, (komma) och slutligen höger-parentes ). Detta är ett exempel på syntax, dvs en regel som bestämmer hur vi måste skriva för att anropa en metod på ett objekt.

Visa något på displayen Ett exempel på ett objekt är display som representerar LED-displayen. För att göra något med displayen kan vi anropa något av objektet displays metoder. Objektet display har till exempel en metod show som kan användas för att visa en sträng eller en bild på displayen. display.show(image.happy)

} namn på objekt } }argument punkt namn på metod parenteser Här anropas metoden show på objektet display med argumentet Image.HAPPY som i sin tur utgör attributet HAPPY på objektet Image.

notation() För att i vanligt skrift (ej kod) göra det tydligt att något är en funktion eller metod brukar ett par tomma parenteser läggas till efter namnet på funktionen eller metoden. I kod kan en metod behöva anropas med argument innanför parenteserna. Exempel Funktionen sleep() som vi importerat från modulen microbit. Metoden show() som vi kan anropa på objektet display. Ibland skrivs även namnet på objektet ut, till exempel display.show().

Utdata på displayen En form av utdata (output) från en Micro:bit är att visa något på LED-displayen. Ljusstyrkan på varje diod kan justeras i tio steg från 0 (av) till 9 (max).

Rita pixel Tänd dioden i mitten av displayen. Anrop av metoden set_pixel på objektet display med argumenten 2 (x), 2 (y) och 9 (maximal ljusstyrka). from microbit import * display.set_pixel(2, 2, 9)

Visa en sträng Skrolla strängen "Hello!" på displayen. from microbit import * display.show("hello!") Syntax: I MicroPython måste en sträng omslutas av enkla eller dubbla citattecken.

Visa heltal Med display.show(x) kan vi visa x på skärmen om x är en sträng eller bild (till exempel en ikon). Om vi vill visa ett heltal x på skärmen måste x först konverteras till en sträng med hjälp av funktion str().

Visa heltal Visa heltalet 7 på displayen. from microbit import * display.show(str(7))

Egen bild from microbit import * hulk_hogan = Image("00000:" "09090:" "00000:" "99999:" "90009") display.show(hulk_hogan) Varje rad om fem dioder representeras av en sträng med fem siffror följt av : (kolon). Varje siffra anger ljusstyrkan på en diod med hjälp av en siffra i spannet 0 (av) - 9 (max).

Rensa displayen from microbit import * display.show(image.happy) sleep(3000) display.clear() För att rensa displayen anropar vi metoden clear() på objektet display. Metoden clear tar inga argument, därav den tomma parentesen ().

SARA Vi har tidigare i bekantat oss med begreppen sekvens, alternativ, repetition och abstraktion (SARA) och sett konkreta exempel på SARA i Blocks. På samma sätt behöver vi när vi programmerar i MicroPython i text ha möjlighet att uttrycka sekvens, alternativ, repetition och abstraktion.

Sekvens from microbit import * display.show(image.heart) sleep(100) display.show(image.heart_small) sleep(100) display.show(image.heart) sleep(100) display.show(image.heart_small) sleep(100) display.show(image.heart) I MicroPython beskriver vi i text vad programmets skall göra med en operation per rad. Operationerna utförs sedan uppifrån och ner, rad för rad.

Alternativ if x > 0: x = x - 1 else: x = 4

Nyckelord och syntax I Python utgör if och else nyckelord i språket. Indrag (mellanslag eller tab) och : (kolon) utgör delar av språkets syntax, dvs är del av de regler som bestämmer hur nyckelord och andra symboler kan kombineras.

Syntaxen för en if-sats kräver att: den första raden med nyckelordet if och ett villkor måste sluta med : (kolon) raden eller raderna som följer direkt efter raden med nyckelordet if måste föregås av lika stora indrag (mellanslag eller tab) raden med nyckeordet else måste sluta med : (kolon) raden eller raderna som följer direkt efter raden med nyckelordet else måste föregås av ett lika stort indrag (mellanslag eller tab) som raden eller raderna direkt efter raden med nyckelordet if.

Testa flera alternativ if x < 0: display.show(image.sad) elif x > 0: display.show(image.happy) else: display.show(image.confused) I MicroPython lägger vi till nyckelordet elif för varje ytterligare villkor vi vill testa.

Repetition from microbit import * n = 1 while n <= 5: display.show(image.heart) sleep(500) display.show(image.heart_small) sleep(500) n = n + 1 display.clear() I Python utgör while ett nyckelord i språket och används för att skapa en slinga så länge ett villkor är uppfyllt.

Abstraktion from microbit import * def heartbeat(): display.show(image.heart) sleep(100) display.show(image.heart_small) sleep(100) display.clear() heartbeat() I MicroPython (och Python) måste en funktion definieras innan den anropas. För att definiera en funktion används nyckelordet def följt av namnet vi vill ge funktionen, i detta fall heartbeat och sedan vänster-parentes ( följt av höger-parentes ) följt av : kolon. All rader med kod som hör till funktionen måste inledas med ett lika stort indrag. Den sista raden heartbeat() utgör ett anrop av funktionen heartbeat.

Funktioner kan ta parametrar Till skillnad från Blocks kan funktioner i Python ta en eller flera parametrar. from microbit import * def double(n): return 2*n display.show(str(double(3))) Funktionen double tar en parameter n. Nyckelordet return används för att berätta vilket värde som funktionen skall ge som resultat vid anrop.

Anrop av funktion steg för steg from microbit import * def double(n): return 2*n display.show(str(double(3)))

Vid anrop av funktionen double med argumentet 3 tilldelas parametern n värdet 3. vid körning av funktionen. from microbit import * def double(n): return 2*n display.show(str(double(3)))

Vid anrop av funktionen double med argumentet 3 tilldelas parametern n värdet 3. vid körning av funktionen. from microbit import * def double(n = 3): return 2*n display.show(str(double(3)))

I funktionen double kan nu alla förekomster av parametern n ersättas med värdet 3. from microbit import * def double(n = 3): return 2*n display.show(str(double(3)))

I funktionen double kan nu alla förekomster av parametern n ersättas med värdet 3. from microbit import * def double(n = 3): return 2*3 display.show(str(double(3)))

Returvärdet kan nu beräknas. from microbit import * def double(n = 3): return 2*3 display.show(str(double(3)))

Returvärdet kan nu beräknas. from microbit import * def double(n = 3): return 6 display.show(str(double(3)))

Returvärdet ersätter nu anropet till funktionen double. from microbit import * def double(n = 3): return 6 display.show(str(double(3)))

Returvärdet ersätter nu anropet till funktionen double. from microbit import * def double(n): return 2*n display.show(str(6)) När funktionen har kört klart återstår endast definitionen av funktionen double för ett godtyckligt värde på parametern n.

Funktionen str kan nu konvertera heltalet 6 till strängen "6". from microbit import * def double(n): return 2*n display.show(str(6))

Funktionen str kan nu konvertera heltalet 6 till strängen "6". from microbit import * def double(n): return 2*n display.show("6")

Mer om indrag from microbit import * def heartbeat(n): while n > 0: display.show(image.heart) sleep(500) heartbeat(3) display.show(image.heart_small) sleep(500) display.clear() sleep(500) n = n - 1

enkelt indrag dubbelt indrag definition av funktion anrop av funktion

Arrayer och listor I Blocks kan vi lagra flera element av samma datatyp tillsammans i en array. I exemplet nedan lagars tre stycken bild-ikoner i arrayen faces.

Arrayer och listor I Blocks kan vi lagra flera element av samma datatyp tillsammans i en array. I exemplet nedan lagars tre stycken bild-ikoner i arrayen faces. I Python kan vi istället lagra de tre bild-ikonerna i en lista. faces = [Image.HAPPY, Image.CONFUSED, Image.SAD] Syntax: en lista börjar alltid med [ och avslutas alltid med ]. Elementen i listan separeras med, (komma).

Slinga över alla element from microbit import * faces = [Image.HAPPY, Image.CONFUSED, Image.SAD] for face in faces: display.show(face) sleep(1000)

Räkna knapptryck Med button_a.get_presses() får vi reda på antalet tryck på knapp A sedan förra gången vi använde button_a.get_presses() som ett heltal. För att visa detta heltal på displayen måste heltalet först konverteras till en sträng med hjälp av str(). from microbit import * display.show(image.happy) sleep(5000) display.show(str(button_a.get_presses()))

Event loop Alla program i MicroPython som behöver vänta på någon form av händelse (event), till exempel knapptryckning, använder sig av en så kallad event loop. En event loop är en oändlig slinga, dvs en slinga som aldrig tar slut där vi för varje varv kontrollerar om något har inträffat. while True: # Kod som körs varje varv i slingan. # Kontrollera om något har hänt # och hantera detta. Slingan while True: tar aldrig slut eftersom villkoret True är konstant och aldrig kan bli False. Inuti event loopen kan vi sedan lägga till kod som kontrollerar om något har hänt och hantera detta.

Reagera på knapptryck Objekten button_a och button_b har båda metoden is_pressed() som returnerar True om respektive knapp är nedtryckt och annars returnerar False. from microbit import * display.show(image.heart) while True: if button_a.is_pressed(): display.show(image.happy) elif button_b.is_pressed(): display.show(image.sad)

Reagera på skakning Förutom den vanliga importen from microbit import * importeras även modulen random. I event loopen använder vi kontrollstrukturen if tillsammans med accelerometer.was_gesture("shake") som returnerar True vid skakning och annars returnerar False. from microbit import * import random while True: if accelerometer.was_gesture("shake"): display.show(str(random.randint(1, 6)))