Adafruit Circuit Playground Express Ohjelmointi Microsoft MakeCode:lla Sini Riikonen, sini.riikonen@helsinki.fi 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 1
Microsoft MakeCode ohjelmointiympäristö Ohjelmointitila Microsoft MakeCode-ohjelmointinäytössä ohjelmointi tapahtuu vetämällä halutut ohjelmointiblokit valikosta ohjelmointialueelle. Useimpia Circuit Playground Expressin ominaisuuksia on mahdollista ohjelmoida tässä ympäristössä Microsoft MakeCode toimii kaikissa moderneissa selaimissa ilman erillisiä asennuksia. Se löytyy osoitteesta https://makecode.adafruit.com/ Valmiit harjoitukset Circuit Playground Expressin MakeCode-ympäristöstä löytyy paljon valmiita harjoituksia ja projekteja, joilla sen käyttöä voi harjoitella itsenäisesti. Harjoitukset ohjaavat käyttäjää vaiheittain ja kertovat mitä ja miksi kussakin vaiheessa tehdään. Harjoitukset ovat englanninkielisiä. 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 2
Koodin simulointi MakeCode-alustalla Tehtyä koodia on mahdollista kokeilla suoraan Microsoft MakeCode ohjelmointialustalla. Ohjelmointialustan vasemmassa yläkulmassa oleva Circuit Playground Express levyn kuva toimii simulaattorina. Se näyttää, mitä koodi kulloinkin tekee ja siinä voi esimerkiksi kokeilla myös painikkeille tehtyjä koodeja, levyn ravistamista jne.. Koodia ei siis jokaista kokeilua varten tarvitse siirtää levylle! 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 3
MakeCode for Adafruit Windows 10 -aplikaatio MakeCode-ympäristö on mahdollista asentaa myös Windows 10 - aplikaationa. Aplikaatio mahdollistaa sensorien livedatan seuraamisen! Aplikaatio löytyy Microsoft Storesta nimellä MakeCode for Adafruit 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 4
Tutustuminen MakeCode -ympäristöön Avaa MakeCode-ympäristö ja aloita uusi projekti Etsi kuvassa olevat palikat ja tee niitten avulla kuvan koodi. Ledejä voi ohjelmoida suoraan "show ring"-palikassa näppäilemällä. Harmaa väri tarkoittaa, että ledi on pois päältä Mitä ajattelet, että koodi tekee? Miksi koodissa on pause-blokkeja? Lataa koodi levylle Download-napista ja seuraa näytöllä annettuja ohjeita. 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 5
Sisäisten NeoPixel-ledien ohjaus 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 6
NeoPixelien värin asettaminen Pikselin väri voidaan asettaa joko kaikille pikseleille yhtä aikaa tai jokaiselle pikselille erikseen käyttämällä show ring, set all pixels to tai set pixel color at x to blokkeja. Jälkimmäisessä numero x tarkoittaa pikselin järjestysnumeroa ylhäällä oikealla olevasta pikselistä myötäpäivään laskien. Väri voidaan määritellä värinvalitsimella, värin nimellä, RGB-arvolla tai HSV-arvolla. Musta (tai show ring blokin harmaa) tarkoittaa, että ledi asetetaan pois päältä. Huomaathan, että kaikkia värejä ei voi toistaa ainakaan tarkasti valolla! 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 7
Muita NeoPixel-ledien ohjaukseen liittyviä blokkeja Animaatiot 1. Graafit ja valopiste 1. MakeCode ympäristöstä löytyy useita valmiiksi ohjelmoituja animaatioita. Animaatioita voidaan ohjelmoida näkymään jatkuvasti, tietyn ajan tai ruutu kerrallaan. Stop all animations blokki pysäyttää käynnissä olevan animaation. Tämä on tarpeellista esimerkiksi silloin kun halutaan laitteen tekevän jotakin heti jos jokin tapahtuma havaitaan. 3. Graph-blokilla voidaan valokehä saada esittämään numeroarvoja, esimerkiksi sensoridataa. Photon blokkien avulla kontrolloidaan valokehää kiertävää valopistettä. Kirkkaus ja sammutus 2. 3. 2. Set brightness blokki asettaa ledien kirkkauden. Kirkkauden arvo voi olla välillä 0-255. Clear sammuttaa kaikki ledit. 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 8
Sensorien ohjelmointi 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 9
Kaksi tapaa käyttää sensoridataa ohjelmoinnissa Sensoridataa voidaan hyödyntää kahdella eri tavalla MakeCodella ohjelmoitaessa: Tapahtumina (on event), jolloin koodi suoritetaan aina kun haluttu tapahtuma havaitaan. Seuraamalla "live-dataa" (if then -rakenne) 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 10
Sensorien tapahtumien selitykset Valosensori 1. Lämpötila 1. Dark: Hämärää tai pimeää Bright: Kirkas valo Raja-arvo voidaan asettaa välille 0-1023 3. hot: lämpimämpää kuin rajaarvo cold: kylmempää kuin raja-arvo Liikesensori 2. shake: levyä ravistetaan logo up: logo on ylöspäin logo down: logo on alaspäin screen up: näyttöpuoli on ylöspäin screen down: näyttöpuoli on alaspäin tilt left: levyä kallistetaan vasemmalle tilt right: levyä kallistetaan oikealle free fall: levy putoaa 3g: kiihtyvyys 3g 6g: kiihtyvyys 6g 2. 3. 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 11
Sensorien tapahtumien selitykset Ääni 1. Liukukytkin 1. Kun äänen voimakkuus on suurempi kuin raja-arvo. 3. Liukukytkintä pitää liikuttaa määriteltyyn suuntaan jotta tapahtuma aktivoituu Painikkeet 2. click: nappia napautetaan (nopea alas, ylös) double click: nappia napsautetaan nopeasti kaksi kertaa peräkkäin long click: nappia painetaan ja pidetään hetki pohjassa ennen vapauttamista up: nappi vapautetaan kun se on painettu alas down: nappi painetaan alas held: nappia pidetään alhaalla 2. 3. 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 12
If - else if - else rakenne If-lause tarkoittaa, että annetun ehdon toteutuessa ohjelma suorittaa annetun koodin. If-lauseita voi ketjuttaa monimutkaisemmiksi if - else if - else rakenteiksi. Ketjuttaminen tapahtuu helposti painamalla "+"- painiketta palikan vasemmassa alakulmassa. If-rakenteesta tulee if-else If-else rakenteesta tulee if-else if-else Ehtolauseiden kanssa tarvitaan usein matematiikkaa. Esim. pienempi kuin suurempi kuin yhtä suuri kuin suurempi kuin, mutta pienempi kuin jne. Huom! If-lauseet eivät jatkuvasti odota, millä hetkellä annettu ehto toteutuu vaan ne suoritetaan ohjelmoijan määräämässä järjestyksessä. 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 13
Live-datan seuraaminen Valmistelu 1. Levyn sensorien tuottamaa livedataa voidaan seurata MakeCode for Adafruit Windows 10 aplikaatiolla. Livedatan seuraamiseksi täytyy levylle viedä seurantakoodi, tässä esimerkissä seurataan valo-olosuhteita. 1. 2. 2. Kun koodi on onnistuneesti viety levylle ilmestyy simulaatioalueelle Show console Device -painike Seuranta ja datan vieminen Excel-tiedostona 3. Nyt dataa voidaan seurata reaaliaikaisesti. 3. 4. 4. Data voidaan myös viedä konsolin oikeassa yläkulmassa olevalla latauspainikkeella Exceliin jatkokäsittelyä varten. 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 14
Muita ohjelmoinnissa usein tarvittavia elementtejä 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 15
Muuttuja Muuttujaa eli muuttuva luku tulee suoraan matematiikan muuttujan käsitteestä. Muuttujaa tarvitaan esimerkiksi kun halutaan laskea jonkin tapahtuman esiintymiskertoja Kuvan esimerkissä lasketaan painikkeen A painalluksia Muuttujalle annetaan alussa arvo 0 Jokainen painikkeen A painallus lisää muuttujan arvoon yhden. Jos muuttuja saa arvon 10 levy ilmoittaa siitä äänimerkillä ja vaihtaa muuttujan arvon takaiksin nollaksi, jolloin laskuri aloittaa alusta 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 16
Funktio Funktiot ovat ennalta määriteltyjä koodeja, joita voidaan kutsua koodin sisällä. Kun funktiota kutsutaan tarkoittaa se, että ohjelma suorittaa funktion määrittelyssä annetun koodin. Funktioiden avulla voi erityisesti pitkiä koodeja yksinkertaistaa ja näin tehdä niitten käsittelystä helpompaa ja välttää virheitä. Kuvan esimerkissä lasketaan painikkeen A painalluksia, kuten edellisessä diassa, mutta tällä kertaa mukaan on otettu funktio, jonka avulla määritellään osa koodista Funktio määritellään erikseen Tämän jälkeen funktiota kutsutaan koodissa call funktion -blokilla. Tämän komennon kohdalla ohjelmassa siis suoritetaan funktion määritelmässä annettu koodi. 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 17
Ajanmääreitä ja silmukoita Ajan määritteleminen ja silmukat ovat tärkeä osa ohjelmointia. Useimmiten tarvitaan on start ja forever blokkeja On start blokin sisällä oleva koodi suoritetaan vain kerran heti ohjelman käynnistyessä Forever-silmukan sisällä olevaa koodia ohjelma suorittaa jatkuvasti, eli aloittaa sen aina alusta, kun koodi on suoritettu loppuun. pause tarkoittaa ohjelmoinnissa odotusta, ei taukoa. Ohjelma voidaan myös koodata suorittamaan tehtävää vain jos jokin ehto on voimassa tai tietyillä muuttujan arvoilla. 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 18
Harjoittele! MakeCode-alustalta löytyvillä harjoituksilla pääset helposti alkuun koodauksessa! Kokeile itse keksimiäsi koodeja rohkeasti. Jos koodi ei toimi kannattaa se lukea ääneen, silloin usein helposti huomaa missä virhe on! 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 19
Linkkejä Adafruit: https://www.adafruit.com/ Microsoft MakeCode: https://makecode.adafruit.com Circuit Playground Express dokumentaatio: https://makecode.adafruit.com/docs 4.6.2019 Adafruit Circuit Playground Express / MakeCode / 2019 Innokas 20