Conrad 4019631150035 Operation Manual [nl]

Page 1
Adventskalender voor Arduino 2017
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 Arduino­ontwikkelaars 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
Bruin 1 1 101 = 10 ±1 %
Rood 2 2 102 = 100 ±2 %
Oranje 3 3 103 = 1.000
Geel 4 4 104 = 10.000
Groen 5 5 105 = 100.000 ±0,5 %
Blauw 6 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 %
Grijs 8 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.
Links: Testverhouding 50% - rechts: testverhouding 20%
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 PBM­waarde 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 10kOhm­weerstand (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 Low­niveau 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.
Page 25
Kleuren mengen op een RGB-LED.
Onderdelen: 1 insteekprintplaat, 1 RGB-LED met voorweerstanden, 2 20­MOhm-weerstanden (rood-zwart-blauw), 1 draadbrug, 3 boetseerkleicontacten
Het programma
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.
Onderdelen: 1 insteekprintplaat, 1 batterijvak, 1 draadbrug
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 Arduino­menu. 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.
int rood = 6; int blauw = 8;
void setup() { pinMode(rood, OUTPUT); pinMode(blauw, OUTPUT); }
void loop() { digitalWrite(rood, HIGH); digitalWrite(blauw, LOW); delay(100); digitalWrite(rood, LOW); digitalWrite(blauw, HIGH); delay(100); }
_17blinklicht01
iets
Zo werkt het programma
int rood = 6; int blauw = 8;
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:
Page 35
void setup() { ... }
De functie
void loop() { ... }
De functie
void setup() { pinMode(rood, OUTPUT); pinMode(blauw, OUTPUT); }
In de functie
void loop() { digitalWrite(rood, HIGH); digitalWrite(blauw, LOW); delay(100); digitalWrite(rood, LOW); digitalWrite(blauw, HIGH); delay(100); }
De functie
setup
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-zwart­oranje), 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 setup(){ pinMode(rood, OUTPUT); pinMode(blauw, OUTPUT); pinMode(knop1, INPUT); pinMode(knop2, INPUT); }
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.
void setup(){ pinMode(rood, OUTPUT); pinMode(blauw, OUTPUT);
Page 37
pinMode(knop1, INPUT); pinMode(knop2, INPUT); }
setup
De
if (digitalRead(knop1) == HIGH){ m = 1; } if (digitalRead(knop2) == HIGH){ m = 2; }
-functie stelt twee ingangen voor de LED's en twee ingangen voor de knoppen in.
Wanneer knop 1 wordt ingedrukt, wordt de knippermodus op 1 gezet, door op knop 2 te drukken wordt de knippermodus op 2 gezet.
if (m == 1){ digitalWrite(rood, HIGH); digitalWrite(blauw, LOW); delay(z); digitalWrite(rood, LOW); digitalWrite(blauw, HIGH); delay(z); }
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.
if (m == 2){ digitalWrite(rood, HIGH); digitalWrite(blauw, HIGH); delay(z); digitalWrite(rood, LOW); digitalWrite(blauw, LOW); delay(z); }
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.
Onderdelen: 1 insteekprintplaat, 2 RGB-LED's, 2 knoppen, 2 10-kOhm­weerstanden (rood-zwart-oranje), 5 draadbruggen (verschillende lengtes)
Het programma
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;
void setup() { pinMode(r1, OUTPUT); pinMode(g1, OUTPUT); pinMode(b1, OUTPUT); pinMode(r2, OUTPUT); pinMode(g2, OUTPUT); pinMode(b2, OUTPUT); pinMode(knop1, INPUT);
_19rgb03
veranderen beide RGB-LED's cyclisch hun kleuren. Door verschillende startkleuren en staplengtes bij de
Page 39
pinMode(knop2, INPUT); }
void loop() { if (digitalRead(knop1) == HIGH) { m1 = 1-m1; } if (digitalRead(knop2) == HIGH) { m2 = 1-m2; } if (m1 == 1) { analogWrite(r1, r1h); r1h += r1s; if (r1h <= 0 || r1h >= 255) { r1s = -r1s; } analogWrite(g1, g1h); g1h += g1s; if (g1h <= 0 || g1h >= 255) { g1s = -g1s; } analogWrite(b1, b1h); b1h += b1s; if (b1h <= 0 || b1h >= 255) { b1s = -b1s; } } if (m2 == 1) { analogWrite(r2, r2h); r2h += r2s; if (r2h <= 0 || r2h >= 255) { r2s = -r2s; } analogWrite(g2, g2h); g2h += g2s; if (g2h <= 0 || g2h >= 255) { g2s = -g2s; } analogWrite(b2, b2h); b2h += b2s; if (b2h <= 0 || b2h >= 255) { b2s = -b2s; } } delay(z); }
Zo werkt het programma
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 hoofdlus­getal 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-MOhm­weerstand (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-zwart­oranje), 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 setup() { pinMode(rood, OUTPUT); pinMode(oranje, OUTPUT); pinMode(geel, OUTPUT); pinMode(groen, OUTPUT); }
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...