Programmera Micro:bit med hjälp av MicroPython

Syfte

Syftet med arbetsområdet är dels att du lära dig programmera enklare kod i textbaserade programspråket Python och dels koppla enklare elektriska kretsar till Microbit, och på det sättet pröva på styr- och regler med hjälp av elektronik och programmering.

Inledande information

  • När du ska programmera Micro:bit ska du använda MicroPython i en Google Chrome eller Microsoft Edge webbläsare för att den ska fungera bäst.
  • När du skrivit in koden ska du klicka på Connect i menyn.
  • Ett fönster kommer upp och där klickar du först på "BBC Micro..." och sedan på anslut.
  • Då omvandlas "Download" till "Flash". När du klickar på Flash så laddas koden över till Micro:bit och den startar om.

Länkar

Hur du ska dokumentera i loggboken

Du ska skriva följande i loggboken:
  1. Vad du gjorde. Förklara kortfattat vad du har gjort.
  2. Vad som hände – Resultat. Gör skärmdumpar (Windows: windows+shift+S, Mac: cmd+shift+4) och fotografera.
  3. Vad du lärde dig – Förklaring. Det är här du ska lägga fokus på ditt skrivande. Du ska förklara hur programkoden fungerar och vad du lärt dig, samt reflektioner som du haft. Om du utvecklat projekten vidare ska du förklara dessa också.

Material

  • Denna webbsida
  • MicroPython
  • MicroPython Documentation
  • Microbit, breakoutboard, kopplingsplatta, liten högtalare, motstånd, LED-lampor i olika färger och sladdar till elektronik

Efter detta arbetsområde ska du kunna:
  • skriva enklare programkod i Python.
  • få Microbiten att visa text och bilder på dess LED-lampor.
  • läsa och skriva koder med if-elif-else satser, och kunna förklara vad som menas med if-satser.
  • läsa och skriva kod som känner av A och B knappen på Microbit.
  • vad som menas med variabler och hur man kan lägra värden i en variabel och sedan åter använda värdet i en variabel.
  • vet vad som menas med Random och hur man kan använda random.randInt(a, b).
  • läsa och skriva kod där man använder accelerometern för att för Microbiten att göra en bestämd uppgift.
  • koppla till en högtalare och spela enklare musik på Microbiten.
  • *koppla in LED-lampa till Microbiten och skapa kod som visar morsekod.
  • koppla in tre LED-lampor(grön, gul och röd) till Microbiten och skapa en kod så lamporna lyser som ett trafikljus.
  • koppla in en röd och en grön LED-lampa till till trafikljuset. Skapa en kod så det är grönt på trafikljuset och rött för gående ända till någon trycker på ena knappen på Microbiten, och då ska det bli rött för bilarna och grönt för gående.

Kompilerat språk. Programspråk där programmeraren kompilerar programmet. Då omvandlas omvandlas programmeringskoden till maskinkod. Fördelen är att programmet blir snabbt och tar lite plats. En nackdelen är kompileringen kan ta lång tid om programmet är stort. En annan nackdel är att programmet måste kompileras för varje typ av processor och operativsystem som programmet ska köras på.

Interpreterat språk. Programkoden omvandlas till maskinkod i samband med att den körs. Detta gör att koden måste tolkas och omvandlas varje gång programmet ska användas, vilket gör programmet långsammare. En fördel är att samma programkod kan köras på datorer med olika processorer och operativsystem.

Procedurorienterat språk. Det är ett programspråk där instruktionerna kommer efter varandra. Det finns loopar, if-satser och funktioner. Fokus ligger på hur göra små och snabba program.

Objektorienterat språk. Ett exempel på ett objekt är fönstret i ett program. Den har olika egenskaper som storlek, färg och placering. I ett objektorienterat program placerar man data/information i centrum och skapar funktioner som förändra den information. Alla vanliga datorprogram som vi använder är programmerat i ett objektorienterat språk. De tar mer plats och är långsammare än procedurorienterat program, men det går snabbare att programmera och risken för fel minskar.

