Het programmeren van microcontrollers was vroeger iets voor ingenieurs en IT-experts. Arduino maakt het dankzij overzichtelijke
hardware en eenvoudig te begrijpen software voor iedereen mogelijk om toe te treden tot de microcontroller-techniek.
De naam Arduino
De Arduino komt uit Italië en werd vernoemd naar de Italiaanse koning Arduino, die tot het jaar
1005 heerste in Ivrea, de plaats van de maatschappelijke zetel van de Arduino-fabrikant.
Tegenwoordig is daar de naar de Koning Arduino genoemde lievelingsbar, van de Arduinoontwikkelaars Massimo Banzi en David Cuartielles.
Nano-compatibele printplaat
Het Arduino-platform biedt ondertussen een groot veelvoud aan printplaten voor verschillende gebruiksdoeleinden. Deze adventskalender
bevat een printplaat die met de Arduino-Nano-Standaard compatibel is en die direct op een insteekprintplaat kan worden gestoken om
bijkomende elektronica aan te sluiten. Elke dag wordt er in de adventskalender een hardware-experiment met het bijhorende programma
voorgesteld.
De meeste experimenten in deze adventskalender werden met Snap4Arduino geprogrammeerd. Deze programmeertaal is op scratch
gebaseerd, sowieso een van de gemakkelijkste programmeertalen om aan te leren. Later wordt ook de klassieke Arduino-IDE om te
programmeren voorgesteld. De te gebruiken programma's kunt u downloaden op: www.buch.cd. Voer voor dit product de code 15003-5 in
het invoerveld in
Insteekprintplaat
Voor de snelle opbouw van elektronische schakelingen zonder solderen, bevat de adventskalender op de eerste dag een insteekprintplaat.
Daarmee kunnen elektronische componenten direct in een insteekprintplaat worden aangesloten.
De verbindingen op de insteekprintplaat.
Bij deze insteekprintplaat zijn de buitenste lengterijen allen met elkaar verbonden via contacten (X en Y). Deze contactrijen worden vaak als
plus- en minpool voor de stroomvoorziening van de schakelingen gebruikt. In de andere contactrijen zijn steeds vijf contacten (A tot E en F
tot J) dwars met elkaar verbonden, waarbij er in het midden van de printplaat een tussenruimte is. Zo kunnen er in het midden grotere
componenten worden aangesloten en naar buiten wordenverbonden.
LED's
LED's (In het Nederlands: lichtdioden) lichten op wanneer er stroom doorstroomt in de doorstroomrichting. LED's worden in de
schakelingen met een pijlvormig driehoeksymbool weergegeven, dat de stroomrichting van de pluspool naar de minpool of naar de
massakabel aangeeft. Een LED laat in de stroomrichting bijna onbeperkt stroom door. Hij heeft slechts een zeer kleine weerstand. Om de
doorstroom te beperken en daardoor het doorbranden van de LED te verhinderen, wordt gewoonlijk een 220-Ohm-voorweerstand tussen
de gebruikte aansluitpin en de anode van de LED of tussen de kathode en de massapin ingebouwd. Deze voorweerstand beschermt ook de
uitgang van de Nano tegen te hoge stroomsterktes. In de LED's in de adventskalender is reeds een voorweerstand ingebouwd en ze kunnen
daarom direct aan de pinnen worden aangesloten.
Page 2
Schakelplan van een Led met voorweerstand.
LED in welke richting aansluiten?
De beide aansluitingsdraden van een LED hebben een verschillende lengte. De langste is de
pluspool, de anode, de kortste de kathode. Gemakkelijk te zien: Het plusteken heeft een streepje
meer dan het minteken en maakt de draad daardoor optisch iets langer. Bovendien zijn de meeste
LED's aan de minkant afgeplat, vergelijkbaar met een minteken. Ook gemakkelijk te zien: Kathode
= kort = kanten.
Weerstanden en hun kleurcodes
Weerstanden worden gebruikt voor de stroombegrenzing op gevoelige elektronische onderdelen, evenals op voorweerstanden voor LED's.
De maateenheid voor weerstanden is ohm. 1.000 ohm komt overeen met een kilo-ohm, afgekort kOhm. 1.000 kOhm komen overeen met
een megaohm, afgekort MOhm. Vaak wordt voor de eenheid ohm ook het omega-teken Ω gebruikt.
Kleur Weerstandswaarde in Ohm
1. Ring
(Tien)
Zilver
Goud
Zwart
Bruin1 1 101 = 10 ±1 %
Rood2 2 102 = 100 ±2 %
Oranje3 3 103 = 1.000
Geel 4 4 104 = 10.000
Groen 5 5 105 = 100.000 ±0,5 %
Blauw6 6 106 = 1.000.000 ±0,25 %
2. Ring
(Een)
0 100 = 1
3. Ring
(Multiplicator)
10−2 = 0,01 ±10 %
10−1 = 0,1 ±5 %
4. Ring
(Tolerantie)
Purper 7 7 107 = 10.000.000 ±0,1 %
Grijs8 8 108 = 100.000.000 ±0,05 %
Wit 9 9 109 = 1.000.000.000
De gekleurde ringen op de weerstanden geven de weerstandswaarde aan. Met een beetje oefening zijn ze duidelijk makkelijker te herkennen
dan heel kleine getallen, die men slechts nog op zeer oude weerstanden vindt.
De meeste weerstanden hebben vier dergelijke gekleurde ringen. De eerste twee gekleurde ringen betreffen de cijfers, de derde een
Page 3
multiplicator en de vierde de tolerantie. Deze tolerantiering is meestal goud- of zilverkleurig, kleuren die niet voorkomen op de eerste
ringen. Daardoor is de leesrichting altijd eenduidig. De tolerantiewaarde zelf speelt in de digitale elektronica bijna geen rol. De tabel geeft
de betekenis weer van de gekleurde ringen op weerstanden.
Het maakt niet uit in welke richting een weerstand wordt ingebouwd. Bij LED's speelt de inbouwrichting daarentegen een belangrijke rol.
Voorzorgsmaatregelen
Nooit enige Arduino-pinnen met elkaar verbinden en afwachten wat er gebeurt.
Niet alle Arduino-pinnen laten zich vrij programmeren. Sommige zijn speciaal geconfigureerd voor
de stroomvoorziening en andere doeleinden.
Enkele Arduino-pinnen zijn direct met aansluitingen van de microcontroller verbonden, een
kortsluiting kan de Arduino volledig verwoesten - op z'n minst in theorie. De Arduino-printplaten
zijn verbazend resistent tegen schakelfouten. Indien men twee pinnen met elkaar verbindt via een
LED, dan moet er altijd een veiligheidsweerstand tussen worden geplaatst.
Voor logische signalen vereisen sommige Arduino-compatibele printplaten 3,3 V, andere 5 V. De
Nano in deze adventskalender maakt gebruik van een +5-V-signaal als logisch high of waar.
1. dag
Vandaag op de adventskalender
•Nano (Arduino-compatible insteekplaat)
Nano voorbereiden
Om de Nano in gebruikt te nemen, heeft men het volgende nodig:
•PC met Windows
•Micro-USB-kabel
•Driver
De PC en de Nano worden met behulp van een Micro-USB-kabel verbonden. U hoeft zo'n kabel niet extra te kopen, bijna alle moderne
smartphones gebruiken dit stekkertype. De kabel zal tegelijk voor de stroomtoevoer als voor de gegevensoverdracht worden gebruikt.
Sluit de kabel indien mogelijk aan een USB-2.0-aansluiting van uw PC aan, omdat het met een USB-3.0-aansluiting sneller tot
verbindingsproblemen zou kunnen komen.
Software-installatie in het kort
Zie hier de driver-installatie in vier stappen:
Installatie van de driver van het toestel.
Page 4
1. Download het voorbeeldprogramma en de driver van het toestel op www.buch.cd. Vermeld voor dit product de code 15003-5 in het
invoerveld en volg de aanwijzingen op het scherm.
2. Pak het ZIP-archief uit in een map naar keuze in uw Windows-gebruikersmappen.
3. Sluit de Nano aan via de USB-Kabel en start de installatie van de driver met het bestand
CH341SER.EXE
. Voor de installatie moet u een
vraag naar het Windows-gebruikersaccountbeheer bevestigen.
4. Klik in het installatiedialoogvenster op Install en wacht tot de bevestiging verschijnt dat de driver geïnstalleerd wordt.
De LED knippert
Voor de meeste projecten in de adventskalender gebruiken we de gemakkelijk aan te leren programmeertaal Snap4Arduino. Ze kan in de
downloads van de adventskalender worden verkregen. Of download de huidige versie op snap4arduino.org .
instellingen
Het
-menu in Snap4Arduino.
Selecteer
Nederlands
in deze lijst.
Klik in Snap4Arduino op het Instellingen-symbool en selecteer Language in het menu.
Voor u met programmeren kunt beginnen, moet er een verbinding tussen de PC en de Nano worden gemaakt. Daarvoor is de bij de
adventskalender meegeleverde Nano de software StandardFirmata reeds geïnstalleerd.
Page 5
Klik in Snap4Arduino links bovenaan op de blokpallet Arduino en klik op Met Arduino verbinden. Indien hier slechts een COM-interface
verschijnt, selecteer u deze. Indien er twee interfaces worden getoond, is de onderste in de meeste gevallen de juiste.
Bevestig het bericht met OK.
Interface voor de verbinding selecteren.
Fout bij het openen van een nieuw programma
Bij het openen van een nieuw programma in Snap4Arduino gaat de verbinding met de Arduino
vaak verloren. Indien er een fout zou optreden wanneer u een nieuw programma opstart, kunt u de
Nano met een klik opnieuw verbinden.
De verbinding met de Nano is geslaagd.
Het programma
In Snap4Arduino moet men bij het programmeren geen programmacode intikken. De blokken worden eenvoudig met drag-and-drop aan
elkaar gehangen. De blokpallet in het linker gedeelte van het venster bevat de beschikbare blokken die op thema zijn gerangschikt.
De programma's bij de adventskalender
De programma's bij de adventskalender kunt u op www.buch.cd downloaden of gewoon elke dag aan de hand van de afbeelding zelf
samenstellen. Pak het ZIP-bestand uit de download uit een map op de harde schijf. Klik vervolgens bovenaan links in
Snap4Arduino op het bestandssymbool en kies Importeren, om de programma's die in XML-formaat beschikbaar zijn, in
Page 6
Snap4Arduino te importeren. De eenmaal geïmporteerde programma's zijn vervolgens beschikbaar in een eigen bibliotheek die in het
menu via Openen kan worden bereikt.
Het eerste programma
01led01
gebruikt de belangrijkste blokken:
Wanneer het groene vlaggetje van de batjesbesturing wordt aangeklikt, betekent dit de start voor de meeste programma's.
vertrekkend van de batjes-besturing is een eindeloze lus die voortdurend wordt herhaald.
Plaats de digitale pin... op... van de palet Arduino zet een van de digitale pinnen van de Nano op een logische waarde waar of niet waar. Het
groene blok voor logische waarden is op het batje Operatoren te vinden. De beide waarden waar en niet waar kunnen direct in het blok
worden omgeschakeld.
De LED aan pin 13
Voor statusweergaven zonder extra software beschikt de Nano over een eigen LED die via pin 13 kan worden gecontroleerd.
wacht.. Sec van de pallet Besturing laat het programma een bepaalde tijd tot de volgende stap wachten.
Zo werkt het programma
Het programma start wanneer de gebruiker rechts bovenaan op het groene vlaggetje klikt.
Het programma
01led01
laat de LED op de Nano kort knipperen.
Een doorlopende lus zorgt ervoor dat de LED eindeloos knipperen en wel zolang tot de gebruiker op het rode stopsymbool rechts bovenaan
in de Snap4Arduino klikt.
Nadat de LED 13 is uitgeschakeld, wordt er 0,01 seconde gewacht en zolang licht de LED op. Daarna wordt de LED aan pin 13 opnieuw
uitgeschakeld. Het programma wacht nu een halve seconde. Daardoor licht de LED steeds slechts voor korte tijd op en is daarna voor
relatief lange tijd uitgeschakeld. Vervolgens herhaalt de cyclus zich.
Opmerking: Decimaal punt
Snap4Arduino gebruikt, zoals zoveel Amerikaanse programma's, een punt als
decimaalteken en niet de in Duitsland gebruikelijke komma.
2. dag
Vandaag op de adventskalender
•1 Insteekprintplaat (SYB 46)
•1 LED rood met ingebouwde voorweerstand
Wisselknipperlicht
Een eenvoudig programma
02led02
laat twee LED's afwisselend knipperen.
Page 7
LED-wisselknipperlicht aan de Nano.
Onderdelen: 1 insteekprintplaat, 1 LED rood met voorweerstand
Let er bij de opbouw van de schakeling op dat de kathode (korte draad) van de LED met de GND-pin verbonden is en de anode (lange
draad) met de D2-pin.
De Pinnen op de Nano
Alle pinnen met D… zijn digitale in- of uitgangen, die de waarden waar of niet waar (aan of uit) kunnen aannemen. De pinnen met A… zijn analoge ingangen.
GND-pinnen zijn massaleidingen. Arduino-compatibele printplaten werken
met verschillende spanningen en beschikken daarom standaard over twee
verschillende pluspinnen. Aan pin 3.3 is +3,3 V spanning aangesloten. Aan pin
5 V is +5 V spanning aangesloten. De Nano in de adventskalender vereist voor
een logisch waar-signaal +5 V, talrijke andere printplaten slechts +3,3 V.
Het programma
Het programma
02led02
laat de ingebouwde LED op de Nano en de extern aangesloten Led afwisselend knipperen.
Ee eenvoudig programma
02led02
laat twee LED's afwisselend knipperen.
Zo werkt het programma
Een doorlopende lus zorgt ervoor dat de beide LED's afwisselend eindeloos knipperen en wel zolang tot de gebruiker op het rode
Page 8
stopsymbool rechts bovenaan in de Snap4Arduino klikt.
Nadat de ingebouwde LED aan pin 13 is ingeschakeld, wordt er 0,01 seconde gewacht zodat StandardFirmata geen bevel “verslikt”. Tussen
het plaatsen van de twee pinnen moet bij de meeste Arduino-compatibele printplaten altijd een wachttijd worden ingebouwd. Bij de Nano in
de adventskalender is dit niet absoluut noodzakelijk. Daarna wordt de LED aan pin 2 uitgeschakeld. Het programma wacht nu een halve
seconde.
Vervolgens wordt op dezelfde manier de LED aan pin 2 in- en de LED aan pin 13 uitgeschakeld. Na nog een halve seconde begint de cyclus
van vooraf aan.
3. dag
Vandaag op de adventskalender
• Schakeldraad (geïsoleerd)
Schakeldraad
De schakeldraad is nu in de adventskalender inbegrepen. Daarmee maakt u korte verbindingsbruggen waarmee contactrijen op
insteekprintplaat verbonden worden. Snijd de draad met een kleine kantensnijder op de passende lengte voor het experiment. Om de
draden beter in de insteekprintplaat te kunnen steken, is het aangeraden om ze lichtjes schuin af te snijden zodat er een kleine wig ontstaat.
Verwijder aan beide kanten ongeveer een halve centimeter isolatie.
LED-wisselknipperlicht aan de Nano.
LED's knipperen met een instelbare snelheid
Het experiment van de 3de Dag laat opnieuw twee LED's afwisselend knipperen. U kunt echter de snelheid instellen.
Onderdelen: 1 insteekprintplaat, 1 LED rood met voorweerstand, 1 draadbrug
De schakeling van vandaag toont een typische schakelingsopbouw op de insteekplaat. Een van de horizontale contactlijsten wordt als
aardingskabel gebruikt, die met de GND-pin op de Nano via een draadbrug verbonden is. Let er bij de opbouw van de schakeling op dat de
kathode (korte draad) van de LED in de aardingskabel steekt, de anode (lange draad) is bij deze schakeling met pin 10 verbonden.
Het programma
Het programma
externe LED afwisselend knipperen. De knipperfrequentie kunt u met een schuifregelaar op het beeldscherm controleren.
03led03
functioneert zoals dat van gisteren en laat de ingebouwde LED op de Nano en deze keer op pin 10 aangesloten
Page 9
Het programma
03led03
laat twee LED's afwisselend met instelbare snelheid knipperen.
Zo werkt het programma
De doorlopende lus laat ook hier de beide LED's afwisselend eindeloos knipperen. In plaats van een door het programma vast ingestelde
tijd tussen het omschakelen wordt een variabele gebruikt.
Variabelen in Snap4Arduino
Variabelen zijn kleine opslagplaatsen waarin men tijdens een programma een getal of
iets anders kan vermelden. Wanneer het programma beëindigd wordt, wordt deze
variabele opslag opnieuw leeggemaakt. Variabelen moeten eerst in Snap4Arduino op
de commando-pallet Variabelen met de button Nieuwe Variabele worden gecreëerd
voor men ze kan gebruiken. Vervolgens kunt u het symbool van de nieuw gecreëerde
variabelen uit de blokpallet in een daarvoor voorzien veld van een blok in het
programma trekken. Op de blokpallet staan bijkomend verschillende blokken ter
beschikking om de variabelen uit te lezen en te veranderen.
Indien er een variabele wordt ingesteld, dan verschijnt er een oranje gekleurd symbool op het platform. Hier wordt op elk moment de
actuele waarde van de variabele weergegeven. Klik met de rechter muisknop op dit symbool en selecteer de optie Regelaar.
Via de opties minimale waarde en maximale waarde stelt u de waarden 1 en 10 in. Snap4Arduino kan met de schuifregelaars alleen gehele
getallen instellen, alhoewel de variabelen zelf om het even welke waarde kunnen aannemen.
In het programma wordt de ingestelde variabele z door 10 gedeeld om waarden tussen 0,1 en 1,0 seconde te bekomen. Op de blokpallet
Operatoren bevinden er zich blokken voor de verschillende grondberekeningen.
4. dag
Vandaag op de adventskalender
•1 LED groen met ingebouwde voorweerstand
LED's knipperen willekeurig.
Het experiment van de 4de Dag laat drie LED's in willekeurige volgorde knipperen. De beide externe LED's steken zeer dicht naast elkaar op
de insteekprintplaat omdat het programma de opeenvolgende pinnummers nodig heeft. De derde LED is de op de Nano-printplaat
gesoldeerde LED met pinnummer 13.
Page 10
Drie LED's knipperen willekeurig.
Onderdelen: 1 insteekprintplaat, 1 LED rood met voorweerstand, 1 LED groen
met voorweerstand, 1 draadbrug
Het programma
Het programma
digitale pinnen na elkaar in- en uitgeschakeld. De pinnen worden deze keer willekeurig geselecteerd.
Hoe ontstaan toevallige getallen?
In het algemeen denkt men dat er in een programma niets toevallig kan
gebeuren. Hoe kan een programma dan zelf in staat zijn om willekeurige
getallen te produceren? Indien men een groot priemgetal deelt door om het
even welke waarde, ontstaande er vanaf de x-te plaats na de komma
getallen die nauwelijks voorspelbaar zijn. Ze wijzigen zich ook zonder enige
regelmaat wanneer men de deler regelmatig verhoogd. Dit resultaat dat
ogenschijnlijk toevallig is laat zich echter door een identiek programma of
het verschillende malen oproepen van het gelijke programma op elk
moment reproduceren. Neemt men echter een uit enige van deze cijfers
samengesteld getal en deelt men dat opnieuw door een getal dat uit de
seconde van actuele tijd bestaat of door de inhoud van een opslagplaats
naar keuze van de computer, geeft dit een resultaat dat zich niet laat
reproduceren en daarom als een willekeurig getal wordt beschouwd.
04led04
functioneert op dezelfde manier als het programma van gisteren. Ook hier wordt in een eindeloze lus verschillende
Het programma
04led04
laat de LED's toevallig knipperen.
Page 11
Zo werkt het programma
Bij de start van elke cyclus van de eindeloze lus wordt de variabele n op een willekeurig getal tussen 11 en 13 gezet. Deze geeft het
pinnummer aan van de LED die moet worden uitgeschakeld. Daarvoor heeft de schakeling drie opeenvolgende pinnummers nodig.
De snelheid van de kleurwissel wordt met behulp van een variabele z gecontroleerd, die via een schuifregelaar wordt ingesteld en dan voor
elk schakelproces geldt.
De willekeurig gekozen LED wordt gedurende de ingestelde tijd ingeschakeld en daarna even lang uitgeschakeld. In de volgende luscyclus
wordt er opnieuw een willekeurige LED geselecteerd. Daarbij kan het voorvallen dat er verschillende malen na elkaar dezelfde LED oplicht.
5. dag
Vandaag op de adventskalender
•1 LED geel met ingebouwde voorweerstand
Verkeerslicht
Het experiment van de 5de dag schakelt een verkeerslicht met drie LED's in zijn typische cyclus van rood via rood/geel naar groen en via
geel terug naar rood.
Verkeerslicht bestaande uit drie LED's
Onderdelen: 1 insteekprintplaat, 1 LED rood met voorweerstand, 1 LED geel
met voorweerstand, 1 LED groen met voorweerstand, 1 draadbrug
Het programma
Het programma
digitale pinnen na elkaar in- en uitgeschakeld. In de tussenfases Rood/Geel en Geel brandt het verkeerslicht telkens 0,5 seconde, in de fasen
Rood en Groen telkens 3 seconden. Die tijden laten zich in het wacht...sec-blok ook anders instellen.
05verkeerslicht01
functioneert zoals het programma van de 3de dag. Ook hier worden in een eindeloze lus verschillende
Zo werkt het programma
Elke cyclus van de eindeloze lus start met de rode fase van het verkeerslicht, waarbij de gele en de groene LED uitgeschakeld zijn. Na 3
seconden wordt ook de gele LED bijkomend ingeschakeld. Na een korte Rood/Geel-fase van 0,5 seconde worden de rode en de gele LED
uit- en de groene ingeschakeld. De groene fase duurt 3 seconden en daarop volgt een gele fase van 0,5 seconde en de eindeloze lus start met
rood een nieuwe cyclus.
Page 12
Het programma
05ampel01
laat de LED's afwisselend knipperen.
6. dag
Vandaag op de adventskalender
•1 knop
•1 10-kOhm-weerstand (bruin-zwart-oranje)
LED's met knoppen omschakelen
Het experiment van de 6de dag schakelt via een knop twee LED's om.
Een knop schakelt twee LED's om.
Onderdelen: 1 insteekprintplaat, 1 LED rood met voorweerstand, 1 LED groen
met voorweerstand, 1 knop, 1 10kOhm-weerstand (bruin-zwart-oranje), 3
draadbruggen (verschillende lengten)
Page 13
Digitale pinnen kunnen niet alleen gegevens uitgeven, bijvoorbeeld via LED's, maar ook voor het ingeven van gegevens worden gebruikt.
Voor de ingave gebruiken we in dit project een knop die direct op de insteekprintplaat wordt gestoken. De knop beschikt over vier
aansluitpinnen waarbij elke twee tegenoverliggende (grootste afstand) met elkaar verbonden zijn. Zolang de knop ingedrukt is, zijn alle vier
de aansluitingen met elkaar verbonden. In tegenstelling tot een schakelaar, klikt een knop niet vast. De verbinding wordt bij het loslaten
onmiddellijk opnieuw onderbroken.
Komt er een +5-V-signaal aan, dan wordt het logisch als waar beschouwd.
Schakelschema van een knop met een pull-down-weerstand.
Bij open knop heeft de ingang geen eenduidig gedefinieerde toestand. Wanneer een programma deze pin controleert, kan het tot toevallige
resultaten komen. Om dat te verhinderen koppelt men een relatief zeer hoge weerstand - gewoonlijk 10 kOhm - aan de massa. Deze
zogenaamde pull-down-weerstand brengt de status van de ingangspin bij geopende knop opnieuw naar beneden op 0 V. Omdat de
weerstand zeer hoog is, bestaat er ook geen gevaar op kortsluiting zolang de knop is ingedrukt. Indien de knop ingedrukt is, zijn +5 V en de
massakabel direct met de weerstand verbonden.
Het programma
Het programma
ingedrukt is, brandt alleen de rode LED.
06led06
schakelt wanneer de knop is ingedrukt, de groene LED aan pin 8 aan en de rode aan pin 12 uit. Zolang de knop niet
Het programma
06led06
schakelt twee LED's om met een knop.
Zo werkt het programma
Een indien…dan…-blok van de blokpallet Besturing voert het blok in de bovenste brugplaat alleen uit wanneer het resultaat van het verzoek
naar de waarde waar is. In het andere geval worden de blokken in de onderste brugplaat uitgevoerd.
Een verzoek leest via een blok van de blokpallet Arduino de waarde van de digitale pin 3 uit en controleert of ze waar is. Digitale ingangen
kunnen alleen de waarden waar en niet waar aannemen.
Indien de waarde waar is, is de knop ingedrukt. In dit geval wordt de LED aan pin 8 in- en die aan pin 12 uitgeschakeld. Indien de toets niet
ingedrukt is, heeft pin 3 de waarde niet waar, en de LED's worden precies omgekeerd geschakeld.
Page 14
7. dag
Vandaag op de adventskalender
•1 LED rood met ingebouwde voorweerstand
LED dimmen
Het experiment van de 7de dag dimt een LED.
Een LED wordt gedimd en de tweede brandt met relatief volledige helderheid.
Onderdelen: 1 insteekprintplaat, 2 LED's rood met voorweerstand, 1
draadbrug
LED's zijn typische componenten voor de uitgave van signalen in de digitale elektronica. Ze kunnen twee verschillende toestanden
aannemen, aan en uit, 0 en 1 of niet waar en waar. Hetzelfde geldt voor de als uitgang gedefinieerde pinnen. Daarom zou het theoretisch
onmogelijk zijn om een LED te dimmen.
Met een truc lukt het echter om de helderheid van een LED aan een digitale pin te regelen. Indien men een LED snel genoeg laat knipperen,
neemt het menselijk oog dit niet meer als knipperen waar. De techniek genaamd pulsbreedtemodulatie (PBM) creëert een pulserend signaal
dat zich in zeer korte afstanden in- en uitschakelt. De signaalspanning blijft altijd gelijk, alleen de verhouding tussen level niet waar (0 V) en
level waar (+3,3 V) wordt veranderd. De knopverhouding geeft de verhouding van de lengte van de ingeschakelde toestand ten opzichte van
de volledige duur van een schakelcyclus aan.
Hoe kleiner de knopverhouding, hoe korter de oplichttijd van een LED binnen een schakelcyclus. Daardoor werkt de LED donkerder dan
een permanent ingeschakelde LED.
Pinnen voor PBM-signalen
De pinnen 3, 5, 6, 9, 10 en 11 zijn op de schakelbeelden van een '-symbool voorzien. Deze pinnen
Page 15
kunnen voor pulsbreedtemodulatie gebruikt worden. Snap4Arduino biedt de anderen pinnen in
blok Zet pin... op... ook helemaal niet als keuze aan.
Het programma
Het programma
helderheid op.
07pwm01
dimt de LED aan pin 9 cyclisch helderder en donkerder aan. De LED aan pin 12 licht ter vergelijking met volledige
Het programma
07pwm01
dimt een LED aan de PBM-uitgang aan.
Zo werkt het programma
Bij het begin wordt pin 12 als digitale pin op waar ingesteld. Vervolgens worden twee variabelen gedefinieerd: helder bepaalt de PBMwaarde voor de helderheid van de LED, en stap geeft de lengte van de stappen bij het dimmen aan. De actuele waarde van beide variabelen
worden in realtime rechts bovenaan op het platform getoond. Nu begint een eindeloze loop. Eerst wordt bij elke luscyclus de actuele waarde
van de variabele helder als PBM-waarde op pin 9 uitgegeven. Vervolgens wordt de waarde van de variabele helder met de waarde stap
verhoogd.
In de volgende stap wordt gecontroleerd of de waarde van helder de grens 0 of 100 al dan niet bereikt heeft. In dit geval wordt een of-blok
gebruikt, dat opnieuw over plaats voor twee extra verzoeken beschikt. Indien van deze twee tenminste een waar is, geeft het of-blok de
waarde waar weer en de inhoud van het indien-blok wordt uitgevoerd.
Twee gelijktijdige verzoeken controleren of de waarde van de variabelen helder de waarde 0 of 100 heeft bereikt. Indien dit het geval is,
wordt de variabele stap op een nieuwe waarde gezet. Omdat Snap4Arduino niet de mogelijkheid biedt om het voorteken van een variabele
om te keren, gebruiken we de operator minteken en trekken de waarde van 0 af, wat hetzelfde resultaat oplevert. Op het moment waarop de
richting omkeert en de LED dus ofwel volledig helder of volledig donker is, wacht het programma een halve seconde.
Tenslotte wacht het programma in elke luscyclus 0,05 seconden. Vervolgens start de eindeloze lus opnieuw en levert het aan de LED's een
nieuwe PMW-waarde.
8. dag
Vandaag op de adventskalender
•1 LED groen met ingebouwde voorweerstand
Voetgangerslicht
Het experiment van de 8ste dag schakelt een voetgangerslicht via een knop. Bij het drukken op de knop start de typische verkeerslichtcyclus
van een voetgangerslicht. In ruststand is het voetgangerslicht rood en het verkeerslicht groen.
Page 16
Een knop schakelt het voetgangerslicht.
Onderdelen: 1 insteekprintplaat, 2 LED's rood met voorweerstand, 1 LED geel
met voorweerstand, 2 LED's groen met voorweerstand, 1 knop, 1 10kOhmweerstand (bruin-zwart-oranje), 3 draadbruggen (verschillende lengten)
Het programma
Het programma
het verkeerslicht in startpositie gebracht. Het voetgangerslicht is rood en het verkeerslicht groen. Wanneer men op de knop drukt begint de
cyclus te lopen. Na een cyclus wacht het programma opnieuw tot er opnieuw op de knop wordt gedrukt.
08verkeerslicht02
controleert met een boetseerkleicontact een voetgangerslicht. Door op het groene vlagje te klikken wordt
Page 17
Het programma
08verkeerslicht02
controleert een voetgangerslicht met een boetseerkleicontact.
Zo werkt het programma
Bij de start van het programma worden de vijf LED's in de startpositie van het verkeerslicht gebracht. Daarna begint de hoofdlus van het
programma dat opnieuw uit een enkel fout…-verzoek bestaat. Zolang de knop niet ingedrukt is, gebeurt er niets. Indien hij ingedrukt is,
loopt de verkeerslichtcyclus die in vergelijking met het programma van de 5de dag met de schakeling van het voetgangerslicht tijdens de
rode fase van het verkeerslicht wordt uitgebreid.
9. dag
Vandaag op de adventskalender
•1 LED blauw met ingebouwde voorweerstand
Page 18
Spel op het beeldscherm
Tijdens het spel vliegt een bal over het platform en botst tegen de gekleurde kanten. Telkens als een bal een kant aanraakt, knippert de Led
van dezelfde kleur gedurende korte tijd op.
Het tekenprogramma in Snap4Arduino.
Onderdelen: 1 insteekprintplaat, 1 LED rood met voorweerstand, 1 LED geel met voorweerstand,
1 LED groen met voorweerstand, 1 LED blauw met voorweerstand, 1 draadbrug
Snap4Arduino bevat een eigen tekenprogramma waarmee men het platform kan beschilderen. Klik op de voorwerpenpallet rechts onderaan
op het symbool van het platform, daar op het tabblad Achtergronden en vervolgens op het penseelsymbool Paint a new costume
Met hetzelfde tekenprogramma waarmee u het platform beschildert, kunt u ook een cirkel uit het standaardvoorwerp maken. Klik op het
voorwerp op de voorwerpenpallet en ga vervolgens naar de tab Kostuums. Ook hier vindt u het penseelsymbool van het tekenprogramma.
Ga daarna naar de tab Scripts, om opnieuw naar het script-bereik van Snap4Arduino terug te keren.
Het programma
Het programma
groene vlagje gestart en beweegt de bal over het platform.
De vier andere blokken laten elk een LED oplichten, wanneer de bal een vlak met de overeenkomende kleur aanraakt.
09speel01
bestaat uit vijf niet van elkaar afhankelijke programmablokken. Het hoofdprogramma wordt met een klik op het
Zo werkt het programma
Met een klik op het groene vlagje wordt de bal op het nulpunt van het coördinatensysteem in het midden van het platform geplaatst en er
wordt een willekeurige bewegingsrichting ingesteld. Nu begint een eindeloze lus die bij elke cyclus controleert of de bal tegen de rand stoot
en hem in dat geval laten stuiteren. Bovendien wordt de bal acht stappen in de bewegingsrichting bewogen.
Vier LED's tonen de speelresultaten.
Page 19
Gekleurde balken op het platform.
De vier andere gekleurde balken worden steeds dan geactiveerd wanneer de bal een bepaalde kleur op het platform aanraakt. Om deze kleur
te kiezen, klikt u in het kleurenveld in het aanraak…?-blok. Nu kunt u de kleur in het kleurenpallet of direct op het platform selecteren. Elk
van deze vier blokken laat de qua kleur passende LED gedurende 0,5 seconden oplichten.
10. dag
Vandaag op de adventskalender
•1 x boetseerklei
•1 20-MOhm-weerstand (rood-zwart-blauw)
LED met boetseerklei sensor schakelen
Het experiment van de 10de Dag toont hoe sensorcontacten uit boetseerklei functioneren.
LED met boetseerklei sensor schakelen.
Page 20
Onderdelen: 1 insteekprintplaat, 1 LED rood met voorweerstand, 1 LED groen
met voorweerstand, 1 20-MOhm-weerstand (rood-zwart-blauw), 1 draadbrug,
2 boetseerkleicontacten
Het rechter boetseerkleicontact is het massacontact. Deze raakt u het best voortdurend aan, terwijl u de boetseerkleisensor links vastpakt en
opnieuw loslaat.
Zo functioneren sensorcontacten
De als ingang geschakelde pin is via een extreem hoog-ohmige weerstand (20MOhm) met +3,3V verbonden zodat een zwak, maar duidelijk
als High gedefinieerd signaal aanwezig is. Een mens die niet helemaal vrij in de lucht zweeft, is altijd geaard en levert via de elektrisch
geleidende huid een Low-niveau. Als deze mens een sensorcontact aanraakt, wordt het zwakke High-signaal met het duidelijk sterkere Lowniveau van de vingertop gemengd en trekt de GPIO-pin naar Low-niveau.
Hoe hoog de weerstand tussen hand en massa werkelijk is, hangt van veel dingen af, onder meer van schoenen en vloer. Blootsvoets in het
natte gras is de verbinding met de massa van de aarde het best, maar ook op een stenen vloer werkt het meestal goed. Houten vloeren
isoleren beter, kunststof vloerbedekkingen zijn vaak zelfs positief geladen. Opdat de schakeling altijd werkt, is - zoals bij sensortoetsen aan
liften en deuren - bij elke schakeling extra op de insteekprintplaat een aardingscontact ingebouwd. Als men dit aanraakt en tegelijk de
eigenlijke sensor, is de aardverbinding in elk geval aangemaakt.
Schakelsystemen voor sensorcontacten aan de Arduino.
Boetseerklei leidt de stroom ongeveer net zo goed als de huid. Het is gemakkelijk in elke gewenste vorm te brengen en een
boetseerkleicontact is beter aan te raken dan een simpel stukje draad. Het vlak waarmee de hand het contact aanraakt, is duidelijk groter. Zo
komt het niet zo gemakkelijk tot een “los contact“. Snijd een stuk blanke draadbrug van ongeveer tien cm lang af, verwijder aan beide
kanten ongeveer een centimeter van de isolatie en steek het uiteinde in een stuk boetseerklei. Steek het andere einde, zoals te zien in de
afbeelding, in de insteekprintplaat.
Omdat Snap4Arduino de in de Arduino ingebouwde pull-down-weerstanden altijd inschakelt, worden digitale ingangen altijd op 0
getrokken en hebben ook zonder aanraking een Low-niveau. De Arduino-compatibele printplaten beschikken over aanvullende analoge
ingangen, die zeer geschikt zijn als sensorcontacten. Analoge ingangen leveren waardes tussen 0 (Low-niveau) en 1023 (High-niveau).
Afhankelijk van het printplaattype zijn waarden tussen 100 en 200 goede grenswaarden om een onderscheid te maken tussen aangeraakte
en niet aangeraakte sensorcontacten.
Het programma
Het programma
losgelaten.
10boetseerklei01
schakelt de LED in wanneer het boetseerkleicontact wordt aangeraakt en opnieuw uit wanneer het wordt
Page 21
Het programma
10boetseerklei01
schakelt de LED om wanneer het boetseerkleicontact wordt aangeraakt.
Zo werkt het programma
De variabele x toont op het platform altijd de actuele waarde van de analoge pin 2. Indien ze kleiner is dan 200, wordt tijdens het
indien…anders…-verzoek de LED aan de digitale pin 8 in- en de LED aan pin 12 uitgeschakeld, in het andere geval worden de LED's
omgekeerd geschakeld.
11. dag
Vandaag op de adventskalender
•1 RGB-LED met ingebouwde voorweerstanden
RGB-LED's
Een normale LED brandt altijd in één kleur. De in de adventskalender opgenomen RGB-LED's kunnen naar keuze in meerdere kleuren
branden. Hier zijn in principe drie LED's met verschillende kleuren ingebouwd in een transparante behuizing. Elk van deze drie LED's heeft
een eigen anode, via welke zij met een digitale uitgang worden verbonden. De kathode, die met de aardleiding wordt verbonden, is slechts
eenmaal voorhanden. Derhalve heeft een RGB-LED vier aansluitdraden.
Aansluitpinnen van een RGB-LED.
De aansluitdraden van de RGB-LED's zijn van verschillende lengte, zodat ze duidelijk te herkennen zijn. Anders dan bij normale LED's is de
kathode hier de langste draad.
Page 22
Schakelplan van een RGB-LED met drie voorweerstanden.
RGB-LED's functioneren zoals drie enkele LED's en gebruiken daarom ook drie 220-Ohm-voorweerstanden. In de RGB-LED's in deze
adventskalender zijn ze ook reeds ingebouwd.
RGB-lichteffecten
Het experiment van de 11de Dag toont verschillende kleuren op een RGB-LED.
Onderdelen: 1 insteekprintplaat, 1 RGB-LED met voorweerstanden, 1
draadbrug
Lichteffecten met RGB-LED's
Het programma
Het programma
11rgb01
functioneert op dezelfde manier als dat van gisteren. Ook hier wordt in een eindeloze lus verschillende digitale
Page 23
pinnen na elkaar in- en uitgeschakeld. In dit geval gaat het om de drie kleurcomponenten van de RGB-LED.
Verschillende kleuren op een RGB-LED.
Bijkomende kleurenmengeling
RGB-LED's gebruiken de zogenaamde bijkomende kleurenmengeling.
Daaraan worden de drie lichtkleuren rood, groen en blauw toegevoegd
en dit geeft uiteindelijk zuiver wit. In tegenstelling daarmee gebruikt
een kleurenprinter de subtractieve kleurenmengeling. Elke kleur werkt
op een wit blad als een filter, die een gedeelte van het wit reflecterend
licht wegneemt (dus subtraheert). Indien men de drie drukkleuren
boven elkaar afdrukt, resulteert dit in zwart dat helemaal geen licht
meer reflecteert.
Page 24
Bijkomende kleurenmengeling.
Zo werkt het programma
In het programma branden door het afwisselend in- en uitschakelen steeds weer een of twee kleurcomponenten op. Daardoor wisselt de
RGB-LED tussen zes verschillende kleuren heen en weer.
De snelheid van de kleurwissel wordt met behulp van een variabele z gecontroleerd, die bij de start van het programma op een bepaalde
waarde gezet wordt en dan voor elke kleurwissel geldt. Tijdens het programmaproces laat de variabele zich interactief door de gebruiker
instellen.
12. dag
Vandaag op de adventskalender
•1 20-MOhm-weerstand (rood-zwart-blauw)
RGB-kleuren mengen met PBM
Het experiment van de 12de dag mengt de kleuren van de RGB-LED via PBM-signalen.
Het programma
boetseerkleicontacten aangeraakt worden. Daardoor worden verschillende mengkleuren geproduceerd. Laat men het boetseerkleicontact
los, dan stopt de kleurenwissel van deze kleur. De actuele waarden van alle variabelen worden in realtime rechts bovenaan op het platform
getoond.
12rgb02
dimt twee van de drie kleurcomponenten van een RGB-LED cyclisch helderder en donkerder wanneer de
Zo werkt het programma
De variabelen helder_g en helder_b slaan de PBM-helderheidswaarden van de beide kleurcomponenten groen en blauw op, de variabelen
stap_g en stap_b de stapwaarden waarin de PWM-waarden worden veranderd. Daarbij wordt alleen tussen +5 en -5 gewisseld. Het rode
component van de RGB-LED brandt altijd met volle helderheid.
Het programma
12rgb02
dimt twee van de drie kleurcomponenten van een RGB-LED.
Page 26
Bij het klikken op het groene vlagje starten beide onafhankelijke programmablokken voor de groene en de blauwe kleurcomponent van de
RGB-LED. Een indien…-verzoek controleert of een boetseerkleicontact aangeraakt werd. Indien dit het geval is, wordt de helderheid van de
overeenkomstige kleurcomponenten met de stapbreedte veranderd. Wanneer de helderheid een van de grenswaarden 0 of 100 heeft bereikt,
wordt de stapwijze omgekeerd en de cyclus van de kleurwissel wacht op deze plaats 0,5 seconden.
13. dag
Vandaag op de adventskalender
•1 LED geel met ingebouwde voorweerstand
Looplicht
Looplichten zijn altijd populaire effecten en dat niet alleen bij reclames of bij feestjes. Het experiment van dag 13 laat zeven looplichten
oplichten wanneer het boetseerkleicontact aangeraakt wordt.
Looplicht met zeven LED's.
Onderdelen: 1 insteekprintplaat, 2 LED's rood met voorweerstand, 2 LED's geel
met voorweerstand, 2 LED's groen met voorweerstand, 1 LED blauw met
voorweerstand, 1 20-MOhm-weerstand (rood-zwart-blauw), 1 draadbrug, 2
boetseerkleicontacten
Het programma
Het programma
gebruikt, zijn opgeslagen. Lijsten moeten in Snap4Arduino niet door het programma gevuld worden, maar kunnen direct vooraf in de
programmacode met beginwaarden worden ingesteld.
13looplicht01
gebruikt een lijstvariabele, waarin de pinnummers van de digitale pinnen, die voor de LED's worden
Page 27
Een lijstvariabele wordt op het platform weergegeven.
Een lus loopt over de lengte van de lijst en schakelt na elkaar de LED's apart voor elke 0,1 seconde in. Deze lus wordt eindeloos herhaald.
Het programma
13looplicht01
gebruikt een lijstvariabele om een looplicht te besturen.
Zo werkt het programma
Na het klikken op het groene vlagje wordt eerst een lijstvariabele x met de pinnummers van de zeven voor de LED's gebruikte pinnen
aangemaakt. Daarna begint de hoofdlus van het programma dat opnieuw uit een enkel fout…-verzoek bestaat.
Indien het boetseerkleicontact wordt aangeraakt, wordt de lusteller i op 1 gezet. Vervolgens loop een lus zo vaak als de lijst elementen bevat.
De digitale pin die met de respectievelijke lijstelementen overeenkomt, wordt gedurende 0,1 seconde ingeschakeld. Daarna wordt de
lusteller met 1 verhoogd. Zo licht elke LED eenmaal kort op.
14. dag
Vandaag op de adventskalender
•1 10-kOhm-weerstand (bruin-zwart-oranje)
Deze weestand is slechts in de komende dagen nodig.
LED-dobbelsteen
De typische dobbelstenen die een tot zes ogen tonen, kent iedereen en heeft iedereen thuis. Wezenlijk cooler is een elektronisch gestuurde
dobbelsteen die met een druk op de toets de ogen laat oplichten – maar niet gewoon een tot zes LED's in serie, maar in de opstelling van een
dobbelsteen. Deze hebben ogen in de typisch vierkante opstelling, waarbij men zeven LED's nodig heeft. Voor de aansturing van de LED's
worden slechts vier in plaats van zeven digitale pinnen gebruikt, omdat een dobbelsteen voor de weergave van even getallen de ogen per
paar gebruikt.
Page 28
LED-dobbelsteen met zeven LED's met behulp van boetseerkleisensors schakelen.
Onderdelen: 1 insteekprintplaat, 2 LED's rood met voorweerstand, 2 LED's geel
met voorweerstand, 2 LED's groen met voorweerstand, 1 20-MOhm-weerstand
(rood-zwart-blauw), 2 draadbruggen, 2 boetseerkleicontacten
In de schakeling worden beide zijrails van de insteekprintplaat gebruikt voor aardleidingen. Daarom wordt het boetseerkleicontact ditmaal
iets anders aangesloten. Er worden slechts zes extern aangesloten LED's gebruikt, als middelste LED's voor de weergave van oneven
dobbelsteengetallen wordt de op de Nano ingebouwde LED aan pin 13 gebruikt.
Het programma
Het programma
14dobbelsteen01
simuleert een speldobbelsteen met zes kanten. Wanneer men de boetseerklei aanraakt, wordt er gedobbeld.
Page 29
Het programma
14dobbelsteen01
simuleert een speldobbelsteen met zes kanten.
Zo werkt het programma
Wanneer de gebruiker op het groene vlagje klikt, start er een eindeloze lus, die altijd weer controleert of het boetseerkleicontact wordt
aangeraakt. Indien dit het geval is worden als eerste de vier voor LED's gebruikte pinnen uitgeschakeld om het eerder getoonde
dobbelresultaat te wissen.
Vervolgens wordt in de variabele w een willekeurig getal tussen 1 en 6 opgeslagen. Voor elke mogelijke gebeurtenis is er een eigen indien…blok, dat de overeenkomstige LED's inschakelt.
Page 30
15. dag
Vandaag op de adventskalender
•15-kOhm-potentiometer
Looplicht met potentiemeter controleren
De potentiometer uit de adventskalender van vandaag is een instelbare weerstand, die waarden tussen 0 Ohm en 15 kOhm kan aannemen
wanneer men aan de knop draait. Met de potentiemeter kan er een spanningsmeter worden opgebouwd, die een spanning tussen 0 V en +5
V kan leveren. Deze analoge spanning moet in een digitale waarde worden omgerekend, die dan verder door het programma wordt
verwerkt.
Looplicht met zeven LED's en potentiometer.
Onderdelen: 1 insteekprintplaat, 2 LED's rood met voorweerstand, 2 LED's geel
met voorweerstand, 2 LED's groen met voorweerstand, 1 LED blauw met
voorweerstand, 1 15-kOhm-potentiemeter, 4 draadbruggen (verschillende
lengten)
Het programma
Het programma
15looplicht02
controleert een LED-lijst aan de hand van de instelling van potentiemeters.
Het programma
15lauflicht02
.
Page 31
Zo werkt het programma
De nummers van de voor de LED's gebruikte pinnen zijn opnieuw in een lijst opgeslagen. Een lus schakelt alle LED's na elkaar voor een
bepaalde tijd in en daarna opnieuw uit.
De analoge pin 5 wordt bij elke luscyclus opgevraagd en zijn waarde, die zich tussen 0 en 1023 kan bevinden, wordt door 1024 gedeeld om
een waarde tussen 0 en 1 te verkrijgen. Deze bepaalt hoe lang een enkele LED oplicht.
De analoge ingangen van de Arduino evalueren een analoge spanningswaarde en leveren een digitale waarde tussen 0 en 1023. Daarbij staat
0 voor 0 V en 1023 voor +5V spanning aan de respectievelijke pin.
16. dag
Vandaag op de adventskalender
•Batterijvak
Nano zonder PC gebruiken
De Nano kan ook zonder PC worden gebruikt en een opgeslagen programma afwerken. Daarvoor heeft hij een externe stroomverzorging
nodig. Dit kan een USB-GSM-lader, een powerbank of ook een batterij zijn. Vandaag is in de adventskalender een batterijvak inbegrepen
dat met vier AAA-batterijen een spanning van 6 V levert en met accu's 4,8 V, wat voor de stroomvoorziening van de Nano ook voldoende is.
De batterijen zijn niet inbegrepen.
Het batterijvak wordt aan de pinnen 5 V en GND aan de Nano gekoppeld.
Sluit het batterijvak nog niet aan omdat u de Nano zo lang van stroom voorziet tot het nieuwe programma overgezet is.
De Arduino-IDE
Snap4Arduino vereist voor de over de Nano geïnstalleerde software StandardFirmata een continue verbinding tussen PC en Nano. Om de
Nano zelfstandig zonder PC te kunnen gebruiken, heeft u de Arduino-IDE nodig. Hier schrijft u het programma in de programmeertaal C en
zet die dan direct op de Nano. Daarna kunt u de verbinding met de PC loskoppelen.
Arduino uitschakelen
De Arduino heeft geen schakelaar, u hoeft alleen aan de stekker te trekken en hij schakelt uit. Bij de
volgende keer inschakelen start de laatst opgeslagen Sketch automatisch - in ons geval tevens de
StandardFirmata. Hetzelfde gebeurt wanneer men op de reset-toets drukt.
Download de Windows Installer voor de huidige versie van de Arduino-IDE op www.arduino.cc/en/Main/Software of gebruik gewoon het
bestand
arduino-windows.exe
uit de downloads bij de adventskalender. Onder Windows 10 kunt u de Arduino-IDE ook uit de Windows Store
Page 32
downloaden en installeren.
Let er hierbij op dat in het dialoogveld Installation Options alle haakjes zijn geplaatst. Afhankelijk van de Windows-configuratie is een
bevestiging van het gebruikersaccountbeheer noodzakelijk.
Start de Arduino-IDE op na de installatie. Stop de Snap4Arduino voortijdig, indien hij nog zou lopen. Selecteer Tools/Port in het Arduinomenu. Hier wordt in de meeste gevallen slechts een seriële poort weergegeven. Plaats hier het haakje.
Installatie van de Arduino-IDE.
Selecteer vervolgens in het menu Tools/Board de Arduino Nano, wanneer het niet reeds automatisch herkend werd.
Page 33
Het geschikte board selecteren in de Arduino-IDE.
Kies in het menu Bestand/Voorbeelden/01.Basics./knipper en open hiermee een eenvoudig voorbeeldprogramma dat de op de Nano
ingebouwde LED laat knipperen.
Klik links bovenaan op het ronde symbool met de pijl om het programma op de aangesloten Nano op te laden - ook Flashen genaamd. Van
zodra het opladen is voltooid, knippert de LED op de Nano. Het programma moet dus niet extra worden opgestart.
Koppel de verbinding met de PC los. Daardoor schakelt de LED uit omdat de stroomvoorziening ontbreekt. Sluit vervolgens het batterijvak
met de vier batterijen of accu’s aan zoals op de afbeelding wordt weergegeven. De LED begint onmiddellijk opnieuw te knipperen omdat de
Nano automatisch het laatst geflashte programma opstart.
StandardFirmata flashen
Het knipperprogramma heeft het op de Nano voor geïnstalleerde StandardFirmata overschreven
omdat er altijd slechts een programma geïnstalleerd kan zijn. Voor u Snap4Arduino opnieuw kunt
gebruiken, moet u de StandardFirmata opnieuw op de Nano flashen met de Arduino-IDE. U vindt
die in het menu Bestand/Voorbeelden/Firmata/StandardFirmata. Denk eraan om het batterijvak
los te koppelen voor u de Nano opnieuw aan de PC kunt aansluiten.
Page 34
17. dag
Vandaag op de adventskalender
•1 LED blauw met ingebouwde voorweerstand
Blauw wissellicht
Het eerste programma met de Arduino-IDE laat twee LED's afwisselend knipperen. Het programma kan na het flashen ook met het
batterijvak zonder PC worden gebruikt
Looplicht met zeven LED's en potentiometer.
Onderdelen: 1 insteekprintplaat, 2 LED's blauw met voorweerstand, 1
draadbrug
Het programma
Omdat de bestandsnamen in de Arduino-IDE niet met een cijfer kunnen beginnen is het volgende programma met
anders genoemd.
Bij de start van het programma worden de beide gebruikte pinnummers in twee variabelen van het type integer opgeslagen. Alle
programma's in de Arduino-IDE bestaan uit tenminste twee functies:
loopt een keer bij de start en wordt meestal gebruikt voor de instelling van de pinnen
loop
wordt zolang herhaald tot de stroomverzorging wordt afgebroken of tot er op de reset-knop wordt gedrukt.
setup
worden de beide gebruikte pinnen als uitgangen ingesteld.
loop
schakelt bij elke cyclus de rode LED aan en de blauwe uit en wacht dan 100 milliseconden. Vervolgens wordt de rode LED
uit- en de blauwe ingeschakeld. Na een bijkomende wachttijd van 100 milliseconden start de
loop
-lus opnieuw.
18. dag
Vandaag op de adventskalender
•1 knop
Knipperlicht met knoppen controleren
Twee LED's knipperen in verschillende patronen die met twee knoppen kunnen worden omgeschakeld. De beide ingangen waaraan de knop
aangesloten ia, zijn via pull-down-weerstanden met de massa verbonden.
Knipperlicht met twee LED's en knoppen.
Onderdelen: 1 insteekprintplaat, 1 LED rood met voorweerstand, 1 LED
blauw met voorweerstand, 2 knoppen, 2 10-kOhm-weerstanden (rood-zwartoranje), 5 draadbruggen (verschillende lengtes)
Page 36
Het programma
Het programma
knoppen kunnen worden geselecteerd.
int rood = 6;
int blauw = 8;
int knop1 = 2;
int knop2 = 3;
int z = 200;
int m = 0;
void loop(){
if (digitalRead(knop1) == HIGH){
m = 1;
}
if (digitalRead(knop2) == HIGH){
m = 2;
}
if (m == 1){
digitalWrite(rood, HIGH);
digitalWrite(blauw, LOW);
delay(z);
digitalWrite(rood, LOW);
digitalWrite(blauw, HIGH);
delay(z);
}
if (m == 2){
digitalWrite(rood, HIGH);
digitalWrite(blauw, HIGH);
delay(z);
digitalWrite(rood, LOW);
digitalWrite(blauw, LOW);
delay(z);
}
]
_18knipperlicht02
biedt twee verschillende knipperpatronen - ze knipperen afwisselend of gelijktijdig - die met de beide
Zo werkt het programma
int rood = 6;
int blauw = 8;
int knop1 = 2;
int knop2 = 3;
Bij het begin worden de pinnummers voor de LED's en de knoppen gedefinieerd.
int z = 200;
int m = 0;
De variabele z bepaalt de oplichttijd van de LED's bij het knipperen, de variabele m geeft de knippermodus aan, die later via de knop wordt
omgeschakeld. In de modus 0 knippert bij de start geen enkele LED.
In de knippermodus 1 is, wordt de rode LED in- en de blauwe uitgeschakeld. Na een wachttijd wordt de rode LED uit- en de blauwe
ingeschakeld. De LED's knipperen afwisselend.
Indien de knippermodus 2 is, worden beide LED's ingeschakeld. Na een wachttijd worden ze beide uitgeschakeld. De LED's knipperen
gelijktijdig.
19. dag
Vandaag op de adventskalender
•1 RGB-LED met ingebouwde voorweerstanden
RGB-kleurenspel
De RGB-LED's gebruiken PBM-signalen voor de kleureffecten. Daarvoor moeten PBM-pinnen van de Nano worden gebruikt omdat de
RGB-LED's op de insteekprint enigszins ongewoon zijn opgebouwd.
Page 38
Twee RGB-LED's die via knoppen worden gecontroleerd.
Met het programma
kleurwissel verschijnen verschillende kleuren op beide LED's. Met de knoppen kan de kleurenwissel van de beide RGB-LED's onafhankelijk
van elkaar worden gestopt en opnieuw worden gestart.
int r1 = 11;
int g1 = 10;
int b1 = 9;
int r2 = 6;
int g2 = 5;
int b2 = 3;
int knop1 = 4;
int knop2 = 2;
int z = 20;
int m1 = 0;
int m2 = 0;
int r1h = 0;
int g1h = 100;
int b1h = 200;
int r2h = 0;
int g2h = 100;
int b2h = 50;
int r1s = 5;
int g1s = 5;
int b1s = 5;
int r2s = 10;
int g2s = 10;
int b2s = 10;
Bij de start van het programma worden de pinnummers in variabelen opgeslagen. r1, g1, b1 zijn de pinnen van de eerste RGB-LED, r2, g2, b2
die van de tweede.
z
geeft de tijd en daardoor de snelheid van de kleurwissel aan, m1 en m2 schakelen het kleurwisselpatroon van d eerste en de tweede RGB-
knop1
LED uit. Indien deze variabelen op 1 staan, dan wisselen de kleuren. Bij 0 blijft de huidige kleur weergegeven.
r1h, g1h, b1h
geven de PBM-helderheidswaarde van de drie kleuren van de eerste RGB-LED aan,
LED's starten met verschillende kleuren. U kunt ook totaal andere kleuren uitproberen.
r1s, g1s, b1s
geven de staplengten van de cyclische kleurwissel van de eerste RGB-LED aan,
veranderen met een verschillende snelheid van kleur.
setup
De
if (digitalRead(knop1) == HIGH) {
m1 = 1-m1;
-functie stelt twee uitgangen voor de LED's en twee ingangen voor de knoppen in.
en
knop2
zijn de pinnen van beide knoppen.
r2h, g2h, b2h
r2s, g2s, b2s
die van de tweede. Beide
die van de tweede. Beide LED's
Page 40
}
loop
De
-functie vraagt eerst de beide knoppen op. Wanneer de eerste knop wordt ingedrukt, wordt de modus van de eerste RGB-LED m1 van
0 naar 1 gezet en bij het volgende indrukken van de knop terug van 1 naar 0. De tweede knop schakelt op basis van dezelfde formule de
variabele m2 om.
if (m1 == 1) {
analogWrite(r1, r1h);
r1h += r1s;
Indien de modus van de eerste RGB-LED op 1 staat, verandert de kleur. Daarbij brandt de rode kleur r1 vervolgens in de actueel ingestelde
helderheid
if (r1h <= 0 || r1h >= 255) {
r1s = -r1s;
}
r1h
. Vervolgens wordt de helderheid van de staplengte
r1s
gewijzigd.
Indien de helderheid door deze wijziging de grenswaarde 0 of 255 bereikt, wordt de staplengte omgekeerd. Het teken || staat in de
Arduino-programmeertaal voor “of“. Op dezelfde manier worden binnen dit if-verzoek ook de groene en de blauwe kleur van de RGB-LED
telkens met een stap veranderd. Een tweede if-verzoek controleert of de variabele m2 op 1 staat en laat in dat geval volgens hetzelfde schema
de tweede RGB-LED van kleur wisselen.
delay(z);
Volledig aan het einde volgt een korte pauze tot de hoofdlus een nieuwe cyclus opstart. Dit is de enige tijdvertraging in het volledige
programma en bepaalt de snelheid van de kleurwissel.
20. dag
Vandaag op de adventskalender
•1 LED wit met ingebouwde voorweerstand
Analoge niveauweergave met LED's
Op een niveauweergave kunnen analoge waarden in een oogopslag worden afgelezen. Dergelijke weergaven uit meerdere LED's worden
bijvoorbeeld bij volume- of temperatuurinstellingen gebruikt. Het experiment van de 20ste dag toont de op de potentiemeter ingestelde
waarde via een serie LED's.
Onderdelen: 1 insteekprintplaat, 1 LED rood met voorweerstand, 2 LED's geel met voorweerstand,
2 LED's groen met voorweerstand, 1 LED blauw met voorweerstand, 1 LED wit met
voorweerstand, 1 15-kOhm-potentiemeter, 4 draadbruggen (verschillende lengten)
Niveauweergave met zeven LED's en potentiometer.
Het programma
Het programma
lus op zeven LED's weer.
_20niveau01
leest de ingestelde waarde van de potentiemeter aan de analoge ingang A5 uit en geeft ze met behulp van een
Page 41
int sensor = A5;
int n = 7;
int leds[] = {2, 3, 4, 6, 8, 10, 12};
void setup() {
for (int i = 0; i < n; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
int s = analogRead(sensor);
int p = map(s, 0, 1023, 0, n);
for (int i = 0; i < n; i++) {
if (i < p) {
digitalWrite(leds[i], HIGH);
}
else {
digitalWrite(leds[i], LOW);
}
}
}
Zo werkt het programma
De variabele
int leds[] = {2, 3, 4, 6, 8, 10, 12};
De pinnummers van de LED's worden zoals bij sommige andere Snap4Arduino-programma's in een lijst
zich via een index in de lijst controleren.
void setup() {
for (int i = 0; i < n; i++) {
pinMode(leds[i], OUTPUT);
}
}
setup
De
andere programmeertalen. Elke
laten lopen en een aanwijzing die bij elke luscyclus eenmaal wordt afgewerkt. Hij moet dus niet zoals in andere programmeertalenslecht met
een teller worden verhoogd.
int s = analogRead(sensor);
In de hoofdlusgetal tussen 0 en 1023 zijn.
int p = map(s, 0, 1023, 0, n);
De functie
sensor
bevat het pinnummer van de analoge ingang A5, de variabele n geeft het aantal LED's weer.
led[0]
betekent de eerste LED aan pin 2,
led[6]
betekent de laatste LED aan pin 12.
-functie definieert de LED-Pinnen via een lus als uitgangen. Daarvoor gebruiken we een
for
-lus bestaat uit drie parameters: een startaanwijzing, een voorwaarde die vervuld moet zijn om de lus te
loop
wordt eerst de analoge waarde van de sensor uitgelezen en in de variabele s opgeslagen. Deze waarde kan een geheel
map()
zet deze waarde om in een waarde tussen 0 en n, het aantal LED's. De functie gebruikt vijf parameters. In dit geval zijn dit:
leds[]
opgeslagen. Elke LED laat
for
-lus die C wezenlijk flexibeler is dan in
•s – van de om te rekenen waarde
•0 – de ondergrens van het getallenbereik van de ingegeven waarde
1023
•
– de bovengrens van het getallenbereik van de ingegeven waarde
•0 – de ondergrens van het getallenbereik van de uitgegeven waarde
•n – de bovengrens van het getallenbereik van de uitgegeven waarde
Indien
s= 0
is, wordt er
p= 0
teruggegeven. Indien
s= 1023
is, wordt er
p= 6
teruggegeven. Bij alle waarden daartussen geeft de functie de
overeenkomstige tussenwaarde terug. Met bespaart zich daarmee de manuele omrekening tussen verschillende schalen met getallen.
for (int i = 0; i < n; i++) {
Page 42
Dan start er opnieuw een lus die via alle LED's van beneden naar boven omhoog telt. Bij elke LED wordt gecontroleerd of het nummer van
de LED i kleiner is dan de in p opgeslagen niveauwaarde.
if (i < p) {
digitalWrite(leds[i], HIGH);
}
Indien dit het geval is, wordt de overeenkomstige LED ingeschakeld.
else {
digitalWrite(leds[i], LOW);
}
Indien de weer te geven waarde niet groter is dan het nummer van de LED in de lus, dan wordt de LED uitgeschakeld. De voorwaarde
else
in een verzoek is altijd van toepassing wanneer de voorwaarde if niet waar is.
21. dag
Vandaag op de adventskalender
•1 krokodilklemkabel
Met de krokodilklemkabel kunnen ook andere geleidbare voorwerpen zoals boetseerklei of bijvoorbeeld een lepel of een munt als
sensorcontact worden gebruikt.
LED-dobbelsteen met realistisch dobbelsteeneffect
Een echte dobbelsteen toont niet onmiddellijk het definitieve aantal ogen, maar rolt eerste nog gedurende korte tijd verder waarbij men de
dobbelresultaten ziet die dan echter nog niet het eindresultaat weergeven. Het programma van de 21ste dag simuleert het rollen waarbij de
dobbelsteen eerst enkele andere dobbelresultaten met steeds langer wordende pauzes daartussen weergeeft voor het eindresultaat
verschijnt.
LED-dobbelsteen met zeven LED's met behulp van boetseerkleisensors schakelen. De schakelopbouw komt overeen met dat van de 14de dag.
Onderdelen: 1 insteekprintplaat, 2 LED's rood met voorweerstand, 2 LED's
geel met voorweerstand, 2 LED's groen met voorweerstand, 1 20-MOhmweerstand (rood-zwart-blauw), 2 draadbruggen, 2 boetseerkleicontacten
De krokodilklemkabel is direct vastgeklemd aan de aansluiting van de 20-MOhm-weerstand die met de A2-pin verbonden is.
StandardFirmata flashen
Page 43
Nadat u het programma van de Arduino-IDE op de Nano heeft geflasht, moet u
eerst de StandardFirmata opnieuw flashen voor u Snap4Arduino opnieuw kunt
gebruiken. Hou daarbij rekening met de opmerkingen van de 16de dag.
Het programma
Het programma
boetseerkleicontact niet slechts eenmaal, maar viermaal na elkaar.
21dobbelsteen02
gebruikt dezelfde dobbelroutine als het programma van de 14de dag, maar dobbelt na het aanraken van het
Page 44
Het programma
21dobbelsteen02
dobbelt met een realistisch dobbelsteeneffect.
Zo werkt het programma
De hoofdlus van het programma loopt viermaal na elkaar waarbij de wachttijden aan het einde, voor het resultaat van de volgende cyclus van
de lus wordt verwijderd, telkens 0,2 seconde langer worden. Daardoor lijkt de dobbelsteen langzaam te rollen.
Page 45
22. dag
Vandaag op de adventskalender
•1 LED oranje met ingebouwde voorweerstand
De spelklassieker Pong
Vandaag komt er als afwisseling opnieuw een spel dat op het beeldscherm van de PC loopt. Twee toetsen en drie LED's bouwen een
gamepad voor de controle van het spel.
De gamepad voor de controle van het spel
Onderdelen: 1 insteekprintplaat, 1 LED oranje met voorweerstand, 2 LED's
groen met voorweerstand, 2 knoppen, 2 10-kOhm-weerstanden (rood-zwartoranje), 5 draadbruggen (verschillende lengtes)
Het programma
Met een beetje geluk probeert men met het batje de bal steeds opnieuw terug te slaan zodat hij niet tegen de rode kant aan de onderste rand
van het speelveld vliegt. De speler beschikt over twee knoppen om het batje in beide richtingen te bewegen.
Page 46
Het speelveld met de bal en het batje
Zo werkt het programma
Het programma
getekend. Elk voorwerp in Snap4Arduino gebruikt zijn eigen blokken die in het script-bereik verschijnen wanneer men rechts onderaan op
de voorwerppallet op het desbetreffende voorwerp klikt.
De bal wordt door de drie scriptblokken gecontroleerd, die alle tegelijk lopen en gestart worden wanneer de gebruiker op het groene vlagje
klikt.
Het scriptblok voor de standaardbeweging van de bal.
Het eerste blok creëert de basisvoorwaarden voor het spel wanneer er op het groene vlagje wordt geklikt. Eerst wordt de bal naar zijn
uitgangspositie bij x:0 y:0 gebracht. De bal moet in een hoek van 10 graden schuin naar boven vliegen. Daarvoor wordt de richting op 10
gezet.
22pong
bestaat uit twee voorwerpen, de bal en het batje, die met het geïntegreerde tekenprogramma kunnen worden
Page 47
De bal verandert van richting wanneer hij het batje raakt.
Vervolgens wordt de beweging van de bal voortdurend herhaald. Hij stuitert van de rand indien hij deze aanraakt. In het andere geval vliegt
hij vier stappen in de ingestelde richting. De beweging wordt in theorie eindeloos herhaald. Omdat er bij het klikken op het groene vlagje
ook andere scriptblokken voor de bal worden gestart, kunnen er ook andere bewegingen ontstaan.
Wanneer de bal het batje aanraakt wordt de bewegingsrichting in het negatieve omgekeerd. Om de beweging een iets minder voorspelbare
vorm te geven, wordt de bal eerst zes stappen bewogen waardoor daarna het batje in ieder geval niet meer wordt aangeraakt. Vervolgens
wordt de vliegrichting ten opzichte van de huidige richting met een willekeurige waarde tussen –20 en 20 graden, gewijzigd.
Dit scriptblok wordt uitgevoerd wanneer de bal de onderste rode rand van het speelveld aanraakt.
Indien de bal niet het batje maar de rode balk aan de onderkant van het speelveld aanraakt, is het spel gedaan. Daarvoor knippert de rode
LED nog om de fout van de speler weer te geven.
Scriptblokken voor het batje
In Snap4Arduino gebruikt elk voorwerp een eigen blok. Klik in de voorwerpenpallet onderaan rechts op het batje om de blokken ervan te
bekijken.
Arduino met batje verbinden
In Snap4Arduino kan er slechts een voorwerp met de Arduino verbonden zijn. In dit
programma communiceert het batje met de nano. Klik daarom op de weergave van het batje
op de blokpallet Arduino op Met Arduino verbinden.
Page 48
Knop evalueren en batje bewegen.
Bij het druk op de knoppen moet het batje zich naar links of naar rechts bewegen.
Door op het groene vlagje te klikken wordt de variabele x op 0 gezet om het batje in de startpositie te brengen. Vervolgens wacht een
doorlopende lus tot er een knop wordt ingedrukt. In dit geval wordt de variabele x, die de x-positie van het batje aangeeft met tien eenheden
negatief of positief veranderd. Bovendien wordt bij een ingedrukte knop een van de groene LEDs ingeschakeld en bij een losgelaten knop
uitgeschakeld. Na het verzoek wordt het batje in elke luscyclus op de x-positie geplaatst, die de variabele x aangeeft.
Omdat het slechts mogelijk is dat er een voorwerp met de Arduino verbonden is, kan de bal bij het aanraken van de rode lijn niet zelf de
rode LED laten knipperen. De bal zendt daarom met de blok Zend... aan alle en wacht een bericht dat het badje ontvangt en vervolgens de
LED's laat knipperen.
Dit scriptblok laat aan het einde van het spel de rode knipperen.
Indien het batje het bericht knipper ontvangt, laat een lus de rode LED aan pin 8 vijfmaal kort oplichten.
23. dag
Vandaag op de adventskalender
•1 NTC (temperatuur-afhankelijke weerstand)
Page 49
Warmtemelder met NTC en vier LED's
Brandalarm voor adventskaarsen
Het experiment van de 23st dag is een door een batterij aangedreven warmtemelder. Indien de warmtegevoelige NTC in de buurt van een
kaars komt, knippert de rode LED. Lagere temperaturen worden in verschillende kleuren weergegeven.
Onderdelen: 1 insteekprintplaat, 1 LED rood met
voorweerstand, 1 LED oranje met voorweerstand,
1 LED geel met voorweerstand, 1 LED groen met
voorweerstand, 1 NTC, 1 10kOhm-weerstand
(rood-zwart-oranje), 1 batterijvak, 4
draadbruggen (verschillende lengten)
Het programma
Het programma
aangedreven gebruikt kan worden.
int sensor = A7;
int rood = 12;
int oranje = 10;
int geel = 8;
int groen = 6;
void loop() {
int s = analogRead(sensor);
if (s < 500) {
digitalWrite(groen, HIGH);
}
else {
digitalWrite(groen, LOW);
}
if (s < 400) {
digitalWrite(geel, HIGH);
}
else {
digitalWrite(geel, LOW);
_23kaars01
is in Arduino-IDE geschreven waardoor de warmtemelder onafhankelijk van de PC en door batterijen
Page 50
}
if (s < 300) {
digitalWrite(oranje, HIGH);
}
else {
digitalWrite(oranje, LOW);
}
if (s < 200) {
for (int i = 0; i < 6; i++) {
digitalWrite(rood, HIGH);
delay(50);
digitalWrite(rood, LOW);
delay(50);
}
}
else {
digitalWrite(rood, LOW);
}
}
Zo werkt het programma
De NTC levert een analoge waarde die afhangt van de temperatuur. Daarvoor wordt een analoge waarde in de variabele
Voor de vier LED's worden vier digitale uitgangen gedefinieerd.
sensor
opgeslagen.
int s = analogRead(sensor);
loop
De
-lus-leest tijdens elke cyclus eerst de waarde uit van de analoge ingang die aan de NTC is aangesloten. Afhankelijk van de
temperatuur zullen er verschillende LED's oplichten.
if (s < 500) {
digitalWrite(groen, HIGH);
}
else {
digitalWrite(groen, LOW);
}
Indien de door de NTC geleverde analoge waarde kleiner is dan 500, dan brandt de groene LED. Volgens hetzelfde principe branden de gele
en de oranje gekleurde LED bij waarden kleiner dan 400 of kleiner dan 300. U kunt deze grenswaarden uiteraard naar behoefte aanpassen.
if (s < 200) {
for (int i = 0; i < 6; i++) {
digitalWrite(rood, HIGH);
delay(50);
digitalWrite(rood, LOW);
delay(50);
}
}
else {
digitalWrite(rood, LOW);
}
Indien de door de NTC geleverde waarde kleiner is dan 200, dan wordt de rode LED niet gewoon ingeschakeld maar er wordt een korte
knipperfrequentie geactiveerd om voor de warmte te waarschuwen.
24. dag
Vandaag op de adventskalender
• Knipper-LED
De kerstverrassing van vandaag is een LED in de adventskalender, die zelfstandig knippert zonder dat er een programma nodig is.
Page 51
Tien LED's voor de kerstster
Knipperende kerstster
Voor Kerstmis is er een knipperende kerstster die in de kerstboom kan worden gehangen. Met de beide knoppen kunnen er twee
verschillende knipperpatronen worden ingeschakeld. De knipper-LED brandt eveneens, onafhankelijk van het geselecteerde
knipperprogramma.
• Verwijder de beschermfolie van de achterkant van de insteekprintplaat Nu kunt u het batterijvak erop kleven.
• Buig twee lussen uit de schakeldraad en steek ze door de ogen van twee toegankelijke hoeken van de insteekprintplaat en draai de
uiteinden vast. Aan deze lus kunt u de krokodilklemkabel vastklemmen en daarmee later de schakeling aan de kerstboom hangen.
• Bouw de schakeling op zoals afgebeeld
• Knip de kerstster uit de achterkant van de adventskalenders en steek ze in de langwerpige openingen op de beide LED-rijen.
Onderdelen: 1 insteekprintplaat, 1 knipper-LED rood met voorweerstand, 2 LED's rood met
voorweerstand, 1 LED oranje met voorweerstand, 2 LED's geel met voorweerstand, 2 LED's groen
met voorweerstand, 2 LED's blauw met voorweerstand, 1 LED wit met voorweerstand, 2 knoppen,
2 10-kOhm-weerstanden (rood-zwart-oranje), 1 batterijvak, 10 draadbruggen (verschillende
lengten)
De LED's van de onderste rij met uitzondering van pin 13 zijn met pinnen van de bovenste pinlijst van de Nano verbonden. De
draadbruggen verbindt u echter met analoge ingangen die echter niet door het programma worden ondersteund.
De knipper-LED onderaan rechts bevat een voorweerstand en kan daardoor direct aan d e5 V worden aangesloten.
Het programma
Het programma
int knop1 = 2;
int knop2 = 3;
int n = 10;
int leds[] = {4, 6, 8, 10, 12, 13, 11, 9, 7, 5};
int z = 50;
int m = 0;
int i;
void setup() {
for (int i = 0; i < n; i++) {
pinMode(leds[i], OUTPUT);
}
pinMode(knop1, INPUT);
_24kerstster
laat de LED's in twee verschillende patronen knipperen.
Page 52
pinMode(knop2, INPUT);
}
void loop() {
if (digitalRead(knop1) == HIGH) {
m = 1;
}
if (digitalRead(knop2) == HIGH) {
m = 2;
}
if (m == 1) {
for (i = 0; i < n; i++) {
digitalWrite(leds[i], HIGH);
delay(z);
digitalWrite(leds[i], LOW);
delay(z);
}
}
if (m == 2) {
i = random(n);
digitalWrite(leds[i], HIGH);
delay(z);
i = random(n);
digitalWrite(leds[i], LOW);
delay(z);
}
}
Zo werkt het programma
De beide variabelen
knop1
de pinnummers inde lijst
knippermodus en i wordt alleen als integer gedefinieerd om ze later als lussenteller te gebruiken.
setup
De
if (digitalRead(knop1) == HIGH) {
m = 1;
}
if (digitalRead(knop2) == HIGH) {
m = 2;
}
De
if (m == 1) {
for (i = 0; i < n; i++) {
digitalWrite(leds[i], HIGH);
delay(z);
digitalWrite(leds[i], LOW);
delay(z);
}
}
-functie stelt de uitgangen voor de LED's en de ingangen van de knoppen in.
loop
-functie leedt eerst de beide knoppen uit en stelt de knippermodus in functie van de ingedrukte knop in.
In knippermodus 1 lichten de LED's kort na elkaar apart op. Door de rangschikking van de LED's en de volgorde van de pinnummers in de
lijst ontstaat een cirkelvormig looplichteffect.
knop2
en
leds[]
bevatten de beide pinnummers van de beide knoppen. De variabele n geeft het aantal LED's aan waarvan
zijn opgeslagen. De variabele z geeft de vertragingstijd bij het knipperen aan, de variabele m de
if (m == 2) {
i = random(n);
digitalWrite(leds[i], HIGH);
delay(z);
i = random(n);
digitalWrite(leds[i], LOW);
delay(z);
}
Page 53
In knippermodus 2 wordt een willekeurig getal tussen 0 en 9 gecreëerd en de bijhorende LED wordt ingeschakeld. Vervolgens wordt in elke
cyclus een willekeurig gekozen LED uitgeschakeld. Aangezien de schakeltoestanden van de LED's niet opgeslagen en gecontroleerd zijn, is
het mogelijk dat er na meerdere cycli meer of minder LED's gelijktijdig branden.
Vrolijk Kerstfeest!
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.