Bij deze voorbeelden gebruik je PictoBlox Desktop, met de keuze voor Blocks. Als het goed is heb je de eerste stappen al onderzocht: https://junioriot.nl/juniorblocks/ en https://junioriot.nl/blocks-web-arduino-nano/
Je kunt deze werksets gebruiken:
- Werkset Outer Space Challenge: https://junioriot.nl/product/werkset-outer-space/
- 20 Arduino werkplekken in de klas: https://junioriot.nl/product/arduino-20-werkplekken/
Deze workshop zien we als heerlijk aantrekkelijke kennismaking met programmeren met hardware. De workshop nodigt ook de scholen en leerkrachten uit om de materie eigen te maken en te richten op hun uiteindelijke toepassingsgebied, bijvoorbeeld door een op leerlingen gerichte introductie video vooraf.
Blocks Desktop
Met PictoBlox Blocks Desktop kan je nog veel meer dan met Junior Blocks en Blocks Web. Zo kan je nog mooiere programma’s maken. Bij deze voorbeelden gebruiken we de Arduino Nano.
Installeren van Blocks Desktop
Deze programma’s kan je ook gebruiken voor de externe boards, zoals de Junior IOT Arduino Nano. Deze gebruiken we graag binnen Junior IOT!
- Ga in jouw internet browser naar https://thestempedia.com/product/pictoblox/download-pictoblox/
- Kies de 64 bit installer voor de nieuwste versie (je mag de nieuwste beta versie kiezen)
- Volg de instructies zoals deze daar worden uitgelegd
PictoBlocks Desktop openen
- Op de desktop van je computer zie je het icoontje van PictoBlocks. Dubbelklik dit plaatje.
Het scherm geeft meerdere mogelijkheden.
-
- Block Coding / Junior Blocks
- Block Coding / Bocks
- Python Coding / Py Editor
- Python Coding / Py Notebook
- Coming Soon / Machine Learning Environment
- Coming Soon / 3D and XR Studio
Je hoeft geen account te maken om deze omgeving te gebruiken. Maar een account kan handig zijn om de dingen te bewaren die je hebt gemaakt. Af en toe vraagt het scherm of je een account wilt maken, maar dat is niet nodig.
Blocks
Met Blocks kunnen we verschillende dingen programmeren. We gebruiken dit graag om met de Arduino Nano te werken.
- Klik op ‘Blocks’
Je komt nu in de Blocks werkomgeving van PictoBlox Desktop.
Het valt je misschien al op dat je rechtsboven de taal kunt veranderen naar Nederlands. Verander dit gerust naar jouw voorkeur! In de uitleg bij onze voorbeelden hieronder houden we de taal nog even op Engels.
Je ziet de volgende gebieden op het scherm:
-
- Stage. Hier worden de opdrachten uitgevoerd. Jouw sprite poppetje staat al op je te wachten.
- Sprite. Dit poppetje voert straks jouw opdrachten uit. Hier is het een beertje met de naam ‘Tobi’.
- Blocks. De puzzelstukjes zijn de opdrachten waarmee je een programma maakt.
- Scripting Area. Hier zet je de blocks om je programma te maken.
- Pallettes. Verschillende kleuren groepjes van verschillende soorten blokjes.
- Events. Het gele pallette heeft ‘events’ blokjes. Dit zijn gebeurtenissen. Je hebt een gebeurtenis nodig om het bijbehorende deel van het programma te starten.
Blocks Desktop lijkt heel erg op Blocks Web
Als je de Desktop en de Web versie van Blocks vergelijkt, dan zie je bijna geen verschil. De desktop versie is iets makkelijker met verbinden en kan soms iets meer. In onze voorbeelden zie je bijna geen verschil tussen de plaatjes van de programma’s die je maakt in Web of in Desktop – we gebruiken de plaatjes soms zelfs door elkaar.
Als je een oefeningen tegenkomt die je al eerder hebt gedaan, dan mag je deze gewoon overslaan.
Blocks oefening, schuivende grombeer
- Open PictoBlocks, of klik links boven op ‘File’ en dan ‘New’ om met een nieuwe oefening te beginnen.
- Klik op ‘Blocks’
- Probeer het volgende programma te maken.
Je gebruikt in dit programma de volgende onderdelen:
-
- when this sprite clicked
- start sound [ Grunt ]
- Glide ( 1 ) secs to [ Random position ]
Kan je in jouw programma zien wat de beer zou moeten doen? Maakt de beer ook geluiden? Lukt het om jouw beer te laten bewegen?
Extra: Blocks voorbeelden ontdekken
Als je wat tijd over hebt, is het handig om even te kijken hoe de voorbeelden zijn geprogrammeerd. Meestal is het makkelijker dan je denkt!
- Open PictoBlocks, of klik links boven op ‘File’ en dan ‘New’ om met een nieuwe oefening te beginnen.
- Klik op ‘Blocks’
- In het menu kies je File / Examples
Je ziet nu verschillende voorbeelden. We vinden het doolhof een mooi voorbeeld. Dit voorbeeld willen we onderzoeken.
Blocks voorbeeld: Het doolhof
- Open het voorbeeld van het doolhof
- Speel het spel
- Bekijk de code
Kan je uitleggen wat elk stukje programma probeert te doen?
- Verander de code zodat er een geluid komt bij elke stap.
Blocks Desktop met de gele/witte/roze Arduino Nano
We kunnen programmeren met blokjes ook gebruiken om allerlei hardware te bedienen. Bij Junior IOT doen we dit graag met de Arduino Nano. Dit is een heerlijk klein programmeerbordje welke we in meerdere kleuren hebben: Geel, wit, roze en rood. De Arduino Nano past goed op het breadboard om mooi samen te werken met leds, servo’s en andere apparaten. Ze werken erg goed samen met PictoBlox!
-
- Onze witte en roze Arduino Nano gebruiken we vanaf 2025. Je sluit ze aan met een USB-C kabel. Deze werken goed met Web- en direct programmeren.
- Onze gele Arduino Nano hebben we jaren gebruikt. Deze gebruikt een micro-USB kabel. Ze werken goed met Web- en direct programmeren. Soms moet je er nog wel even een nieuwe versie bootloader opzetten, dat kan met PictoBlox Desktop.
- Onze rode Arduino Nano gebruiken we steeds minder. Deze kan je wel direct programmeren, maar niet via Web.
Op de foto zie je ook de Lolin32, een programmeerbordje waarmee nog wat meer mogelijk is. Deze kan je als ESP32 ook programmeren met PictoBlox.
Docent: Wat doet de Arduino nu? Indien nodig laad je Met PictoBlox Desktop een nieuwe firmware.
Soms kom je een Arduino tegen waar nog een programma in zit. Je ziet dan bijvoorbeeld een knipperende led als je de Arduino op de USB aansluit. In dat geval wil je de nieuwe firmware of een leeg programma laden.
Doe dit alleen als de Arduino knippert of als de Arduino een ander programma laat zien:
- Zet PictoBlox Desktop de in Stage mode
- Bij de gele Arduino die net uit een zakje komt, kies je de Arduino Nano / 328 (old bootloader)
- Of anders kies je de Arduino Nano / 328
- Connect
- Druk rechtsboven op ‘Upload Firmware’
Of bekijk hoe Duco het voordoet: https://youtu.be/puwgoQAkfpw?si=CW5xWpHlZehucqaw
Als het goed is, is het knipperen daarna gestopt.
Headers solderen aan de Arduino Nano
Je gebruikt de Arduino Nano meestal samen met een breadboard. Zo kan je er makkelijk allerlei extra dingen op aansluiten. Om de Arduino Nano in het breadboard te zetten, moet je er soms nog even headers aan solderen.
Meer hulp over headers solderen vind je hier: https://junioriot.nl/headers-op-arduino-nano-solderen/
De gele, roze of witte Arduino Nano aansluiten op PictoBlox Blocks Desktop
PictoBlox Web gebruikt Stage Mode om de Arduino direct aan te sturen. PictoBlox Stage Mode werkt goed bij de gele, roze en witte Arduino Nano van Junior IOT. Het is dan wel nodig om er de nieuwe firmware of bootloader op te zetten, bijvoorbeeld via PictoBlox Desktop (en dat is heel makkelijk).
LET OP: De rode Arduino Nano heeft een 168 processor. Deze ondersteunt geen direct mode, waardoor we hem niet via Web- of Stage mode kunnen gebruiken. De gele, roze en witte versies hebben een 328P processor, en hier werkt het wel goed mee.
- Open PictoBlocks, of klik links boven op ‘File’ en dan ‘New’ om met een nieuwe oefening te beginnen.
- Klik op ‘Blocks’
Je krijgt een mooi leeg werkveld.
Nu willen we gaan werken met boards. In het menu zie je daarvoor de opties ‘Board’ en ‘Connect’.
- Kies in het menu voor ‘Board’
Je krijgt nu een overzichtsscherm.
Je ziet hier dat je met Blocks Web allerlei boards kunt bedienen.
-
- Evive
- Quarky
- Wizbot
- Arduino Uno
- Arduino Mega
- Arduino Nano
- ESP32
- t-Watch
- micro:bit
- LEGO EV3
- LEGO BOOST
- LEGO WeDo 2.0
- Go DFA
Let op: PictoBlox kan deze boards vanuit de browser bedienen. Dit werkt op Windows en op Chromebooks voor Chrome, Firefox, Safari en Edge (we moeten nog goed controleren of dit allemaal klopt). Belangrijk is dan wel dat de USB poorten op jouw computer open staan.
Let op: Bij Junior IOT gebruiken de Arduino Nano. Bij de gele Arduino Nano moet je soms nog zorgen dat er de nieuwe bootloader op is gezet. Het is handig als er geen ander programma op de Arduino Nano zit.
Ga nu verder:
- Kies in het menu voor ‘Board’
- Kies Arduino Nano,
- en dan 328
Het scherm toont nu het werkveld, en scrollt naar de Arduino Nano programmeer blokjes.
De volgende stap is om te verbinden met de Arduino Nano. Sluit deze met de USB kabel aan op de USB poort van je computer.
In het menu op je scherm zie je bij ‘Connect’ de volgende opties.
- Kies in het menu voor ‘Connect’ en dan ‘Serial’
Als je meerdere keuzes hebt, ontdek dan even welke keuze hoort bij je Arduino Nano. Meestal is dat de verbinding met het laagste nummer.
- Kies de regel die hoort bij je Arduino Nano en klik op ‘Connect’
Het plaatje in het menu verandert om aan te geven dat het apparaat verbonden is.
Arduino Nano bedienen in Stage Mode – in PictoBlox Desktop
In Stage mode kan je Arduino Nano opdrachten toevoegen aan je programma. Het programma draait eigenlijk op jouw computer. Zo kan je sommige Arduino programmeer blokken gebruiken.
Led bedienen op de Arduino Nano
In dit voorbeeld maak je een programma waarmee je de beer laat lopen.
We gebruiken de ingebouwde led van de Arduino:
-
- De ingebouwde led zit op poort 13
Je bedient de beer met pijltjestoetsen links en rechts op het toetsenbord. Als de beer achteruit gaat geeft deze een waarschuwingsgeluid, en de led gaat aan op de Arduino Nano.
- Sluit de Arduino Nano aan
of:
- Maak in PictoBlox Web dit programma:
-
- When [ right arrow ] key pressed
- set digital pin [ 13 ] output as [ LOW ]
- change x by ( 10 )
-
- When [ left arrow ] key pressed
- set digital pin [ 13 ] output as [ HIGH ]
- change x by ( -10 )
- start sound [ Grunt ]
- Druk op de groene vlag om je programma te starten
- Gebruik de links/rechts pijltjes toetsen om de beer te laten lopen
Lukt het om het ingebouwde ledje aan te laten gaan bij het achteruit lopen?
Poorten vinden op de Arduino Nano
Bij een programmeerbaar bordje heb je vaak heel veel mogelijkheden. Ook bij de Arduino Nano kan je elke aansluiting voor meerdere dingen gebruiken. In de oefeningen hieronder kan je rustig ontdekken hoe dat werkt.
In dit overzicht kan je zien waar de verschillende aansluitingen voor zijn. Aansluiting D2 en D3 vind je bijvoorbeeld links van het zwarte vierkant. Deze aansluitingen kan je in de volgende oefening gebruiken.
Een enkele led bedienen op poort D2-D3
Bij dit voorbeeld is het handig om de Arduino Nano in het breadboard te plaatsen. We willen nu een led toevoegen. We doen dat door deze te verbinden met aansluiting D2 en D3.
Pak een rode led en prik deze naast de Arduino Nano in het breadboard:
-
- Rode led, langste pootje bij poort D2
- Rode led, kortste poortje bij poort D3
Hiermee zit de led in de digitale poort 2 en 3. Op het bordje zie je naast de gaatjes de tekst D2 en D3. Om de led te bedienen moeten we in de software zorgen dat poort 2 aan staat, en poort 3 uit.
- Maak in PictoBlox Desktop dit programma:
-
- When [ right arrow ] key pressed
- set digital pin [ 13 ] output as [ LOW ]
- change x by ( 10 )
- set digital pin [ 2 ] output as [ LOW ]
- set digital pin [ 3 ] output as [ HIGH ]
-
- When [ left arrow ] key pressed
- set digital pin [ 13 ] output as [ HIGH ]
- change x by ( -10 )
- set digital pin [ 2 ] output as [ HIGH ]
- set digital pin [ 3 ] output as [ LOW ]
- Druk op de groene vlag om je programma te starten
- Gebruik de links/rechts pijltjes toetsen om de beer te laten lopen
Lukt het om de rode led aan te laten gaan bij het achteruit lopen?
Een dubbele led bedienen op poort D2-D3
Je ziet dat je in het programma voor het bedienen van de led ook poort D3 aan zet, zodra je poort D2 uit zet. We kunnen er nu een groene led bij doen, en deze monteer je dan omgekeerd.
Laat de rode led van de vorige oefeningen in het breadboard. Pak een groene led en prik deze naast de Arduino Nano in het breadboard:
-
- Groene led, langste pootje bij poort D3
- Groene led, kortste poortje bij poort D2
- Verander niets aan je programma
- Gebruik de links/rechts pijltjes toetsen om de beer te laten lopen
Lukt het om de groene led aan te laten gaan bij het vooruit lopen? Gaat de rode led nog steeds aan bij het achteruit lopen?
Extra: Vier leds bedienen op poort D2-D3 en D5-D6
Kan jij je programma uitbreiden om nog extra leds te bedienen op D5 en D6?
Super Extra: RGB op poort A0-A1-A2-A3
Kan jij een RGB led bedienen? Sluit de vier pootjes van de RGB led aan met de 4 poortjes op A0-A1-A2-A3, en zorg dat het langste pootje op A1 zit. Je programmeert het zo dat A1 altijd ‘HIGH’ of aan is. De andere pootjes zorgen voor licht als ze ‘LOW’ zijn. Je kunt bijvoorbeeld de toetsen ‘R’, ‘G’ en ‘B’ gebruiken.
Analog out, gedimd licht op poort 3
Nu heb je de poorten ‘aan’ en ‘uit’ gezet. Sommige poorten kunnen ook met PWM een gedeelte van de tijd aan zijn. Een ledje geeft dan minder licht. In PictoBlox kan je dit instellen voor bijvoorbeeld poort D3.
Laat de groene en rode led van de vorige oefeningen in het breadboard.
- Maak in PictoBlox Desktop dit programma:
-
- When [ right arrow ] key pressed
- set digital pin [ 13 ] output as [ LOW ]
- change x by ( 10 )
- set digital pin [ 2 ] output as [ LOW ]
- set PWM pin [ 3 ] output as [ 255 ]
-
- When [ left arrow ] key pressed
- set digital pin [ 13 ] output as [ HIGH ]
- change x by ( -10 )
- set digital pin [ 2 ] output as [ LOW ]
- set PWM pin [ 3 ] output as [ 30 ]
Lukt het je om de groene led feller en minder fel te laten branden?
PWM en geluid
Bij een PWM signaal op een poort gebruikt de Arduino een vaste frequentie. Een deel van de golf staat de poort dan ‘aan’ en een rest van de tijd staat de poort ‘uit’. Hoe hoger het getal is wat je gebruikt, hoe feller de led zal branden.
Soms kan je een kleine luidspreker regelen, bijvoorbeeld 8 Ohm, 0,5 Watt. Als je er eentje hebt gevonden, dan kan je ook deze oefening doen:
Vervang de rode led in het vorige voorbeeld door een kleine luidspreker.
Kijk eens wat er gebeurt? Je zult waarschijnlijk een bromtoon horen.
Je kunt op het internet vinden welke frequentie wordt gebruikt, dat kan verschillen per poort: “For Arduino Nano or Arduino UNO the PWM pins are 3,5,6,9,10 and 11. The pins 3, 9, 10 and 11 generates PWM frequency of 490Hz and pins 5 and 6 generates PWM frequency of 980Hz.”
Verplaats het pinnetje van de luidspreker eens van D3 naar D5 en probeer het nog eens. Je kunt nu een andere toon horen, klinkt deze hoger of lager?
Servo bewegen
Bij dit voorbeeld is het handig om de Arduino Nano in het breadboard te plaatsen. Zo kan je de servo goed aansluiten. Je hebt daarvoor nog een paar m-m jumperwires nodig. Gebruik deze aansluitpunten op de Arduino Nano:
-
- Bruin –> GND
- Rood –> 5V
- Oranje –> D10
Nadat je deze aansluitingen hebt gemaakt, kan je jouw programma maken.
- Pas je programma aan:
-
- when [ right arrow ] key pressed
- change x by ( 10 )
- set digital pin [ 13 ] output as [ LOW ]
- set servo on [ 10 ] to ( 0 ) angle
-
- when [ left arrow ] key pressed
- change x by ( -10 )
- start sound [ Grunt ]
- set digital pin [ 13 ] output as [ HIGH ]
- set servo on [ 10 ] to ( 180 ) angle
Lukt het je om de servo te laten bewegen?
Een potmeter uitlezen
Neem een potmeter, en plaats deze ‘ergens’ op een ongebruikte plek in het breadboard. Maak de volgende verbindingen:
-
- Potmeter linker pootje, aan Arduino GND
- Potmeter rechter pootje, aan Arduino 5V
- Potmeter middelste pootje, aan Arduino A0
- Groene led, langste pootje op D3
- Groene led, kortste pootje op D2
Nadat je deze aansluitingen hebt gemaakt, kan je jouw programma maken.
- Maak dit programma:
-
- when flag clicked
- forever
- goto x: ( read analog pin [ A0 ] ) y: ( 0 )
- set digital pin [ 2 ] output as [ LOW ]
- set PWM pin [ 3 ] output as [ read analog pin [ A0 ] ]
- wait ( 0.1 ) seconds
- Druk op de groene vlag om je programma te starten
- Draai aan de potmeter om de beer te laten lopen
Lukt het om met de potmeter de beer te laten lopen? Zie je ook de groene led feller worden?
Als je het groene ledje rustig aan wat feller maakt, zie je het af en toe toch terugspringen. Dat is raar. Hoe dat kan komen? Het getal wat uit de A0 gelezen wordt, varieert ongeveer van 0 tot 1024. Het getal waarmee je de PWM instelt, varieert ongeveer van 0 tot 255. Dat ene getal past niet in het andere vakje, en blijkbaar is dit hoe PictoBlox en de Arduino het oplossen. Daar kan je later nog veel meer over ontdekken! In de volgende oefening delen we het getal van A0 daarom door 4.
Extra: rekenen met een potmeter dimlicht
In de vorige oefening las je hoe het licht een beetje stuitert. Daarom willen we de meetwaarde van A0 delen door 4.
Gebruik hetzelfde circuit als in de vorige oefening.
Maak het volgende programma:
-
- when flag clicked
- forever
- goto x: ( ( read analog pin [ A0 ] ) / ( 4 ) ) y: ( 0 )
- set digital pin [ 2 ] output as [ LOW ]
- set PWM pin [ 3 ] output as [ ( ( read analog pin [ A0 ] ) / ( 4 ) ) ]
- wait ( 0.1 ) seconds
- Druk op de groene vlag om je programma te starten
- Draai aan de potmeter om de beer te laten lopen
Loopt de beer nu soepeler heen en weer? Zie je ook de groene led feller worden?
Extra: Potmeter vervangen door een drukknop
Ga verder met het circuit van de oefening met de potmeter. Haal de potmeter weg en plaats een drukknop, zodat deze verbonden is met GND en A0.
Kijk wat het programma nu doet.
Als ik de drukknop indruk, dan staat de beer stil.
Als ik de drukknop loslaat, dan wiebelt de beer heen en weer. De meetwaarde varieert, en dat komt omdat A0 nu nergens aan vast zit.
Extra: Potmeter vervangen door drukknop en weerstand
Ga verder met het circuit van de oefening met de potmeter. Haal de potmeter weg en plaats een drukknop, zodat deze verbonden is met GND en A0. Plaats een weerstand, zodat deze verbonden zit met A0 en 5V.
Kijk wat het programma nu doet.
Als ik de drukknop indruk, dan staat de beer stil.
Als ik de drukknop loslaat, dan staat de beer aan de andere kant. De meetwaarde is nu stabiel, en dat komt omdat A0 nu met de weerstand aan 5V zit.
Extra: Potmeter vervangen door een schakelaar
Ga verder met het circuit van de oefening met de potmeter. Haal de potmeter weg en plaats een schakelaar, zodat deze verbonden is met GND, A0 en 5V. De A0 zit op het middelste pootje van de schakelaar.
Kijk wat het programma nu doet.
Met de schakelaar kan ik de beer tussen twee posities laten springen.
Tip 1: In plaats van analoge ingang A0 kan je ook een digitale ingang gebruiken.
Tip 2: Op de foto zie je ook nog een andere schakelaar. Meestal is bij deze schakelaar het pootje aan de kant van het drukknopje de common. Deze pin wil je dan op A0. Als je het anders aansluit, dan kan het gebeuren dat de Arduino zichzelf reset, en dan moet je PictoBlox weer even opnieuw verbinden.
Extra: Potmeter vervangen door motor type 300 als generator
Ga verder met het circuit van de oefening met de potmeter. Haal de potmeter weg en plaats een motor type 300, zodat deze verbonden is met GND en A0.
Kijk wat het programma nu doet.
Door aan de motor te draaien kan je de beer opzij laten schuiven. Hoe harder je draait, hoe verder de beer beweegt.
Tip 1: Met een heel klein zonnepaneeltje kan je ook meten hoe sterk de zon schijnt. Wij hebben dit eigenlijk al gedaan met de LDR.
Tip 2: Het invoeren van een externe spanning kan de Arduino beschadigen. Kies je materialen zo dat je niet te ver voorbij het einde van het meetgebied zal gaan.
Extra: potmeter vervangen door een LDR lichtsensor en een weerstand
Op dezelfde manier kan je ook een lichtsensor uitlezen. We hebben nodig:
- een ‘grote’ weerstand van 100k
- en een LDR lichtgevoelige weerstand.
- het groene ledje
Maak de volgende verbindingen:
-
- Weerstand linker pootje, aan Arduino GND
- Weerstand rechter pootje, aan Arduino A0
- LDR linker pootje, aan Arduino A0
- LDR rechter pootje, aan Arduino 5V
- Groene led, langste pootje op D3
- Groene led, kortste pootje op D2
Nadat je deze aansluitingen hebt gemaakt, kan je jouw programma maken.
Bij de potmeter merkte je dat bij een groot deel van de meting de beer tegen de zijkant van je scherm stond, ook met de potmeter in de middenstand. Omdat de lichtmeting vooral in de middenstand van de meting zit, delen we het meetgetal door 4. Het programma wordt daarmee iets ingewikkelder.
- Maak dit programma:
-
- when flag clicked
- forever
- goto x: ( ( read analog pin [ A0 ] ) / ( 4 ) ) y: ( 0 )
- set digital pin [ 2 ] output as [ LOW ]
- set PWM pin [ 3 ] output as ( ( read analog pin [ A0 ] ) / ( 4 ) )
- wait ( 0.1 ) seconds
Lukt het om met de lichtsensor de beer te laten lopen? Zie je de groene led mee veranderen?
Extra: Met de LDR lichtsensor een servo bedienen
Door de bovenstaande voorbeelden te combineren kan je met je de servo bedienen met bijvoorbeeld een potmeter of met je LDR sensor.
Je hebt dan nodig:
- een ‘grote’ weerstand van 100k
- en een LDR lichtgevoelige weerstand.
- het groene ledje
Maak de volgende verbindingen:
-
- Weerstand linker pootje, aan Arduino GND
- Weerstand rechter pootje, aan Arduino A0
- LDR linker pootje, aan Arduino A0
- LDR rechter pootje, aan Arduino 5V
- Groene led, langste pootje op D3
- Groene led, kortste pootje op D2
-
- Servo Bruin –> GND
- Servo Rood –> 5V
- Servo Oranje –> D10
Nadat je deze aansluitingen hebt gemaakt, kan je jouw programma maken.
We gaan het meetgetal wat we hebben omgerekend, nu op meerdere plekken gebruiken. Daarom stoppen we dit getal eerst in een variabele. Deze vind je in het oranje gedeelte van het menu.
- Maak dit programma:
-
- when flag clicked
- forever
- set [ my variabele ] to ( ( read analog pin [ A0 ] ) / ( 4 ) )
- goto x: ( my variabele ) y: ( 0 )
- set digital pin [ 2 ] output as [ LOW ]
- set PWM pin [ 3 ] output as ( my variabele )
- set servo on [ 10 ] to ( my variabele ) angle
- wait ( 0.1 ) seconds
Lukt het om met de lichtsensor de beer te laten lopen? Zie je de groene led mee veranderen? Beweegt de servo nu ook?
Extra: Arduino en de Ultrasone sensor in PictoBlox
Dit is een leuke oefening.
Extra in PictoBlox Desktop: Motors bedienen met een motorcontroller aan de Arduino Nano
We kunnen met PictoBlox ook motors bedienen. Hiervoor hebben we een motorcontroller board nodig, en natuurlijk motors.
Als je ook motors hebt, kan je deze klaarmaken voor leuke experimenten. Kijk eens op: https://junioriot.nl/motors/
Soms moet je de motorcontroller nog even klaarmaken voor het breadboard: https://junioriot.nl/l298n-solderen-breadboard/
Tip voor de docent: Neem bijvoorbeeld de gele motors. De motors kan je voorzien van klittenband (de haakjes zijde) en je kunt de wielen er met een schroefje al op monteren. Het breadboard kan je dan voorzien van klittenband (pluisjes zijde) zodat de motors losjes op hun plek kunnen blijven. Als je de gele motors gebruikt, dan kan je twee motors beter uitlijnen door een stokje in de asjes te steken. Na gebruik halen de deelnemers alles weer uit elkaar.
We willen de bediening op D2-D3, D5-D6 gebruiken voor de robot bediening.
We hebben nodig:
-
- Je Arduino Nano
- de motor controller, die je hebt klaar gemaakt voor het breadboard
- twee gele motors, liefst met klittenband eraan. Aan de motors heb je al draden gemaakt.
- twee wielen, want dat is ook wel handig
- een breadboard, liefst met klittenband eronder
Maak de verbindingen:
-
- Arduino GND aan motorcontroller –
- Arduino 5V aan motorcontroller +
- Arduino D2, aan motorcontroller IN1
- Arduino D3, aan motorcontroller IN2
- Arduino D5, aan motorcontroller IN3
- Arduino D6, aan motorcontroller IN4
- De ene motor aan MOTOR-A (eventueel draden omdraaien om andere kant op te laten draaien)
- De andere motor aan MOTOR-B (eventueel draden omdraaien om andere kant op te laten draaien)
Om te kunnen zien of de poorten goed bediend worden, kan je op D2-D3 en op D5-D6 nog een paar ledjes prikken.
Nadat je deze aansluitingen hebt gemaakt, kan je jouw programma maken.
Als je klittenband hebt, dan helpt dit om snel een ludieke robot in elkaar te klitten. Natuurlijk kan je zelf bijvoorbeeld een mooier frame ontwerpen en 3D printen.
- Maak dit programma:
-
- when [ left arrow ] key pressed
- set digital pin [ 2 ] output as [ HIGH ]
- wait ( 0.2 ) seconds
- set digital pin [ 2 ] output as [ LOW ]
-
- when [ right arrow ] key pressed
- set digital pin [ 3 ] output as [ HIGH ]
- wait ( 0.2 ) seconds
- set digital pin [ 3 ] output as [ LOW ]
-
- when [ up arrow ] key pressed
- set digital pin [ 5 ] output as [ HIGH ]
- wait ( 0.2 ) seconds
- set digital pin [ 5 ] output as [ LOW ]
-
- when [ down arrow ] key pressed
- set digital pin [ 6 ] output as [ HIGH ]
- wait ( 0.2 ) seconds
- set digital pin [ 6 ] output as [ LOW ]
- Druk op de groene vlag om je programma te starten
- Druk op de pijltjestoetsen om de robot te laten rijden
Lukt het om met de pijltjestoetsen de robot te laten rijden?
Extra: de bediening aanpassen?
Kan jij er voor zorgen dat met pijltje vooruit de twee motors de goede kant op draaien? Kan je ook de andere pijltjes fixen?
Rijdende robot met LDR sensors
We willen nu dat de robot harder of zachter gaat rijden met de LDR sensoren. We kunnen daarvoor poort D3 en D5 gebruiken. Zorg dat je nu eerst het programma van de vorige oefening gebruikt. de motorcontroller kan de PWM signalen prima vertalen naar de motor bediening.
Eerst willen we zorgen dat de robot vooruit rijdt. Het kan zijn dat je de snoertjes van IN1 en IN2 daarvoor moet verwisselen. Voor de andere motor zijn dat de snoertjes van IN3 en IN4.
Laten we de eerste motor controleren. In het vorige programma zit poort D3 bij de pijltjestoets naar rechts. Druk eens op deze toets: de kant die de robot oprijd noemen we vooruit. Je kunt nu IN1 en IN2 verwisselen als je de robot de andere kant op wilt hebben.
Nu kan je de tweede motor controleren. In het vorige programma hoort D5 bij de pijltjestoets omhoog. Druk nu op deze toets. Je kunt nu IN3 en IN4 verwisselen als je de robot de andere kant op wilt hebben.
Pas je ontwerp aan. We willen de bediening op D2-D3, D5-D6 gebruiken voor de robot bediening. A0 en A1 gebruiken we voor twee LDR lichtgevoelige weerstanden.
We hebben nodig:
-
- Je Arduino Nano
- de motor controller, die je hebt klaar gemaakt voor het breadboard
- twee gele motors, liefst met klittenband eraan. Aan de motors heb je al draden gemaakt.
- twee wielen, want dat is ook wel handig
- een breadboard, liefst met klittenband eronder
- twee LDR lichtgevoelige weerstanden
- twee ‘grote’ weestanden van 100k
Maak de verbindingen:
-
- Arduino GND aan motorcontroller –
- Arduino 5V aan motorcontroller +
- Arduino D2, aan motorcontroller IN1
- Arduino D3, aan motorcontroller IN2
- Arduino D5, aan motorcontroller IN3
- Arduino D6, aan motorcontroller IN4
- De ene motor aan MOTOR-A (eventueel draden omdraaien om andere kant op te laten draaien)
- De andere motor aan MOTOR-B (eventueel draden omdraaien om andere kant op te laten draaien)
-
- Weerstand 1 linker pootje, aan Arduino GND
- Weerstand 1 rechter pootje, aan Arduino A0
- LDR 1 linker pootje, aan Arduino A0
- LDR 1 rechter pootje, aan Arduino 5V
-
- Weerstand 2 linker pootje, aan Arduino GND
- Weerstand 2 rechter pootje, aan Arduino A0
- LDR 2 linker pootje, aan Arduino A1
- LDR 2 rechter pootje, aan Arduino 5V
De meetwaarden van A0 en A1 zitten ok deze keer weer tussen 0 en 1024. We weten dat het getal bij de LDR en de weerstand vooral in het middengebied zal zitten. De PWM heeft een getal nodig tussen 0 en 254. We maken nu in het programma een andere berekening.
Als je de aansluitingen hebt gemaakt, maak je dit programma:
-
- when flag clicked
- set digital pin [ 2 ] output to [ LOW ]
- set digital pin [ 6 ] output to [ LOW ]
- forever
- set [ my variabele ] to ( ( read analog pin [ A0 ] ) – ( 450 ) )
- if ( ( my variable ) < 0 ) then
- set [ my variable ] to ( 0 )
- set [ variabele 2 ] to ( ( read analog pin [ A0 ] ) – ( 450 ) )
- if ( ( variable 2 ) < 0 ) then
- set [ variable 2 ] to ( 0 )
- set PWM pin [ 3 ] output as ( my variable )
- set PWM pin [ 5 ] output as ( variable 2 )
- wait ( 0.1 ) seconds
Druk op de groene vlag om het programma te starten. Gebruik een lichtje om de robot te proberen te bedienen. Het lijkt erop dat de robot stil staat als er veel licht is, en in de schaduw gaat rijden. Kan je zien dat de motors langzaam en snel willen draaien?
Arduino Nano programmeren in Upload mode
Laat je vorige programma op het scherm staan. Bij dit programma heb je het toetsenbord van je computer niet meer nodig. Dit programma kan je daarom helemaal in de Arduino Nano zetten. Het programma blijft dan werken, bijvoorbeeld als je de Arduino aansluit op een powerbank.
Aan de bovenkant van je scherm zie je Mode: Stage / Upload
- Klik op ‘Upload’
- Kies je board
- Connect je board
PictoBlox toont je opnieuw programmeeromgeving en geeft je nu de mogelijkheden om een programma te schrijven voor de Arduino Nano in Upload mode.
Het eerste blok van je programma ‘when flag clicked’ is donkergrijs, omdat je dit blok in Upload mode niet meer kunt gebruiken.
- Vervang ‘when flag clicked’ door ‘when Arduino Nano starts up’
Je programma ziet er nu zo uit:
PictoBlox toont naast het programma ook de c++ code. Dit is precies hetzelfde programma, maar dan in een andere weergave.
- Druk op ‘Upload Code’
De code staat nu echt op de Arduino Nano. Kijk nog eens of je robot goed reageert. Meestal werkt het programma nu veel soepeler.
Tip 1: Het Uploaden werkt goed in PictoBlox Desktop, maar niet in PictoBlox Web.
Tip 2: Als je de LDR’s tussen GND en Ao zet, en de weerstanden tussen A0 en 5V, dan wordt het een licht zoekende robot. Het zoekt dan de plek met het sterkste licht. Kan je controleren of dit klopt?
Arduino Nano & The Matrix
In Upload mode kan je voor de Arduino Nano nog meer extra blokken kiezen. Dan kan je bijvoorbeeld ook werken met de 8×8 led matrix.
Misschien moet je de header nog aan de matrix solderen. Soldeer deze dan aan de IN kant.
Maak deze verbindingen:
-
- Matrix VCC, aan Arduino 5V
- Matrix GND, aan Arduino GND
- Matrix Din, aan Arduino D3
- Matrix CS, aan Arduino D5
- Matrix CLX, aan Arduino D6
Zorg dat je in Upload mode werkt, de Arduino Nano hebt gekozen en bent connected. Maak het volgende programma:
-
- when Arduino Nano starts up
- initialize display to DIN [ 3 ] CS [ 5 ] CLK [ 6 ] —-> deze kan je vinden bij: 8×8 Dot Matrix display
- forever
- display [ smiley ]
- wait ( 1 ) seconds
- dosplay [ heart ]
- wait ( 1 ) seconds
Druk op Upload code.
Zie je een afbeelding verschijnen op de 8×8 led display?
Arduino Nano en de 8 pixel NeoPixel strip
PictoBlox heeft een extension beschikbaar om een NeoPixel te kunnen bedienen. Om deze extension op te halen doe je:
Als je bij je blokken naar beneden scrollt, dan staat Lighting er nu tussen!
Maak de NeoPixel strip klaar door er een 4 pins header op te solderen aan de IN-kant.
Maak de volgende verbindingen:
-
- NeoPixel DIN, aan Arduino D2
- NeoPixel GND, aan Arduino GND
- NeoPixel 5V, aan Arduino 5V
Maak het volgende programma:
-
- when Arduino Nano starts up
- initialize RGB strip [ 1 ] with ( 8 ) leds on pin [ 2 ] —-> deze kan je vinden bij RGB Lighting
- forever
- [ Color Swipe ] RGB strip [ 1 ] with color [ purple ] & delay [ 0.05 ] seconds
- [ Rainbow ] RGB strip [ 1 ] with delay [ 0.05 ] seconds
Druk op Upload code.
Zie je verschillende kleuren verschijnen op de 8 pixel NeoPixel strip?
En verder?
Programmeren: Na deze oefeningen kan je verder kijken naar de Arduino IDE, dat is heel ingewikkeld: https://junioriot.nl/arduino-party-stemup/
Engineering en 3D printen, ontwerp zelf een slagboom of een brug: https://junioriot.nl/slagboom-engineering/
Een opmerking over licenties
Thuis mag iedereen gewoon deze workshops gebruiken. Als school of organisatie mag je ook gewoon alle oefeningen van deze pagina doen als je de spulletjes van Junior IOT gebruikt. Voor ander gebruik moeten scholen en organisaties toestemming vragen aan Junior IOT voor deze beschrijvingen, en aan PictoBlox voor het gebruik van hun website en software.