Virtual machine. Ofta när man säljer ett program vill man inte att köparen ska kunna läsa din kod och ändra i den. Genom att omvandla programkoden till Bytekod, och sedan ha en virtual machine i datorn som snabbt kan omvandla bytekoden till maskinkod. Föredelen är att programmet går snabbare än interpreterat språk och andra kan inte läsa din kod.

De populäraste programspråken genom tiden (1965-2020):

Vanliga programspråk

Det finns många med olika programspråk. De är alla bra på olika saker. Man måste välja det språk som fungerar bra till det man ska använda programmet till. Man använder olika programspråk beroende på om man vill programmera en Mac, en Windows dator, en Server, en Android telefon eller en Webbsida.

C. Det finns ett programspråk som heter C. Det skapades i början av 1970-talet . Programspråket är ett procedur-orienterat och kompilerande språk. Med procedur-orienterat menar man att alla instruktioner kommer efter varandra och man kan skapa funktioner som man kan anropa. Med kompilerat programspråk menas med att all kod omvandlas till maskinkod innan programmet kan köras. Maskinkod är den kod som processorn förstår. Det skapades till telefonväxlar i USA. Programmen göras mycket snabba och ta lite plats. I MacOS, IOS och Windows används C i de delar som körs ofta och behöver vara riktigt snabba.

C++, Objective-C och Swift. För att programmera stora program som använder fönster och liknande, så använder man ett objektorienteratprogramspråk. Ett exempel på ett objekt är ett programfönster, den har egenskaper som storlek, placering på skärmen och olika innehåll. I C++ och Objective-C har utgått från C och lagt på objektorienterande funktioner. Windows programmeras ofta i C++. MacOS och IOS programmerade innan med Objective-C, men Apple har vidareutvecklat Objective-C till Swift som blivit populärt. C++, Objective-C och Swift är alla tre kompilerande språk.

Java. Java är ett objektorienterat språk. Istället för att kompilera till maskinkod, så skapas bytekod. För att köra din kod, har man en virtuel machine som är snabb på att omvandla bytekoden til maskinkod. På detta sätt kan programkoden fungera oavsett vilken typ av processor man har. Androidtelefoner programmeras ofta i Java. Google har utvecklat ett nytt språk som heter Kotlin som blivit populärt på Androidtelefoner.

Javascript. Javascript är ett interpreterande språk. Med interpreterande språk menas att programmen inte kompileras utan när man kör programmen läses programkoden och då omvandlas till maskinkod som körs direkt. Detta tar längre tid och programmen blir lite långsammare. Brendan Eich blev ombedd att göra så man kunde programmera webbsidor. Han gillade ett språk som hette Lisp/Scheme som har många objectorienterade egenskaper, men ser inte ut som andra språk. Hans chefer ville att det skulle se ut som C. På ett par veckor gjorde han om Lisp så det såg ut som C. Språket har haft några olika namn i början, men heter numera EMCA-script, men nästa alla kallar det för Javascript. Många programmerare gillar inte Javascript för det ser inte ut och beter sig inte som andra programspråk, men förstår man hur Lisp/Scheme fungerar så är det ett riktigt bra språk. Programspråket finns i alla webbläsare.

Fortran och Python. Ursprungligen var Fortran ett procedurorienterat och kompilerat programspråk. Det är äldre än C. Det har länge varit mycket populärt bland matematiker, som haft ett antal programbibliotek för att beräkna ekvation och liknande. De första persondatorerna hade programspråket Basic inbyggt. Det påminde om Fortran men var interpreterande. Python har blivit populärt för det är objektorienterat och interpreterande och har många matematiska programbibliotek. Därför håller Fortran på att försvinna.

PHP, C# och Node. Om du är inloggad på en webbsida, så anpassas den efter dig. T ex om du är inloggad på banken, kan du se dina konton och inga andra. För att detta ska bli rätt, så körs det ett program på Servern som läser olika data från en databas och gör om det till en webbsida. Två av de mest populära programspråken är PHP och C#, men även C och Python kan användas. Node är variant av Javascript som kan köras på både en vanlig dator och på en server. En fördel med Node är att man kan använda Javascript både på Servern och i webbläsaren, vilket gör det lättare för programmeraren. Både Google och Amazon använder Node på deras servar för webbsidor.

