physical computing - goahead.classy.begoahead.classy.be/wp-content/uploads/bundel2.pdf · ardublock...

46
versie: 2017-01-08 PHYSICAL COMPUTING OP VERKENNING

Upload: buidung

Post on 03-Oct-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

versie: 2017-01-08

PHYSICAL COMPUTING

OP VERKENNING

Page 2: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

Inhoudstafel

Inhoudstafel .................................................................................................................................................. 2

Doel van deze bundel .................................................................................................................................... 3

Een overzicht van physical computing hard- en software ............................................................................ 3

Centrale probleemstelling ............................................................................................................................. 9

Enkele vragen ................................................................................................................................................ 9

Algoritme ..................................................................................................................................................... 11

Van algoritme naar programma .................................................................................................................. 11

Welk leerpad volg je best? .......................................................................................................................... 12

Demo: simulatie in Scratch .......................................................................................................................... 13

Demo: simulatie in Scratch in combinatie met een Picoboard ................................................................... 14

Demo: simulatie in Scratch in combinatie met een webcam ...................................................................... 15

Demo: simulatie met een LEGO EV3-robot in combinatie met een LEGO Labview .................................... 16

Demo: simulatie met een LEGO EV3-robot in combinatie met Small Basic ................................................ 19

Demo: simulatie met een LEGO EV3-robot in combinatie met Open Roberta ........................................... 20

Demo: simulatie met PiStorms, Raspberry Pi en LEGO EV3-onderdelen in combinatie met Blockly ......... 22

Demo: simulatie met PiStorms, Raspberry Pi en LEGO EV3-onderdelen in combinatie met Python ......... 24

Demo: simulatie via de Makeblock inventor electronic kit in combinatie met mBlock ............................. 25

Demo: simulatie via de Makeblock inventor electronic kit in combinatie met Arduino IDE (C++) ............. 26

Demo: simulatie met Dwenguino in combinatie met Blockly ..................................................................... 28

Demo: simulatie met Dwenguino in combinatie met Ardublock ................................................................ 30

Demo: simulatie met Dwenguino in combinatie met Arduino IDE (C++) .................................................... 31

Demo: simulatie met mCookie in combinatie met Arduino IDE (C++) ........................................................ 33

Demo: simulatie met Arduino UNO in combinatie met mBlock ................................................................. 37

Demo: online simulatie van Arduino UNO via circuits.io ............................................................................ 39

Demo: simulatie met Sam Labs ................................................................................................................... 43

Page 3: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 3/46 © 2016 - Tony Opsomer

Doel van deze bundel

Het doel van deze bundel is je wegwijs te maken in het overweldigende aanbod aan physical

computing tools. Deze bundel mag dus niet verward worden met een overzicht van alle bestaande

tools, een volwaardige cursus programmeren of een complete handleiding voor een specifieke tool!

Opmerkingen omtrent deze bundel mag je gerust sturen naar [email protected].

Een overzicht van physical computing hard- en software

Grosso modo kan je de beschikbare hardwareplatformen indelen in twee groepen:

Microcontroller Microprocessor

Verwerkings-kracht:

Relatief laag (XY MHz) Relatief snel (XYZ MHz of X GHz)

Intern geheugen:

Klein Groot

Doel: Via sensoren en actuatoren interageren met de buitenwereld

Interactie met de buitenwereld is niet het belangrijkste

Programmeren via:

Bare-metal coding: je programmeert rechtstreeks voor de betrokken hardware. Hierdoor kan de hardware quasi in ware tijd reageren op de buitenwereld

De programma’s die je maakt draaien binnen een besturingssysteem (vb. Linux). Hierdoor kan de hardware niet gegarandeerd in ware tijd reageren op de buitenwereld1

Voorbeelden: Arduino, Dwenguino, mCookie, Makeblock electronic inventor kit, …

Raspberry Pi, LEGO EV3-robot, …

1 Een mooi voorbeeld hiervan is het gebruik van het wachtblok (zie bundel “physical computing: introductie -> EXTRA” op pag. 29. Zonder dit wachtblok neemt het besturingssysteem van de robot niet steeds de tijd om de geresette waarde van de gyroscoop op te pikken…

Page 4: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 4/46 © 2016 - Tony Opsomer

Grootste uitdaging:

Voor Arduino heb je elektronicakennis nodig om de nodige elektronische schakelingen te kunnen bouwen. Bij sommige afgeleide producten zoals bvb. Dwenguino stelt dit probleem zich minder omdat een aantal elektronicacomponenten (LCD-scherm, LED’s, drukknoppen, motoraansturing, …) reeds vooraf ingebouwd werden. Heb je echter nood aan andere componenten, moet je nog steeds over elektronicakennis beschikken. Tot slot zijn er ook producten als mCookie, Makeblock electronic inventor kit, enz. Deze producten zijn eveneens afgeleid van Arduino maar bevatten heel wat “prefab” elektronicacomponenten en laten de gebruiker toe om snel en foutloos eenvoudige schakelingen te bouwen. Jammer genoeg is de documentatie nodig om alles te programmeren niet altijd even sterk uitgebouwd…

Voor LEGO EV3-robots heb je geen elektronicakennis nodig. Je kan dus niets fout doen. Dit systeem werkt echter enkel met LEGO-compatibele sensoren en motoren. Bovendien kan je slechts max. 4 motoren en max. 4 sensoren tegelijk aansluiten. Via een Raspberry Pi haal je eigelijk een mini-computer in huis. Deze mini-computer kan ook communiceren met sensoren en motoren al vereist dit opnieuw elektronicakennis om deze correct te schakelen. Wie wil kan bestaande LEGO EV3-sensoren en -motoren probleemloos aansluiten op een Raspberry Pi middels een extra PiStormsmodule.

Page 5: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 5/46 © 2016 - Tony Opsomer

Het programmeren van elk van deze systemen kan op verschillende manieren:

Grafische programmeertools Tekstuele programmeertools

Op de computer waarna de gemaakte code omgezet wordt naar code die daarna zelfstandig door de hardware uitgevoerd kan worden (maw de computer hoeft dan niet meer verbonden te zijn met de hardware)

Microcontroller:

Ardublock

Blockly for Dwenguino

mBlock for Makeblock

Mixly for mCookie

… Microprocessor: quasi oneindig veel mogelijkheden

Blockly for PiStorms

LEGO LabView

Microcontroller:

Arduino IDE (C++)

Microprocessor: quasi oneindig veel mogelijkheden

Python

LEJOS (Java)

Small Basic

Op de computer waarbij de code naar de hardware gestuurd wordt maar waarbij de computer wél verbonden moet blijven met de hardware

Microcontroller:

Scratch for Arduino (S4A)

… Microprocessor:

LEGO Wedo

Microcontroller:

Python

… Microprocessor:

Op de hardware zelf Microcontroller:

nvt Microprocessor: afhankelijk van de geïnstalleerde tools binnen het besturingssysteem

Blockly for PiStorms

LEGO on-the-brick programming

Microcontroller:

nvt Microprocessor: afhankelijk van de geïnstalleerde tools binnen het besturingssysteem

Python

Java

Page 6: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 6/46 © 2016 - Tony Opsomer

Natuurlijk vormt ook de kostprijs van de opgesomde platformen een belangrijk punt. Hieronder vind

je de prijzen van november 2016:

Arduino UNO starterskit http://www.robotshop.com/eu/en/arduino-starter-kit.html

ong 90 EUR incl. btw

Dwenguino starterskit http://shop.dwengo.org/products/dwenguino-kit

121 EUR incl. btw

PiStorms express kit: Raspberry Pi 3 + PiStorms + micro SD-kaart met PiStorms OS http://www.mindsensors.com/content/78-pistorms-lego-interface Let wel: er worden géén LEGO-sensoren en -motoren meegeleverd (reken hiervoor aanvullend ongeveer 280 EUR incl. btw – zie: http://www.ratoeducation.be/index.php?route=product/category&path=83 )!

164 US Dollar

mCookie advanced kit http://www.robotshop.com/eu/en/microduino-mcookie-advanced-kit.html

ong. 215 EUR incl. btw

Makeblock electronic inventor kit http://www.robotshop.com/eu/en/makeblock-inventor-electronic-kit.html

ong. 141 EUR incl. btw

LEGO EV3 educatieve basisset http://www.ratoeducation.be/index.php?route=product/product&path=83_84&product_id=346 Tip: bestel zeker ook de batterijlader (bijkomende kostprijs: ong. 30 EUR incl. btw – http://www.ratoeducation.be/index.php?route=product/product&path=83_86&product_id=400)

ong. 423 EUR incl. btw

Sam Labs – curious kit https://www.samlabs.com/shop

ong. £ 150

Page 7: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 7/46 © 2016 - Tony Opsomer

Voor de volledigheid staan ook de prijzen van de eerder beperkte platformen uit de vorige bundel

hieronder vermeld:

Sphero Ollie ifv gebruik met Tickle (iOS: https://tickleapp.com/) of Tynker (iOS/Android) https://www.coolblue.be/zoeken?query=ollie

99 EUR incl. btw

Sphero 2.0 bal ifv gebruik met Tickle (iOS: https://tickleapp.com/) of Tynker (iOS/Android) http://www.pdashop.be/product/390499/orbotix-sphero-2-0.html?_ga=1.221951836.573394729.1478685120

125 EUR incl. btw

Parrot rolling spider drone ifv gebruik met Tynker (iOS/Android)2 https://www.bol.com/nl/f/parrot-minidrones-rolling-spider-drone/9200000032163083/index.html?country=BE Tip: bestel zeker ook extra batterijen + een batterijlader. De vliegduur per batterij bedraagt immers slechts zo’n 6 minuten…

89 EUR incl. btw

Picoboard ifv gebruik binnen Scratch of mBlock http://www.robotshop.com/eu/en/sparkfun-picoboard-scratch-microcontroller.html

ong. 49 EUR incl. btw

2 Opgelet: Jammer genoeg ondersteunt Tickle (https://tickleapp.com/), de grafische

programmeeromgeving voor iOS, sinds eind 2016 niet langer het gebruik van (Parrot) drones. Meer

info omtrent omtrent het schrappen van de aansturing van drones vind je op de website van Tickle:

http://feedback.tickleapp.com/knowledgebase/articles/1098247-parrot-drones.

De toestellen die wél nog ondersteund worden, vind je op https://tickleapp.com/devices/.

Wil je echter graag je (Parrot) drones blijven gebruiken? Dan wijk je best uit naar Tynker. Deze app

biedt gelijkaardige mogelijkheden als Tickle en bestaat zowel voor iOS

(https://itunes.apple.com/us/app/tynker-learn-to-code.-games/id805869467?mt=8) als voor Androïd

(https://play.google.com/store/apps/details?id=com.tynker.Tynker)…

Page 8: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 8/46 © 2016 - Tony Opsomer

Tot slot een (persoonlijke) vergelijking van de gebruikte platformen op vlak van:

1 = beperkt -> 5 = hoog

benodigde elektronica

kennis

kostprijs documentatie uitbreidbaarheid

Arduino UNO 5 1 5 5

Dwenguino 4 2 3 5

mCookie 2 4 1 3

Makeblock inventor kit

1 3 1 4

LEGO EV3 1 5 5 3

PiStorms 2 5 3 4

Sam Labs 1 3 1 3

0

1

2

3

4

5benodigde elektronica kennis

kostprijs

documentatie

uitbreidbaarheid

Arduino UNO Dwenguino mCookie Makeblock inventor kit

LEGO EV3 PiStorms Sam Labs

Page 9: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 9/46 © 2016 - Tony Opsomer

Centrale probleemstelling

We willen een alarm bouwen met een drukknop (≠ klassieke schakelaar!). Via de drukknop wordt het

alarm aan- of uitgezet. Staat het alarm aan dan zoekt het indringers. Er is een vooraf bepaalde

gevoeligheid waarmee je de snelheid van reageren kan regelen. Staat het alarm uit, reageert het op

niets.

Enkele vragen

Welke toestanden kan het alarm hebben?

AAN / UIT

Wat gebeurt er bij AAN?

Het zoekt indringers

Hoe verloopt het zoeken naar indringers?

Het alarm meet bvb. beweging, geluid, licht en/of afstand en vergelijkt dit met de ingestelde

gevoeligheid. Is de gemeten waarde groter dan de ingestelde gevoeligheid, gaat het alarmsignaal af

anders niet

Wat gebeurt er bij UIT?

Het stopt met zoeken naar indringers

Hoe weet het alarm of het AAN/UIT staat?

Via de drukknop

Hoe werkt een klassieke schakelaar?

Je drukt op de 1-kant en schakelt hierdoor het toestel in

Je drukt op de 0-kant en schakelt hiermee het toestel uit

Hoe werkt een drukknop?

Erop drukken wisselt de toestand: AAN wordt UIT en UIT wordt AAN

Hoe kunnen we de toestand bijhouden?

Via een variabele die twee waarden kan aannemen (boolean)

Wat wordt er eerst getest: het alarmsignaal aan/uit zetten of het alarm via de drukknop aan- of

uitzetten?

Page 10: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 10/46 © 2016 - Tony Opsomer

Eerst test je of de drukknop ingedrukt werd en daarna test je of de toestand van het alarm aan

staat…

Hoeveel keer wordt het bovenstaande getest/doorlopen?

Oneindig veel keer zou een eerste antwoord kunnen zijn als je het programma bekijkt als iets dat

gestart en gestopt wordt zoals een apparaat stroom nodig heeft om te functioneren. Helaas zorgen

oneindige lussen ervoor dat je niet meer uit het programma geraakt (sommige

programmeeromgevingen voorzien gelukkig een noodstop voor dat soort situaties, andere

omgevingen hebben die mogelijkheid dan weer niet). Het is dus beter/veiliger om sowieso een

eindige lus te voorzien. Stellen dat we het bvb. 5 keer doorlopen, is echter geen optie. Na die 5 keer

zou het alarmprogramma stoppen met werken en dat is niet de bedoeling. Het alarm mag immers

alleen maar uitgezet worden indien men het programma stopt (te vergelijken met het verwijderen

van de stekker uit een apparaat)

Anderzijds zou je het programma ook kunnen bekijken als iets dat gestart wordt wanneer op de

aan/uit-knop gedrukt wordt. Deze manier van werken wordt echter niet door alle gebruikte

programmeeromgevingen ondersteund en volgen we daarom niet.

Page 11: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 11/46 © 2016 - Tony Opsomer

Algoritme

Start het programma

Definieer variabele intGevoeligheid van het type integer en stel deze in op 50

Definieer variabele blnSchakelaar van het type Boolean en stel deze in op ONWAAR/UIT/FALSE/0

Herhaal oneindig (of beter: herhaal zolang NIET op de programma stopknop gedrukt werd)

Drukknop ingedrukt ?

JA NEE

Wacht een halve seconde3

blnSchakelaar = ONWAAR ?

JA NEE

Maak blnSchakelaar = WAAR

Maak blnSchakelaar = ONWAAR

blnSchakelaar = WAAR ?

JA NEE

Signaleer de gebruiker dat het alarm AAN staat (LED, boodschap op scherm, geluidje, …)

Signaleer de gebruiker dat het alarm UIT staat (LED, boodschap op scherm, geluidje, …)

Gemeten sensorwaarde > ingestelde gevoeligheid ?

JA NEE

Schakel alarmgeluid, -licht en/of -boodschap in

Stop alarmgeluid, -licht en/of -boodschap

Van algoritme naar programma

Op de volgende pagina’s zie je het voorgaande algoritme uitgewerkt mbv diverse physical computing

hardware en software. Hoewel af en toe noodgedwongen met andere sensoren gewerkt diende te

3 Het doorlopen van dit algoritme en de bijhorende detectie van indrukken gebeurt razendsnel door de elektronica. Zelfs al zou je de drukknop bliksemsnel loslaten, dan nog zou er razendsnel gewisseld worden van toestand: AAN -> UIT -> AAN -> UIT enzovoort. Hierdoor zou het moeilijk worden om het alarm in- en uit te schakelen. Door een halve seconde vertraging in te bouwen, vermijd je dit probleem (tenzij iemand langer dan een halve seconde de knop ingedrukt houdt)…

Page 12: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 12/46 © 2016 - Tony Opsomer

worden, is de globale gedachtegang steeds dezelfde. Hierdoor kan je de code met elkaar vergelijken

én leer je hoe diverse elementaire programmeerstructuren (opeenvolging, keuze, herhaling) en -

begrippen (variabele, constante, functie, …) opgebouwd worden in de gebruikte programmeertalen.

Laat je echter niet afschrikken door de hoeveelheid en/of complexiteit van de afgebeelde

programmeercode! Het opstellen van code nam heel wat tijd in beslag. Het spreekt dan ook voor zich

dat niet verwacht wordt dat je na deze bundel alle vermelde platformen en

programmeeromgevingen beheerst.

Wil je graag verder gaan met één of meerdere platformen, neem dan zeker de tijd om het

startersboekje dat bij het betrokken platform hoort uit te proberen. Hoewel je er zeker niet alle

mogelijkheden mee zult ontdekken, biedt het doorgaans een succesvolle start.

Meer informatie vind je doorgaans ook in de meegeleverde voorbeelden (bvb. ingeval je de Arduino

IDE gebruikt) of op de website van de hardwaremaker. Soms moet je echter ook eens zoeken in

documentatie van verwante platformen. Volhardend zijn is de boodschap want niet alle

documentatie is even helder/correct/makkelijk te vinden!

Werk echter steeds vanuit een uitgeschreven algoritme. Zoniet verval je al snel in gissen en missen

en wordt programmeren een bijzonder tijdrovende en weinig aantrekkelijke bezigheid…

Welk leerpad volg je best?

Als beginner start je bij voorkeur met een grafische, blokgebaseerde programmeermethode. Pas

nadat je voldoende vertrouwd bent met het ontwerpen van een algoritme, het toepassen van

elementaire programmeerstructuren & -begrippen en het gebruik van een grafische

programmeeromgeving, kan je geleidelijk overschakelen naar het gebruik van een tekstuele

programmeermethode. Je hoeft hiermee zeker niet te wachten tot alle lessen grafisch

programmeren voorbij zijn. Reeds bij de start van het grafisch programmeren kan je af en toe stil

staan bij de tekstuele versie van deze code. Sommige programmeertools kunnen de gemaakte

grafische code zelfs automatisch omzetten naar tekstuele code, bij andere programmeertools zal je

zelf de tekstuele versie moeten opstellen… Aangezien het achterliggende algoritme niet verandert, is

het omschakelproces vooral een kwestie van syntax leren.

Wil je aan de slag gaan met op Arduino gebaseerde tools (bvb. Dwenguino, mCookie, Makeblock

inventor kit, enz.)? In dat geval doe je er goed aan eerst een basiskennis programmeren te verwerven

én enkele basisconcepten van elektronica te leren met een “pure” Arduino UNO. Eenmaal je die beet

hebt, zal je eenvoudiger je weg vinden in de afgeleide producten!

Page 13: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 13/46 © 2016 - Tony Opsomer

Demo: simulatie in Scratch

Page 14: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 14/46 © 2016 - Tony Opsomer

Demo: simulatie in Scratch in combinatie met een Picoboard

Meer weten over een Picoboard?

https://wiki.scratch.mit.edu/wiki/PicoBoard

Page 15: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 15/46 © 2016 - Tony Opsomer

Demo: simulatie in Scratch in combinatie met een webcam

Page 16: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 16/46 © 2016 - Tony Opsomer

Demo: simulatie met een LEGO EV3-robot in combinatie met een LEGO Labview

Page 17: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 17/46 © 2016 - Tony Opsomer

Page 18: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 18/46 © 2016 - Tony Opsomer

Page 19: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 19/46 © 2016 - Tony Opsomer

Demo: simulatie met een LEGO EV3-robot in combinatie met Small Basic

Meer weten over het aansturen van een

EV3-robot via Small Basic?

http://www.ev3basic.com

Page 20: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 20/46 © 2016 - Tony Opsomer

Demo: simulatie met een LEGO EV3-robot in combinatie met Open Roberta

Via Open Roberta kan je de gemaakte grafische code ook bekijken in tekstvorm. De code wordt dan

in aangepaste LEJOS-syntax getoond. LEJOS is een op JAVA gebaseerde programmeertaal waarmee je

een EV3-robot kan aansturen…

Meer weten over Open Roberta?

https://www.open-roberta.org

Nog meer alternatieven nodig om te

programmeren met LEGO EV3-robots ?

LEJOS: http://www.lejos.org/

EV3DEV: http://www.ev3dev.org/

ROBOTC: http://www.robotc.net/

De bovenstaande alternatieven werden

Page 21: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 21/46 © 2016 - Tony Opsomer

1. float intGevoeligheid = 50; 2. boolean blnSchakelaarStand = false; 3. 4. public void run() throws Exception { 5. hal.startLogging(); 6. if ( true ) { 7. while ( true ) { 8. if ( hal.isPressed(SensorPort.S1) ) { 9. hal.waitFor(500); 10. if ( blnSchakelaarStand == false ) { 11. blnSchakelaarStand = true; 12. } else { 13. blnSchakelaarStand = false; 14. } 15. } 16. if ( blnSchakelaarStand == true ) { 17. hal.drawText("Alarm AAN", 0, 0); 18. if ( hal.getGyroSensorAngle(SensorPort.S2) > intGevoeligheid ) { 19. hal.setVolume(100); 20. hal.playTone(500, 400); 21. } 22. } else { 23. hal.drawText("Alarm UIT", 0, 0); 24. hal.resetGyroSensor(SensorPort.S2); 25. } 26. } 27. }

Page 22: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 22/46 © 2016 - Tony Opsomer

Demo: simulatie met PiStorms, Raspberry Pi en LEGO EV3-onderdelen in combinatie met Blockly

Tastsensor op poort BBS1 en ultrasone afstandssensor op poort BAS1.

Je kan de programmeeromgeving (Blockly of Python) rechtstreeks op de PiStorms benaderen door

vanuit een webbrowser te surfen naar het IP-adres van de Raspberry Pi. Je kan aanmelden met

gebruikersnaam: pi en wachtwoord raspberry

Page 23: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 23/46 © 2016 - Tony Opsomer

Meer weten over PiStorms?

http://www.mindsensors.com/stem-with-

robotics/13-pistorms-v2-base-kit-raspberry-

pi-brain-for-lego-robot

Meer weten over Blockly voor PiStorms?

http://www.mindsensors.com/blog/pistorm

s/visual-programming-for-pistorms-robots

Page 24: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 24/46 © 2016 - Tony Opsomer

Demo: simulatie met PiStorms, Raspberry Pi en LEGO EV3-onderdelen in combinatie met Python

Meer weten over Python voor PiStorms?

http://www.mindsensors.com/blog/how-

to/pistorms-python-programming-tutorial

Page 25: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 25/46 © 2016 - Tony Opsomer

Demo: simulatie via de Makeblock inventor electronic kit in combinatie met mBlock

Meer weten over de MakeBlock inventor

kit?

http://learn.makeblock.com/en/inventor-

electronic-kit/

Meer weten over mBlock voor MakeBlock?

http://learn.makeblock.com/en/getting-

started-programming-with-mblock/

Wist je dat?

mBlock ook een Arduino UNO en Picoboard

kan aansturen?

Potentiometer op poort 8

PIR-sensor op poort 6

LED op poort 3

Page 26: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 26/46 © 2016 - Tony Opsomer

Demo: simulatie via de Makeblock inventor electronic kit in combinatie met Arduino IDE (C++)

#include <Makeblock.h>

#include <Wire.h>

#include <SoftwareSerial.h>

MePotentiometer potentiometer(PORT_8);

MeRGBLed led(PORT_3);

MePIRMotionSensor pir(PORT_6);

int blnSchakelaar = 0;

void setup(){

}

void loop(){

if(potentiometer.read() >= 500){

if(blnSchakelaar==0){

blnSchakelaar = 1;

led.setColorAt(0,0,0,255);

led.show();

}else{

blnSchakelaar = 0;

led.setColorAt(0,0,0,0);

led.show();

}

}else {

blnSchakelaar = 0;

led.clear();

}

Page 27: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 27/46 © 2016 - Tony Opsomer

if(blnSchakelaar==1){

if(pir.isPeopleDetected()){

led.setColorAt(2,255,0,0);

led.show();

}else{

led.setColorAt(2,0,255,0);

led.show();

}

}

}

Meer weten over Arduino IDE voor

MakeBlock?

http://learn.makeblock.com/en/learning-

arduino-programming/

Page 28: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 28/46 © 2016 - Tony Opsomer

Demo: simulatie met Dwenguino in combinatie met Blockly

Ultrasone sensor:

TRIG -> pin 12

ECHO -> pin 11

Page 29: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 29/46 © 2016 - Tony Opsomer

Meer weten over Blockly voor Dwenguino?

http://www.dwengo.org/blockly

Meer weten over Dwenguino?

http://www.dwengo.org/new-tutorials

Page 30: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 30/46 © 2016 - Tony Opsomer

Demo: simulatie met Dwenguino in combinatie met Ardublock

Meer weten over Ardublock voor

Dwenguino?

http://www.dwengo.org/ArduBlock

Page 31: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 31/46 © 2016 - Tony Opsomer

Demo: simulatie met Dwenguino in combinatie met Arduino IDE (C++)

#include <Wire.h>

#include <Dwenguino.h>

#include <LiquidCrystal.h>

#include <NewPing.h>

#define TRIGGER_PIN 12

#define ECHO_PIN 11

#define MAX_DISTANCE 200

int intGevoeligheid = 50;

boolean blnSchakelaar = false;

NewPing sonar1211(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

// de setup-routine loopt slechts 1 keer

initDwenguino();

dwenguinoLCD.clear();

}

void loop() {

// de loop-routine wordt eindeloos herhaald

if (digitalRead(SW_C) == PRESSED) { //PRESSED wordt gedefinieerd als 0 in de Dwenguino.h-bibliotheek. SW_C wordt via initDwenguino dmv pinMode(SW_C, INPUT_PULLUP) kenbaar gemaakt aan de hardware

delay(500);

if (blnSchakelaar == false) {

blnSchakelaar = true;

} else {

Meer weten over de Arduino IDE?

https://www.arduino.cc/en/Guide/Environ

ment

Meer weten over de Arduino syntax?

https://www.arduino.cc/en/Reference/Hom

ePage

Opgepast: Dwenguino gebruikt aangepaste

bibliotheken. Je doet er dus goed aan om

ook de meegeleverde voorbeelden

aandachtig te bekijken!

Page 32: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 32/46 © 2016 - Tony Opsomer

blnSchakelaar = false;

}

}

if (blnSchakelaar == true) {

digitalWrite(SCK,HIGH); //SCK = ingebouwde LED op pin 13, deze wordt hier ingeschakeld (HIGH)

dwenguinoLCD.setCursor(0,0);

dwenguinoLCD.print("Alarm AAN");

if (sonar1211.ping_cm() < intGevoeligheid) {

tone(BUZZER,400); //BUZZER = ingebouwde buzzer op pin 46, het woord BUZZER wordt via initDwenguino dmv pinMode(BUZZER, OUTPUT) kenbaar gemaakt aan de hardware

} else {

noTone(BUZZER);

}

} else {

digitalWrite(SCK,LOW);

dwenguinoLCD.setCursor(0,0);

dwenguinoLCD.print("Alarm UIT");

noTone(BUZZER);

}

}

Page 33: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 33/46 © 2016 - Tony Opsomer

Demo: simulatie met mCookie in combinatie met Arduino IDE (C++)

#define PIRSENSOR_PIN 10 //PIR

#define COLORLED_PIN 8

#define PIR_PIN 10

#define BUZZER_PIN 6

#define CRASHSENSOR_PIN 4

//ifv Crash-schakelaar

#include "key.h"

Meer weten over mCookie?

https://www.microduino.cc/gettingStarted

Meer weten over de Arduino IDE?

https://www.arduino.cc/en/Guide/Environ

ment

Meer weten over de Arduino syntax?

https://www.arduino.cc/en/Reference/Hom

ePage

Opgepast: mCookie gebruikt heel wat

aangepaste bibliotheken. Je doet er dus

goed aan om ook de meegeleverde

voorbeelden aandachtig te bekijken!

BUZZER -> poort 6/7

CRASH SENSOR -> poort 4/5

COLOR LED -> poort 8/9

PIR-sensor -> poort 10/11

OLED-scherm -> poort IIC

Page 34: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 34/46 © 2016 - Tony Opsomer

#include <Adafruit_NeoPixel.h> //ifv de kleurenLED

Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, COLORLED_PIN, NEO_GRB + NEO_KHZ800);

#include "I2Cdev.h" //ifv het aansturen van het OLED-scherm

#include "Wire.h" //dit is nodig om met I2C-devices, in dit geval het OLED-scherm, te kunnen praten

#include "U8glib.h" //ifv het OLED-scherm

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);

bool blnPIRStatus = false; //In deze oefening met de PIR-sensor hoeven we geen gevoeligheid te definiëren. De PIR-sensor ziet iemand (= 1) of ziet niemand (= 0).

bool blnSchakelaar = false;

void setup() {

Serial.begin(9600);

pinMode(PIR_PIN, INPUT);

pinMode(CRASHSENSOR_PIN, INPUT);

pinMode(BUZZER_PIN, OUTPUT);

Wire.begin();

key_init();

strip.begin();

strip.show(); // Zet alle pixels van de kleurenLED uit

// Draai het scherm indien nodig

// u8g.setRot180();

}

void loop() {

if (key_get(CRASHSENSOR_PIN, 0))

{

Page 35: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 35/46 © 2016 - Tony Opsomer

// delay(500); Het registreren van ingedrukt/losgelaten zit in de key.h-bibliotheek vervat ... Maw hoe lang je iets indrukt maakt niet uit vandaar dat hier geen nood is aan delay

if (blnSchakelaar == false) {

blnSchakelaar = true;

} else {

blnSchakelaar = false;

}

}

if (blnSchakelaar == true) {

blnPIRStatus= digitalRead(PIRSENSOR_PIN);

// Toon de status van de PIR-sensor via de serial monitor

//Serial.println(blnPIRStatus);

// Gebruik je de serial monitor om sensordata uit te lezen, voeg dan steeds 500 ms delay toe om te vermijden dat je Core USB gelocked geraakt (!!)

//delay(500);

u8g.firstPage();

do {

textOLED("Alarm AAN");

} while(u8g.nextPage());

if (blnPIRStatus) {

colorWipe(strip.Color(255, 0, 0));

tone(BUZZER_PIN, 400);

} else {

colorWipe(strip.Color(0, 255, 0));

noTone(BUZZER_PIN);

}

} else {

Page 36: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 36/46 © 2016 - Tony Opsomer

u8g.firstPage();

do {

textOLED("Alarm UIT");

} while(u8g.nextPage());

colorWipe(strip.Color(0, 0, 0));

noTone(BUZZER_PIN);

}

}

// Vul de pixels van de kleurenLED met het gewenste kleur

void colorWipe(uint32_t c) {

for (uint16_t i = 0; i < strip.numPixels(); i++) {

strip.setPixelColor(i, c);

strip.show();

}

}

void textOLED(String strTekst) {

u8g.setFont(u8g_font_unifont);

u8g.setPrintPos(0, 20);

u8g.print(strTekst);

}

Page 37: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 37/46 © 2016 - Tony Opsomer

Demo: simulatie met Arduino UNO in combinatie met mBlock

Eerst bouw je de schakeling. De ultrasone sensor heeft 4 pinnen. Deze sluit je aan als volgt:

Vcc -> 5V (rode kabel)

TRIG -> pin 12 (bruine kabel)

ECHO -> pin 11 (witte kabel)

GND -> GND (zwarte kabel)

Nu ben je klaar om het geheel te programmeren via mBlock:

Vroeger werd Scratch 4 Arduino (S4A,

http://s4a.cat/) gebruikt om grafisch te

programmeren met een microcontroller.

S4A is echter gebaseerd op een oude

Scratch-versie. mBlock is gebaseerd op

Scratch 2.0 en krijgt daarom de voorkeur…

Let op: in beide gevallen moet je de

firmware van het bord aanpassen. Dit kan je

echter rechtstreeks vanuit mBlock: menu

Connect -> Upgrade Firmware…

Page 38: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 38/46 © 2016 - Tony Opsomer

In dit-programma wordt gewerkt met

en niet met

zoals in het vorige mBlock-programma (zie

demo met Makeblock inventor electronic kit).

Door het vlaggetje te gebruiken blijft het

programma op de pc lopen en wordt het niet

naar de microcontroller gestuurd waardoor

deze niet zelfstandig kan werken…

Mocht je gebruik maken van

dan zou dit wél kunnen…

en zijn dus

equivalenten van elkaar en worden

respectievelijk door Makeblock Inventor kit en

Arduino UNO gebruikt….

Page 39: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 39/46 © 2016 - Tony Opsomer

Demo: online simulatie van Arduino UNO via circuits.io

Eerst bouw je de schakeling:

Meer weten over circuits.io?

https://circuits.io/

Page 40: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 40/46 © 2016 - Tony Opsomer

Daarna gebruik je de ingebouwde Arduino IDE om de Arduino UNO te programmeren:

// Definieer pin 13 als intLED. Op de meeste Arduino-bordjes is pin 13 een LED.

const int intLED = 13;

// Geef het pinnummer op waarmee het SIG-signaal van de PING)))-sensor verbonden is

const int intPingPin = 11;

// Met pin nummer 2 is de drukknop verbonden

const int intPushButtonPin = 2;

//Stel de alarmafstand/gevoeligheid in op 50 cm

const int intGevoeligheid = 50;

//definieer variabelen om de schakelaarwaarde (=hetgeen de knop fysiek meet) en de schakelaarstand (= AAN of UIT) bij te houden

int intSchakelaarWaarde = 0;

boolean blnSchakelaar = false;

void setup() {

// initialiseer seriële communicatie (die we via de serial monitor kunnen uitlezen op het computerscherm). We hebben immers geen LCD-scherm verbonden met de Arduino...

Serial.begin(9600);

// initialiseer de digitale intLED-pin als output...

pinMode(intLED, OUTPUT);

//initialiseer de digitale intPushButtonPin als input...

pinMode(intPushButtonPin, INPUT);

}

void loop() {

//lees de schakelaarwaarde uit

intSchakelaarWaarde = digitalRead(intPushButtonPin);

Page 41: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 41/46 © 2016 - Tony Opsomer

if (intSchakelaarWaarde == HIGH) {

delay(500);

if (blnSchakelaar == false) {

blnSchakelaar = true;

} else {

blnSchakelaar = false;

}

}

if (blnSchakelaar == true) {

digitalWrite(intLED, HIGH); // zet de LED aan

Serial.println("Alarm AAN");

Serial.println();

// definieer variabelen voor duur en afstand van de afstandssensor

long lngDuration, lngCM;

// The PING)))-sensor wordt geïnitialiseerd door een HIGH-puls van min. 2 microseconden.

// We geven eerst een korte LOW-puls om daarna een nette HIGH-puls te bekomen

pinMode(intPingPin, OUTPUT);

digitalWrite(intPingPin, LOW);

delayMicroseconds(2);

digitalWrite(intPingPin, HIGH);

delayMicroseconds(5);

digitalWrite(intPingPin, LOW);

// Via dezelfde pin wordt het signaal van de PING)))-sensor terug ingelezen. Dit is een HIGH

// puls waarvan de duur de tijd in microseconden is vanaf het zenden van het signaal tot en met het ontvangen (nadat het op een object gebotst is)

Page 42: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 42/46 © 2016 - Tony Opsomer

pinMode(intPingPin, INPUT);

lngDuration = pulseIn(intPingPin, HIGH);

// converteer de tijdsduur naar een afstand

lngCM = microsecondsToCentimeters(lngDuration);

if (lngCM < intGevoeligheid) {

Serial.println("Alarm AAN");

Serial.println("INDRINGER!");

}

} else {

digitalWrite(intLED, LOW); // zet de LED uit

Serial.println("Alarm UIT");

Serial.println();

}

}

long microsecondsToCentimeters(long lngMicroseconds) {

// De snelheid van geluid is 340 m/s. Ofwel 29 microseconden per centimeter.

// Aangezien zo'n ping heen en weer gaat, moeten we de afstand nog eens delen door 2...

return lngMicroseconds / 29 / 2;

}

Page 43: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 43/46 © 2016 - Tony Opsomer

Demo: simulatie met Sam Labs

SAM labs (https://www.samlabs.com/) werkt mbv functieblokken die via Bluetooth communiceren met pc, tablet4 of cloud module (dit is een aangepaste Raspberry Pi) waarop je programma loopt. Het programmeren gebeurt visueel maar in tegenstelling tot de vorige oplossingen, verloopt dit eerder op vereenvoudigde manier (invoer -> verwerking -> uitvoer). Je zal er dus niet alle gekende programmeerstructuren expliciet in herkennen.

Om het alarm uit de voorgaande oefeningen te creëren, gebruik je volgende fysieke functieblokken:

1 knop (button)

1 RGB Led

1 zoemer (buzzer)

1 nabijheidssensor (proximity sensor)

Schakel eerst de vier blokken in door hun aan/uit-knoppen in te drukken zodat de blokken rood oplichten

Via de SAM-software op je pc (gebruik hierbij de bijhorende, speciale Bluetooth-dongle) of tablet kan je de functieblokken programmeren. Je dient echter wel in te loggen met je SAM-account. Je programma’s worden immers in de cloud bewaard… Indien je dat wenst, kan je deze programma’s nadien ook naar de cloud module pushen…

De vier gedetecteerde blokken dienen in de programmeerruimte (midden) gesleept.

4 Opgelet: de mogelijkheden op tablet zijn minder uitgebreid dan deze op pc!

Page 44: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 44/46 © 2016 - Tony Opsomer

Daarna verbind je de blokken zoals hieronder weergegeven.

In de bovenstaande code zet de drukknop het alarm aan of uit (via de TOGGLE-functie).

Indien het aan staat, blijft de LED paars branden.

Als het alarm aan staat én (AND) de nabijheidssensor geeft een waarde van > 50 weer (via de COMPARE-functie) dan weerklinkt enerzijds een alarmtoon en wordt anderzijds na 5 seconden (via de DELAY-functie) een signaal verstuurd naar IFTTT (https://ifttt.com/). Via deze website kan je heel wat dingen automatiseren. Zo zal in dit geval een mail (zie hieronder) verstuurd worden om te melden dat het alarm afging.

Page 45: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 45/46 © 2016 - Tony Opsomer

De instellingen van de COMPARE-, DELAY-, IFTTT-, buzzer- en LED-blokken pas je aan door er op te dubbelklikken.

Page 46: PHYSICAL COMPUTING - goahead.classy.begoahead.classy.be/wp-content/uploads/BUNDEL2.pdf · Ardublock Blockly for Dwenguino mBlock for Makeblock Mixly for mCookie … Microprocessor:

PHYSICAL COMPUTING: OP VERKENNING

pagina 46/46 © 2016 - Tony Opsomer

Via de gratis webtool IFTTT (https://ifttt.com/) werd een applet gemaakt die een e-mail stuurt zodra de Maker-service getriggerd wordt.