Lektion 1 – Hello World!

1. Skriv in koden i MicroPython, ladda ned till din Micro:bit och se vad som händer.
Förklara vad som händer i programkoden.
2. Byt ut "Hello World!" till ditt namn eller annan hälsning.
3. I MicroPython manualen finns många andra bilder/emojis. byt ut och testa andra bilder.


from microbit import *

while True:
	display.scroll('Hello World!')
	display.show(Image.HAPPY)
	
Lektion 2 – if-satser och knappar

Knappar

1. Förklara vad som händer i programkoden.
2. Förklara vad som menas med if-sats och hur den fungerar.


from microbit import *

while True:
    if button_a.is_pressed():
        display.show(Image.HAPPY)
    elif button_b.is_pressed():
        display.show(Image.SMILE)
    else:
        display.show(Image.SAD)
	

Avläsa temperaturen

3. Förklara vad som händer i programkoden.


from microbit import *
import random

dice=""

while True:
    if button_a.is_pressed():
        temp=temperature()
        display.scroll(str(temp)+' C')
    elif button_b.is_pressed():
        dice=str(random.randint(1, 6))
    else:
        display.show(dice)
	
Lektion 3 - Sten, Sax, Påse

Testa koden nedan. Förklara vad som händer i koden.


from microbit import *
import random

while True:
    if accelerometer.was_gesture("shake"):
        choice = random.randint(1,3)
        if choice==1:
            display.show(Image.SQUARE)
        elif choice==2:
            display.show(Image.DIAMOND_SMALL)
        else:
            display.show(Image("99009:99090:00500:99090:99009"))
    
Lektion 4 - Metronom och morsekod

Högtalaren

1. Koppla in Högtalaren som på bilden ovan.
Testa programkoden. Du kan behöva ha örat nära högtalaren.
Förklara vad som händer i programkoden.


from microbit import *

while True:
    pin0.write_digital(1)
    sleep(20)
    pin0.write_digital(0)
    sleep(480)
	

2. Prova följande kod. Här är en länk till en sida med fler låtar.


import music

music.play(music.NYAN)
	

Morsekod

3. Byt ut högtalaren mot en ledlampa och ett motstånd, se bilden på lektion 5.
Ändra sleep(20) till sleep(500) och sleep(480) till sleep(1000). Testa koden.
4. Kan du modifiera koden så du kan skicka SOS som morsekod? Tre kort-tre långa-tre korta blinkningar.
5. Kan du skicka andra meddelanden?

Lektion 5 - Trafikljus 1

1. Koppla in röd LED-lampan som på bilden ovan.
Testa programkoden.
Förklara vad som händer i programkoden.


from microbit import *

while True:
    pin0.write_digital(1)
    sleep(500)
    pin0.write_digital(0)
    sleep(1000)
	

2. Koppla in en gul LED-lampa på pin1 och en grön på pin2.
3. Modifiera koden så de tänds efter varandra.

4. Ett trafikljus tänds enligt ovanstående mönster.
Modifiera koden så ditt trafikljus tänds på samma sätt.
Lyckas du göra så det aldrig uppstår att alla lampor är släckta?

Lektion 6 - Trafikljus 2

Du ska utveckla vidare ditt trafikljus. Tänk dig att det alltid är gröntljus för bilarna tills någon trycker på knappen. Då ska det bli röttljus för bilarna och grönt för gående.
1. Förra tillfället skapade ni ett trafikljus. På lektion 2 fick du lära dig hur knapparna fungerade. Nu ska nu bearbeta din kod så att den gröna lampan lyser tills att man trycker på knapp A. Då ska ljuset ändras till rött enligt samma mönster som förra gången.
2. Nu ska du lägga till grön-och-röd-gubbe för gående. Koppla in två LED-lamporpin8 och pin16. Du ska få dessa lampor att lysa enligt följande mönster: