Conrad 10213 Operation Manual [nl]

Arduino adventskalender 2016
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.
Arduino UNO
Het Arduino-platform biedt ondertussen een grote veelvoud aan plaatjes voor verschillende gebruiksdoeleinden. De Arduino Uno is het beste geschikt voor beginners en is ook één van de best presterende Arduino-plaatjes.
Deze adventskalender bevat elke dag een hardware-experiment voor de Arduino Uno of compatibele printplaten van andere fabrikanten. Enkele van de compatibele printplaten bieden ten opzichte van de originele Arduino Uno het voordeel dat ze een micro-USB-aansluiting gebruiken en er dus gebruik gemaakt kan worden van gewone smartphone-kabels. De originele Arduino Uno heeft daarentegen een USB-aansluiting type B.
De experimenten in deze kalender worden met Snap! geprogrammeerd. Deze programmeertaal is gebaseerd op Scratch, überhaupt één van de makkelijkst te leren programmeertalen.
Downloads van de adventskalender
De te gebruiken programma's vindt u op http://www.buch.cd om te downloaden. Voer voor dit product de code 10213-1 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.
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 worden bedraad.
LEDs
Op de digitale pennen kunnen voor lichtsignalen en lichteffecten LEDs (LED = Light Emitting Diode, op z'n Nederlands lichtdiode) worden aangesloten. Daarbij moet tussen de gebruikte pen en de anode van de LED een 220 ohm voorweerstand (rood-rood-bruin) worden ingebouwd om de doorstroom te begrenzen en daarmee het doorbranden van de LED te verhinderen. Bovendien beschermt de voorweerstand ook de digitale uitgang van de Arduino, omdat de LED in de doorstroomrichting bijna geen weerstand biedt en de pen daarom bij verbinding met de massa snel overbelast kan raken. Men verbindt de kathode van de LED met de aardleiding van de Arduino.
In welke richting de LED aansluiten?
De beide aansluitkabels van een LED zijn van verschillende lengte. De langere is de pluspool, de anode, de kortere is de kathode. Eenvoudig te onthouden: Het plusteken heeft een streep meer dan het minteken en maakt de kabel daarmee optisch iets langer. Bovendien zijn de meeste LEDs aan de minzijde afgeplat, zoals een minteken. Gemakkelijk te onthouden: Kathode = kort = kant.
RGB-LEDs
Een normale LED brandt altijd in één kleur. De in de adventskalender opgenomen RGB-LEDs kunnen naar keuze in meerdere kleuren branden. Hier zijn in principe drie LEDs met verschillende kleuren ingebouwd in een transparante behuizing. Elk van deze drie LEDs heeft een eigen anode, via welke zij met een digitale uitgang worden verbonden. De kathode, die met de aardleiding wordt verbonden, is slechts één maal voorhanden. Derhalve heeft een RGB-LED vier aansluitdraden.
De aansluitdraden van de RGB-LEDs zijn van verschillende lengte, zodat ze duidelijk te herkennen zijn. Anders dan bij normale LEDs is de kathode hier de langste kabel.
RGB-LEDs functioneren zoals drie enkele LEDs en gebruiken daarom ook drie voorweerstanden.
Weerstanden en hun kleurcodes
Weerstanden worden gebruikt voor de stroombegrenzing op gevoelige componenten, evenals op voorweerstanden voor LEDs. De maateenheid voor weerstanden is ohm. 1.000 ohm komt overeen met een kilo-ohm, afgekort kOhm. 1.000 k-ohm komt overeen met een mega-ohm, afgekort
mOhm. Vaak wordt voor de eenheid ohm ook het omega-teken gebruikt.
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 van zulke gekleurde ringen. De eerste twee gekleurde ringen betreffen de cijfers, de derde een 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 LEDs speelt de inbouwrichting daarentegen een belangrijke rol.
Verbindingskabel en draadbrug
De gekleurde verbindingskabels hebben aan beide zijden een dunne draadconnector waarmee ze in de buskader van de Arduino en op de insteekprintplaat gestoken kunnen worden.
Verder bevat de adventskalender een draadbrug. Daarmee maakt u korte verbindingsbruggen waarmee contactrijen verbonden worden aan de insteekprintplaat. Snijd de draad met een kleine kantensnijder per experiment af op de juiste lengte. Om de draad beter in de insteekprintplaat te kunnen steken is het aan te bevelen deze licht scheef af te snijden, zodat er een soort wig ontstaat. Verwijder aan beide zijden op een lengte van ongeveer een halve centimeter de isolatie.
Voorzorgsmaatregelen
Nooit enige Arduino-pennen met elkaar verbinden en afwachten wat er gebeurt. Niet alle Arduino-pennen laten zich vrij programmeren. Sommige zijn speciaal geconfigureerd voor de stroomvoorziening en andere doeleinden. Enkele Arduino-pennen zijn direct met aansluitingen van de microcontroller verbonden, een kortsluiting kan de Arduino volledig verwoesten
- op z'n minst in theorie. De Arduino-plaatjes zijn verbazingwekkend stabiel tegen circuitfouten. Indien men twee pennen met elkaar verbindt via een LED, dan moet er altijd een veiligheidsweerstand ertussen worden geplaatst. Gebruik voor logicasignalen altijd de 3,3V pen. De 5V pen dient voor de stroomvoorziening van externe hardware. Hier kan (bijna) zoveel stroom worden afgenomen als de aangesloten voeding levert. Deze pen mag echter niet worden verbonden met een digitale ingang.
1ste dag
Vandaag in de adventskalender
• Insteekprintplaat (SYB 46)
• LED rood
• 220 ohm weerstand (rood-rood-bruin)
• 2xverbindingskabel
Arduino voorbereiden
Om de Arduino in bedrijf te nemen, heeft men nodig:
• PC met Windows
• USB-Kabel (type B)
• Arduino-IDE
De verbinding tussen PC en Arduino gebeurt via een USB-kabel met de bijna vierkante stekker type B aan één kant. U hoeft zo'n kabel niet extra te kopen, bijna alle moderne printers gebruiken dit stekkertype en terwijl u met de Arduino experimenteert zal u nauwelijks gelijktijdig printen.
Arduino nog niet aansluiten
Sluit de Arduino niet gelijk aan op de PC, maar installeer eerst de Arduino-software. Anders kan dit later problemen geven met de driver­installatie.
Software installatie in het kort
Voor de programmering van de Arduino levert de fabrikant een zeer overzichtelijke ontwikkelingsomgeving waarin men de programma's, die bij Arduino als Sketch worden aangeduid, in een op C gelijkende programmeertaal kan schrijven. Deze Arduino-IDE brengt ook de verbinding tussen PC en Arduino tot stand.
Voor iedereen die zijn Arduino nog niet bedrijfsklaar heeft, hier de systeeminstallatie in zeven stappen:
1 Download de Windows Installer voor de actuele versie van de Arduino-IDE van www.arduino.cc/en/Main/Software of gebruik gewoon het bestand
arduino-1.6.8-windows.exe uit de Downloads bij de adventskalender.
2 Installeer de Arduino-IDE alvorens de Arduino voor het eerst op de PC aan te sluiten. Daarmee worden de nodige drivers automatisch
geïnstalleerd en wordt de Arduino later automatisch herkend. Let er daarbij op dat in het dialoogveld Installation options alle vinkjes geplaatst zijn. Afhankelijk van de Windows-configuratie is een bevestiging van het gebruikersaccountbeheer vereist.
3 Start na de installatie de Arduino-IDE en sluit de Arduino dan aan met een USB-kabel. De driver wordt nu automatisch geïnstalleerd en
simuleert via USB een seriële poort waarmee de Arduino verbonden is.
4 Kies pas nadat de driver geïnstalleerd is in het menu van de Arduino-IDE Tools/Port. In de meeste gevallen wordt slechts een enkele seriële
poort weergegeven. Zet hier het vinkje.
5 Kies vervolgens via het menupunt Tools/Board de Arduino/Genuino Uno, wanneer deze niet reeds automatisch wordt herkend.
6 Kies in het menu Bestand/Voorbeelden/Firmata/StandardFirmata. Er wordt een nieuw venster van de Arduino-IDE geopend met de
StandardFirmata-Sketch.
7 Klik op het symbool Uploaden in de bovenste symbolenlijst (het ronde symbool met de pijl naar rechts). Nu wordt de software gecompileerd
en overgedragen naar de aangesloten Arduino.
Wanneer u Linux of Mac OS X gebruikt: Op de website www.arduino.cc/en/Guide/HomePage vindt u installatie-instructies van de Arduino-IDE voor deze besturingssystemen.
LED brandt
Voor het eerst experiment is er geen eigen programma nodig. Het Firmata-testprogramma schakelt een LED in en uit en controleert daarmee ook gelijk of StandardFirmata werkt.
Componenten: 1x insteekprintplaat, 1x LED rood, 1x 220 ohm weerstand (rood-rood-bruin), 2x verbindingskabel
Sluit de LED met een voorweerstand aan op pen 5 van de Arduino, zoals afgebeeld.
Start nu het programma firmata_test.exe uit de downloads bij de adventskalender. Kies in het menu Poort de door de Arduino te gebruiken poort. Dan verschijnen besturingselementen voor de pennen van de Arduino.
Het Firmata-testprogramma laat de LED oplichten.
Klik op de knop Low in de regel Pen 5, dan schakelt de LED in en schakelt de knop naar High om. Er nogmaals op klikken schakelt de LED weer uit.
Voor statusindicatie zonder aanvullende hardware heeft de Arduino ook een eigen LED. Deze kan bestuurd worden via pen 13. Klik op de knop Low in de regel Pen 13, dan schakelt deze LED in en uit.
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.
2de dag
Vandaag in de adventskalender
• LED groen
• 220 ohm weerstand (rood-rood-bruin)
• Verbindingskabel
Afwisselend knipperlicht
Een eenvoudig programma laat twee LEDs afwisselend knipperen.
Componenten: 1x insteekprintplaat, 1x LED rood, 1x LED groen, 2x 220 ohm weerstand (rood-rood-bruin), 3x verbindingskabel
Het programma
Voor de projecten in de adventskalender gebruiken wij de eenvoudig te leren programmeertaal Snap4Arduino. Download de laatste versie op
s4a.cat/snap of gebruik gewoon het bestand Snap4Arduino-aktuell.exe uit de downloads bij de adventskalender.
Klik in Snap4Arduino op het Instellingen-symbool en kies in het menu Language.
Het instellingen-menu in Snap4Arduino
Kies »Nederlands« in de lijst.
Alvorens u met programmeren kunt beginnen, moet er verbinding gemaakt worden met de Arduino. Klik daarvoor linksboven in het blokpalet op Arduino en vervolgens op verbinding maken met Arduino. Bij het openen van een nieuw programma in Snap4Arduino gaat de verbinding met de Arduino vaak verloren. Indien er een fout optreedt wanneer u een nieuw programma start, verbindt de PC dan opnieuw met de Arduino, zoals beschreven.
Snap4Arduino ondersteunt meerdere Arduino's op een PC. Zolang er slechts één Arduino is aangesloten wordt deze direct herkend en wordt de verbinding tot stand gebracht.
De verbinding met de Arduino werd met succes tot stand gebracht.
De programma's bij de adventskalender
U kunt de programma's bij de adventskalender downloaden van www.buch.cd of u kunt ze eenvoudig elke zelf samenstellen aan de hand van de afbeelding. Pak het ZIP-bestand van de download uit naar een register op de harde schijf. Klik dan linksboven in Snap4Arduino op het Bestand-symbool en kies Importeren, om de programma's, die in XML-indeling zijn, in Snap4Arduino te importeren. Klik na het importeren in het menu één keer op Opslaan. Vervolgens is het programma beschikbaar in de eigen bibliotheek, die via het menupunt Openen geopend kan worden.
In Snap4Arduino hoeft men tijdens het programmeren geen programmacode te tikken. De blokken worden eenvoudig middels Drag-and-drop aan elkaar gehangen. De blokkenkaart in het linker deel van het venster bevat de beschikbare blokken geordend op thema.
Het programma gebruikt de belangrijkste blokken:
Wanneer het groene vlagje wordt aangeklikt op de kaart Besturing dan leid dit bij de meeste programma's tot de start.
doorlopend van de kaart Besturing is een eindeloze lus die permanent wordt herhaald.
wacht... sec van de kaart Besturing laat het programma een bepaalde tijd wachten tot de volgende stap.
Zet digitale pen... op... van de kaart Arduino zet een digitale pen van de Arduino op een logische waarde waar of niet waar. deze beide
waarden zijn als blok op de kaart Operators te vinden.
Het programma start wanneer de gebruiker rechtsboven op het groene vlagje klikt.
Een doorlopendelus zorgt ervoor, dat de beide LEDs afwisselend eindeloos knipperen – tot de gebruiker op het rode Stop-symbool rechtsboven in Snap4Arduino klikt.
Nadat de LED op pen 5 is ingeschakeld, wordt er 0,1 seconde gewacht, zodat StandardFirmate geen bevel „onderdrukt“. Tussen het plaatsen van twee pennen moet altijd een minimale wachttijd ingebouwd worden. Vervolgens wordt de LED op pen 8 uitgeschakeld. Nu wacht het programma een halve seconde.
Aanwijzing: Decimale punt
Snap4Arduino gebruikt zoals veel Amerikaanse programma's de punt als decimaalteken, niet de in Nederland en België gebruikelijke komma.
Vervolgens wordt op gelijke wijze de LED op pen 8 in- en op pen 5 uitgeschakeld. Na nog een halve seconde herhaalt de cyclus zich van voren af aan.
3de dag
Vandaag in de adventskalender
• LED geel
• 220 ohm weerstand (rood-rood-bruin)
• Verbindingskabel
Verkeerslicht
Het experiment van de 3de dag schakelt een verkeerslicht uit drie LEDs in hun typische cyclus van rood via rood-geel naar groen en via geel terug naar rood.
Componenten: 1x insteekprintplaat, 1x LED rood, 1x LED geel, 1x LED groen, 3x 220 ohm weerstand (rood-rood-bruin), 4x verbindingskabel
Het programma
Het programma werkt bijna net zo als dat van gisteren. Ook hier worden in een eindeloze lus na elkaar verschillende LED-combinaties in- en uitgeschakeld. In de tussenfasen rood-geel en geel licht het verkeerslicht telkens 0,5 seconden op, in de fasen rood en groen telkens 3 seconden. Deze tijden kunnen in de wacht...sec-blokken ook anders worden ingesteld.
De wachttijden tussen het schijnbaar gelijktijdig omschakelen van meerdere LEDs werd teruggebracht tot 0,01 seconde, wat technisch voldoende is en door de toeschouwer nauwelijks waarneembaar is.
Het programma 03ampel01 laat de LEDs afwisselend knipperen.
4de dag
Vandaag in de adventskalender
• RGB-LED
RGB-LED knippert veelkleurig
Het experiment van de 4de dag laat een RGB-LED in volgorde in verschillende kleuren knipperen.
Componenten: 1x insteekprintplaat, 1x RGB-LED, 3x 220 ohm weerstand (rood-rood-bruin), 4x verbindingskabel
Het programma
Het programma werkt bijna net zo als dat van gisteren. Ook hier worden in een eindeloze lus na elkaar verschillende digitale pennen in- en uitgeschakeld. In dit geval gaat het om de drie kleurcomponenten van de RGB-LED.
Additieve kleurmenging
RGB-LEDs gebruiken de zogenaamde additieve kleurmenging. De drie lichtkleuren rood, groen en blauw worden toegevoegd en leveren aan het eind zuiver wit. Een kleurenprinter daarentegen gebruikt subtractieve kleurmenging. Elke kleur werkt op een wit blad als een filter dat een deel van het wit gereflecteerde licht wegneemt (= aftrekt). Wanneer men alle drie de printerkleuren over elkaar afdrukt, dan geeft dat zwart, dat helemaal geen licht meer reflecteert.
In het programma lichten door het afwisselend in- en uitschakelen altijd één, of twee kleurcomponenten op. Daardoor wisselt de RGB-LED tussen zes verschillende kleuren.
Het programma 04rgb01 laat de LEDs afwisselend knipperen
De snelheid van de kleurwisseling wordt met de variabele z gestuurd, die bij het begin van het programma op een bepaalde waarde gezet wordt en dan voor elke kleurwisseling geldt.
Variabelen in Snap4Arduino
Variabelen zijn kleine geheugenruimtes, waar men tijdens een programma een getal of iets anders kan opslaan. Wanneer het programma wordt beëindigd, worden deze opslagruimtes voor variabelen automatisch weer gewist. Variabelen moeten eerst in Snap4Arduino aangemaakt worden alvorens men ze kan gebruiken.
5de dag
Vandaag in de adventskalender
• LED rood
LED dimmen
Componenten: 1x insteekprintplaat, 2x LED rood, 2x 220 ohm weerstand (rood-rood-bruin), 3x verbindingskabel
LEDs zijn typische onderdelen voor de weergave 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 uitgangen gedefinieerde digitale pennen. Derhalve is het theoretisch niet mogelijk om een LED te dimmen.
Met een truc is het toch mogelijk om de helderheid van een LED aan een digitale pen te regelen. Wanneer men een LED snel genoeg laat knipperen, dan neem het menselijke oog het niet meer waar als knipperen. De als pulsbreedtemodulatie (PWM) aangeduide techniek levert een pulserend signaal dat binnen zeer korte intervallen in- en uitschakelt. De spanning van het signaal blijft altijd gelijk, alleen de verhouding tussen Level niet waar (0V) en Level waar (+3,3V) wordt gewijzigd. De pulsverhouding geeft de verhouding van de lengte van de ingeschakelde toestand tot de totale duur van een schakelcyclus aan.
Hoe kleiner de pulsduur, hoe korter de brandtijd van de LED binnen een schakelcyclus. Daardoor werkt de LED donkerder dan een permanent ingeschakelde LED.
Pennen voor PWM-signalen
De pennen 3, 5, 6, 9, 10, 11 worden op de Arduino met een ‚~‘-symbool aangeduid. Deze pennen kunnen gebruikt worden voor PWM.
Het programma
Het programma 05pwm01 dimt de beide LEDs cyclisch helderder en donkerder. Aan het begin worden daarvoor twee variabelen gedefinieerd: helder geeft de PWM-waarde voor de helderheid van de LED en stap geeft de stapgrootte bij het dimmen aan. De actuele waarde van beide variabelen wordt realtime rechtsboven weergegeven in het platform.
Nu begint er een eindeloze lus. Als eerste wordt bij elke lusdoorloop de actuele waarde van de variabele helder als PWM-waarde op de pen5 en na een korte wachttijd op de pen 6 gegeven. Aansluitend 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 heeft bereikt. In dit geval wordt er een of-blok ingezet, dat wederom plaats voor twee verdere vragen bevat. Indien van deze twee minimaal één waar is, dan geeft het of-blok de waard waar terug en de inhoud van het niet waar-blok wordt uitgevoerd.
Twee gelijkheidsvragen controleren of de variabele helder de waarde 0 of 100 bereikt heeft. Klopt dit, dan wordt de variabele pas op een nieuwe waarde gezet. Omdat Snap4Arduino geen mogelijkheid biedt om het voorteken van een variabele om te keren, gebruiken we de Operator ‚-‘ en trekken we de waarde van de variabele af van 0, wat hetzelfde resultaat oplevert.
Tot slot wacht het programma 0,025 seconden. Aansluitend start de eindeloze lus opnieuw en levert de LEDs een nieuwe PWM-waarde.
6de dag
Vandaag in de adventskalender
• 2xverbindingskabel
Deze verbindingskabels zijn pas tijdens de komende dagen nodig.
Kleuren mengen met PWM
Componenten: 1x insteekprintplaat, 1x RGB-LED, 3x 220 ohm weerstand (rood-rood-bruin), 4x verbindingskabel
Het programma
Het programma 06pwm02 dimt de kleurcomponenten van een RGB-LED cyclisch helderder en donkerder. Daardoor worden verschillende mengkleuren geproduceerd. De actuele waarde van alle variabelen wordt realtime rechtsboven weergegeven in het platform.
De variabelen helder_r, helder_g en helder_b slaan de PWM-helderheidswaarde van de drie kleurcomponenten op, de variabelen stap_r, stap_g en stap_b de stapbreedte, waarin de PWM-waarden gewijzigd worden. Daarbij wordt alleen tussen +5 en -5 gewisseld.
In de eerste 20 stappen wordt het rode component stapsgewijs van 100 naar 0 verlaagd en tegelijkertijd wordt groene component van 0 naar 100 verhoogd, waardoor er verscheidene mengkleuren tussen rood en groen ontstaan. Daarna worden de voortekenen van de beide gebruikte stapwaarden omgekeerd, worden de groene componenten gereduceerd en daarbij worden de blauwe componenten verhoogd. In de laatste lus wordt blauw dan weer gereduceerd en wordt rood verhoogd. Vervolgens begint de eindeloze lus weer van voren. In totaal zijn er 60 verschillende kleuren te zien.
7de dag
Vandaag in de adventskalender
• Boetseerklei
• 20 MOhm weerstand (rood-zwart-blauw)
• Blanke draadbrug
De draadbrug wordt gebruikt voor verscheidene experimenten. Leg vast een tang klaar om de passende stukken draad af te snijden.
LED met boetseerkleisensor schakelen
Componenten: 1x insteekprintplaat, 1x LED rood, 1x 220 ohm weerstand (rood-rood-bruin), 1x 20 MOhm weerstand (rood-zwart-blauw),
4xverbindingskabel, 2x boetseerkleicontact
Het rechter boetseerkleicontact (in de afbeelding aangeduid met een min-teken) is het aardingscontact. Deze houdt u tijdens de proeven altijd in de hand.
Zo werken sensorcontacten
De als ingang geschakelde pen 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-Signal met het duidelijk sterkere Low-niveau van de vingertop gemengd en trekt de GPIO-pen 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 en elk geval aangemaakt.
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 10 cm lang af en steek het in een stuk boetseerklei. Steek het andere einde, zoals te zien in de afbeelding, in de insteekprintplaat.
Omdat Snap4Arduino de in de Arduino ingebouwde Pulldown-weerstand altijd inschakelt, worden digitale ingangen altijd op 0 getrokken en hebben ook zonder aanraking een Low-Pegel. De Arduino beschikt echter over aanvullende analoge ingangen, die zeer geschikt zijn als sensorcontacten. Analoge ingangen leveren waardes tussen 0 (Low-Pegel) en 1023 (High-Pegel). De waarde 200 is een goede grenswaarde om
onderscheid te maken tussen aangeraakte en niet aangeraakte sensorcontacten.
Het programma
Het programma 07knete01 schakelt de LED in, wanneer het boetseerkleicontact wordt aangeraakt, en weer uit, wanneer het wordt losgelaten. De variabele x toont op het platform altijd de actuele waarde van de analoge pen5. Als deze kleiner is dan 200 dan wordt de LED op de digitale pen 7 ingeschakeld, anders wordt deze uitgeschakeld.
8ste dag
Vandaag in de adventskalender
• 20 MOhm weerstand (rood-zwart-blauw)
• Verbindingskabel
Krabben kruipen
Componenten: 1x insteekprintplaat, 1x LED rood, 1x 220 ohm weerstand (rood-rood-bruin), 2x 20 MOhm weerstand (rood-zwart-blauw),
5xverbindingskabel, 3x boetseerkleicontact
Het experiment van de achtste dag is een snel spel op het PC-scherm dat de Arduino als een kleine gamepad met twee boetseerkleicontacten gebruikt. In het spel rent een krab in een lus en mag daarbij zo weinig mogelijk van de weg afkomen.
Het programma
De beide boetseerkleicontacten draaien bij aanraking de krab met 5 graden naar links of rechts. Hij loopt automatisch altijd naar voren en moet alleen door draaien op de juiste koers worden gehouden.
Aan het begin wordt de krab op de startpositie gezet en de bewegingsrichting wordt op 0° naar boven ingesteld. De krab gaat in een eindeloze lus steeds twee stappen in de actuele bewegingsrichting. Daarna worden drie voorwaarden afgetast.
Wanneer de rode of groene schaar van de krab de witte vlakken buiten de lus aanraakt, dan wordt de foutenteller met 1 verhoogd en de LED licht kort op.
Wanneer de speler het boetseerkleicontact op de analoge pen 5 aanraakt, wordt de krab met 5° tegen de wijzers van de klok in gedraaid en bij aanraking van het contact op de analoge pen 3 met 5° met de wijzers van de klok mee.
9de dag
Vandaag in de adventskalender
• 20 MOhm weerstand (rood-zwart-blauw)
• Verbindingskabel
RGB-LED met boetseerkleicontacten sturen
Componenten: 1x insteekprintplaat, 1x RGB-LED rood, 3x 220 ohm weerstand (rood-rood-bruin), 3x 20 MOhm weerstand (rood-zwart-blauw),
8xverbindingskabel, 1x draadbrug, 4x boetseerkleicontact
Drie boetseerkleicontacten sturen de drie kleurcomponenten van een RGB-LED aan. Wanneer de overeenkomstige sensor wordt aangeraakt, wordt de kleur ingeschakeld. Op deze wijze zijn zeven verschillende kleuren mogelijk, de drie grondkleuren, drie mengkleuren en wit als mengeling van alle drie de kleuren.
Het programma
Een eindeloze lus tast steeds weer na elkaar de drie boetseerkleicontacten af. Wanneer een contact wordt aangeraakt, wordt het overeenkomsti­ge kleurcomponent van de RGB-LED ingeschakeld, anders wordt deze uitgeschakeld wanneer deze eerst was ingeschakeld. Het hier gebruikte sequentiële aftasten van de boetseerkleicontacten heeft tegenover het parallelle aftasten het voordeel dat er zich geen time-out-problemen voor kunnen doen, in het geval twee kleurcomponenten gelijktijdig worden ingeschakeld.
Het programma 09rgb02 stuurt de drie kleurcomponenten
van een RGB-LED via boetseerkleicontacten.
10de dag
Vandaag in de adventskalender
• LED groen
• 2x 220 ohm weerstand (rood-rood-bruin)
Voetgangerslicht
Componenten: 1x insteekprintplaat, 2x LED rood, 1x LED geel, 2x LED groen, 5x 220 ohm weerstand (rood-rood-bruin), 1x 20 MOhm
weerstand (rood-zwart-blauw), 8xverbindingskabel, 2x boetseerkleicontact
Bij het aanraken van het boetseerkleicontact start de typische verkeerslichtcyclus van een voetgangerslicht. In ruststand licht het voetgangerslicht rood op en he verkeerslicht groen.
Het programma
Bij klikken op het groen vlagje wordt het verkeerslicht in de basispositie gebracht. Het voetgangerslicht licht rood op, het verkeerslicht groen. Wanneer men het boetseerkleicontact aanraakt loopt de verkeerslichtcyclus door. Na een cyclus wacht het programma weer, tot het boetseerkleicontact opnieuw wordt aangeraakt.
Het programma 10ampel02 stuurt een voetgangers-
licht aan met een boetseerkleicontact.
11de dag
Vandaag in de adventskalender
• LED geel
• 220 ohm weerstand (rood-rood-bruin)
Looplicht
Componenten: 1x insteekprintplaat, 2x LED rood, 2x LED geel, 2x LED groen, 6x 220 ohm weerstand (rood-rood-bruin), 7x verbindingskabel
Looplicht met zes LEDs
Looplichten zijn altijd opnieuw populaire effecten, niet alleen voor reclame en partyruimtes. Het experiment van de elfde dag laat zes LEDs als looplicht oplichten.
Het programma
Het programma 11lauflicht gebruikt een lijstvariabele, waarin de pennummers van de digitale pennen, die voor de LEDs worden gebruikt, zijn opgeslagen. Anders dan bij Scratch moeten lijsten in Snap niet door het programma gevuld worden, maar kunnen deze direct in de programmacode met beginwaarden vooraf worden ingesteld.
Een lus loopt over de lengte van de lijst en schakelt na elkaar de LEDs apart voor elke 0,1 seconde in. Deze lus wordt eindeloos herhaald.
Het programma 11lauflicht stuurt een
looplicht met behulp van een lijstvariabele.
12de dag
Vandaag in de adventskalender
• LED blauw
• 220 ohm weerstand (rood-rood-bruin)
• Geïsoleerde draadbrug
Vandaag bevat de adventskalender geïsoleerde draadbrug. Daarmee maakt u korte verbindingsbruggen waarmee contactrijen op de insteekprintplaat verbonden worden, waarbij geen gevaar bestaat dat er kortsluiting met andere onderdelen ontstaat. Snijd de draad met een kleine zijdensnijder af op de juiste lengte. Om de draad beter in de insteekprintplaat te kunnen steken is het aan te bevelen deze licht scheef af te snijden, zodat er een soort wig ontstaat. Verwijder aan beide zijden van elke draadbrug op een lengte van ongeveer een halve centimeter de isolatie.
LED-dobbelsteen
Componenten: 1x insteekprintplaat, 2x LED rood, 2x LED geel, 2x LED groen, 1x LED blauw, 7x 220 ohm weerstand (rood-rood-bruin), 1x 20
MOhm weerstand (rood-zwart-blauw), 7xverbindingskabel, 5x geïsoleerde draadbrug (verschillende lengtes), 2x boetseerkleicontact
LED-dobbelsteen met zeven LEDs met boetseerkleisensor schakelen
De typische dobbelstenen die 1 – 6 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 1 tot 6 LEDs in serie, maar in de opstelling van een dobbelsteen. Deze hebben ogen in de typisch vierkante opstelling, waarbij men 7 LEDs gebruikt. Voor de aansturing van de LEDs worden slechts 4 in plaats van 7 digitale pennen gebruikt, omdat een dobbelsteen voor de weergave van even getallen de ogen per paar gebruikt.
In de schakeling worden beide zijrails van de insteekprintplaat gebruikt voor aardleidingen. Daarom wordt het boetseerkleicontact ditmaal iets anders aangesloten.
Hoe ontstaan willekeurige getallen?
Over het algemeen denkt men dat er in een programma niets willekeurig kan gebeuren - hoe kan een programma dan in staat zijn om willekeurige getallen te genereren? Als men een groot priemgetal door een bepaalde waarde deelt, krijgt men na het x-te getal na de komma, getallen die nauwelijks nog overzichtelijk zijn. Deze wijzigen ook zonder enige regelmaat, wanneer men de verdeler regelmatig verhoogt. Dit resultaat is schijnbaar toevallig, maar kan echter ook door een identiek programma of het herhaald oproepen van hetzelfde programma, op elk moment worden gereproduceerd. Als men echter een uit enkele van deze cijfers samenhangend getal neemt en dit opnieuw door een getal deelt, dat uit de huidige seconde of de inhoud van een willekeurige geheugenplaats van de computer wordt gevormd, verkrijgt men een resultaat dat niet kan worden gereproduceerd en daarom als willekeurig getal wordt omschreven.
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 LEDs gebruikte pennen uitgeschakeld om het eerder getoonde dobbelresultaat te wissen.
Uitsluitend in de variabele w wordt een willekeurig getal tussen 1 en 6 opgeslagen. Voor elke mogelijke gebeurtenis is er een eigen indien…­blok, dat de overeenkomstige LEDs inschakelt.
Het programma 12wuerfel01 simuleert een zeszijdige dobbelsteen.
13de dag
Vandaag in de adventskalender
• 220 ohm weerstand (rood-rood-bruin)
Deze weerstand is pas nodig bij de volgende dagen.
LED-dobbelsteen met realistisch dobbelsteeneffect
Componenten: 1x insteekprintplaat, 2x LED rood, 2x LED geel, 2x LED groen, 1x LED blauw, 7x 220 ohm weerstand (rood-rood-bruin), 1x 20
MOhm weerstand (rood-zwart-blauw), 7xverbindingskabel, 5x geïsoleerde draadbrug (verschillende lengtes), 2x boetseerkleicontact
Een echte dobbelsteen toont niet meteen het definitieve aantal ogen, maar rolt eerst een korte tijd, waarbij men de resultaten ziet die het toch niet worden. Het programma van de 13de dag simuleert het rollen waarbij de dobbelsteen eerst een paar andere dobbelresultaten weergeeft met minimaal steeds langer wordende pauzes ertussen, alvorens het definitieve resultaat verschijnt.
Het programma
Het programma gebruikt dezelfde dobbelroutine, maar rolt na het aanraken van het boetseerkleicontact niet slechts één keer, maar vier keer achter elkaar, waarbij de wachttijden elke kaar met 0,2 seconde langer worden, alvorens het resultaat gedoofd wordt.
Het programma 13wuerfel02 rolt met realistisch dobbelsteeneffect.
14de dag
Vandaag in de adventskalender
• 15 kOhm potentiometer
LED met potentiometer dimmen
Benodigde Componenten: 1xinsteekprintplaat, 1xLED geel, 1x220 ohm weerstand, 1x15 kOhm potentiometer, 4xverbindingskabel,
1xgeïsoleerde draadbrug
LED-dimmer met potentiometer
Om een LED werkelijk als een woonkamer lamp te dimmen gebruiken wij de potentiometer uit de adventskalender van vandaag. Met deze instelbare weerstand kan een spanningsdeler worden gebouwd,die een willekeurige spanning tussen 0V en +5V kan leveren. Deze analoge spanning kan echter niet direct aan de LED doorgegeven worden, maar moet in een digitale PWM-waarde worden omgerekend.
De analoge ingangen van de Arduino maken gebruik van een analoge spanningswaarde en leveren digitale waarden tussen 0 en 1023. Daarbij staat 0 voor 0V en 1023 voor +5V spanning op elke pen. Deze waarden moeten worden omgerekend naar waarden tussen 0 en 255, om ze dan weer als PWM-waarde aan een LED af te geven.
Het programma
Een eindeloze lus leest de waarde van de analoge pen 5 uit en deelt deze door 4. De uitkomst wordt in de variabele x opgeslagen en weergegeven op het platform. Vervolgens wordt de PWM pen 9 op deze waarde gezet.
Het programma 14dimm01 dimt een LED
aan de hand van de instelling van de potentiometer.
15de dag
Vandaag in de adventskalender
• 2xverbindingskabel
Analoge peilindicator met LEDs
Componenten: 1x insteekprintplaat, 2x LED rood, 2x LED geel, 2x LED groen, 1x LED blauw, 7x 220 ohm weerstand (rood-rood-bruin), 1x 15
kOhm potentiometer, 10xverbindingskabel, 1x geïsoleerde draadbrug
Peilindicator met zeven LEDs
Hoe men met analoge waarden de helderheid van een LED stuurt, is nu bekend. Deze methode is echter niet relevant genoeg om een analoge waarde ook werkelijk te visualiseren - helderheden worden zeer subjectief waargenomen en hangen sterk van de omgeving en de gebruikte LEDs af. Op een peilindicator zijn de analoge waarden veel duidelijker af te lezen.
Het programma
De nummers van de voor de LEDs gebruikte pennen zijn in een lijst opgeslagen. De analoge pen 5 wordt voortdurend afgetast en zijn waarde, die tussen 0 en 1023 kan liggen, wordt door 128 gedeeld om een waarde tussen 0 en 8 te verkrijgen om daarmee 0 tot 7 LEDs in te schakelen.
Een interne lus over de lengte van de lijst controleert of de zo berekende waarde p groter is dan het actuele nummer van de LED. Zo ja, dan wordt deze ingeschakeld.
Het programma 15pegel stuurt een LED-lijst
aan de hand van de instelling van de potentiometer.
16de dag
Vandaag in de adventskalender
• 7 segment scherm
7 segment scherm met de Arduino sturen
7segment schermen kunnen op zeven LEDs de cijfers 0 tot 9 en de letters A tot F weergeven, die nodig zijn voor de weergaven van hexadecimale getallen. Het 7 segment scherm in de adventskalender beschikt, zoals zovele dergelijke schermmodules, nog over een achtste LED voor de decimale punt. De zeven LEDs voor het weergeven van cijfers zijn met de letters a tot g aangeduid. De LED met de aanduiding DP stelt de decimale punt voor. Bij een eencijferig 7 segment scherm kan elke LED afzonderlijk aangestuurd worden via de anode. Alle LEDs van een 7 segment weergave van het type common kathode gebruiken een gemeenschappelijke kathode, vergelijkbaar met RGB-LEDs.
Componenten: 1x insteekprintplaat, 1x 7 segment scherm, 7x 220 ohm weerstand (rood-rood-bruin), 8x verbindingskabel, 1x geïsoleerde draadbrug
Het programma
Wanneer men op het toetsenbord op een cijfertoets drukt,dan geeft het 7 segment scherm het overeenkomstige cijfer weer. De spatiebalk wist de weergave.
Geen numeriek toetsenblok
Snap4Arduino ondersteunt uitsluitend de numerieke toetsen op de bovenste regel van het QWERTY-toetsenbord. De numerieke toetsen van het numerieke toetsenblok kunnen niet worden gebruikt.
Het programma bestaat uit meerdere scriptblokken, die elk op het indrukken van de toetsen reageren. Op het platform rechtsboven vindt u een schematische grafiek van het 7 segment scherm met de aanduidingen van de enkele segmenten (a-g). Deze grafiek heeft geen functie voor het programma, deze dient slechts als overzicht.
Door te klikken op het groen vlagje worden twee lijstvariabelen geïnitialiseerd:
s bevat de pennen waarop de zeven segmenten van a tot g zijn aangesloten.
z bevat tien verdere lijsten, waarvan elk een resultaat van waar- en niet-waar-operators bevat, die aangeven welk segment van het 7 segment scherm voor elk cijfer moet worden ingeschakeld. De lijst begint bij cijfer 1, het cijfer 0 stelt het tiende lijstelement voor. Deze methode wordt gebruikt terwijl objecten in Snap-lijsten altijd beginnend met 1 geteld worden - niet met 0 zoals in vele andere programmeertalen.
Tien scriptblokken wachten erop dat één van de tien cijfertoetsen ingedrukt wordt. Afhankelijk van de ingedrukte toets wordt de variabele n op het overeenkomstige getal gezet, bij de toets 0 op 10. Daarna wordt het bericht weergave verzonden.
Wanneer het bericht weergave wordt ontvangen, start het belangrijkste scriptblok, dat de in de variabele n opgeslagen cijfer op het 7 segment scherm afbeeld.
Scriptblok voor weergave van een getal
De lus in dit scriptblok loopt 7 maal door en toont daarbij de zeven in het lijstelement n van de lijst z opgeslagen LED-segmenten. De respectievelijke pennen worden uit de lijst s gelezen.
Voor het wissen van het 7 segment scherm wordt een eigen scriptblok gebruikt, dat bij het indrukken van de spatiebalk start. Hier loopt een soortgelijke lus 7 maal door en zet alle segmenten op niet waar.
De spatiebalk wist het 7 segment scherm.
17de dag
Vandaag in de adventskalender
• Boetseerklei
Met het tweede stuk boetseerklei kunnen nu meerkleurige boetseerkleicontacten gebouwd worden om deze eenduidig te onderscheiden.
Teller met 7 segment scherm
Componenten: 1x insteekprintplaat, 1x 7 segment scherm, 7x 220 Ohm weerstand (rood-rood-bruin), 1x 20 MOhm weerstand (rood-zwart-
blauw), 2xboetseerkleicontact, 10x verbindingskabel, 1x geïsoleerde verbindingsbrug
Bij elke aanraking van het boetseerkleicontact telt de teller 1 verder. Na de 9 volgt automatisch weer de 0.
Het programma
Het programma definieert, net als het programma van gister, eerst twee lijsten met de pennummers voor de zeven LED-segmenten en de monsters voor de tien cijfers.
De variabele n bevat altijd het op het 7 segment scherm weer te geven getal, waarbij de 0 voor het cijfer 10 staat om het tiende lijstelement weer te geven.
Opdat de teller bij langere aanraking van het boetseerkleicontact niet snel verder telt, wacht het programma eerst tot het boetseerkleicontact wordt aangeraakt en vervolgens tot het weer wordt losgelaten. Pas dan telt de teller 1 omhoog.
Aan het begin van elke lusdoorloop roept een zend ... aan alle-blok weer een scriptblok op voor de weergave van een in de lijst z gedefinieerd cijfer. Dit scriptblok komt overeen met dat uit het programma van gisteren.
Scriptblok voor weergave van een getal
18de dag
Vandaag in de adventskalender
• 220 ohm weerstand (rood-rood-bruin)
Deze weerstand is pas nodig bij de volgende dagen.
Willekeurig dobbelsteen met 7 segment scherm
Componenten: 1x insteekprintplaat, 1x 7 segment scherm, 8x 220 Ohm weerstand (rood-rood-bruin), 1x 20 MOhm weerstand (rood-zwart-
blauw), 2xboetseerkleicontact, 11x verbindingskabel, 1x geïsoleerde verbindingsbrug
Het circuit lijkt vergaand op dat van de 17de dag. De decimale punt van het 7 segment scherm is hier aanvullend aangesloten.
Het programma
Het programma simuleert naast een klassieke zeszijdige dobbelsteen ook dobbelstenen met twee tot negen zijden, bijvoorbeeld een geworpen munt. De waarde van de variabele w kan met een schuifregelaar op het platform worden ingesteld. Dit geeft de hoogste waarde van het mogelijke getallenbereik aan.
Wanneer men het boetseerkleicontact aanraakt, wordt vervolgens het laatste resultaat van het scherm gewist. Hiervoor zendt het hoofdprogram­ma het bericht uit, dat een scriptblok start, dat in een lus alle LED-segmenten uitschakelt.
Dit blok wist het 7 segment scherm.
Daarna lijkt de dobbelsteen te rollen, wat gesimuleerd wordt door het knipperen van de decimale punt op het 7 segment scherm. Wanneer men het contact loslaat, verschijnt een willekeurig getal, dat weer via het reeds bekende scriptblok wordt weergegeven.
Scriptblok voor weergave van een getal
19de dag
Vandaag in de adventskalender
• 2xverbindingskabel
Deze verbindingskabels zijn pas tijdens de komende dagen nodig.
Peilindicator met 7 segment scherm
Componenten: 1x insteekprintplaat, 1x 7 segment scherm, 7x 220 ohm weerstand (rood-rood-bruin), 1x 15 kOhm potentiometer, 10x
verbindingskabel, 2x geïsoleerde draadbrug
De analoge waarde van een potentiometer wordt in deze peilindicator als getal tussen 0 en 9 weergegeven.
Het programma
Het programma bestaat ditmaal slechts uit één scriptblok, dat ook de lus voor de weergave van getallen op het 7 segment scherm bevat. De potentiometer kan door licht draaien in snelle opvolging verschillende waardes leveren. Omdat er geen externe routine voor weergave van het getal wordt opgeroepen, kunnen er timingproblemen ontstaan wanneer het getal nog niet klaar wordt weergegeven en er reeds een nieuw waarde door de potentiometer wordt uitgelezen.
Het programma 19_7seg04 levert een peilindicatie op het 7 segment scherm.
Een eindeloze lus leest de waarde van de analoge pen 0 en rondt deze af op een getal tussen 0 en 9. Deze waarde wordt in de variabelen n opgeslagen en indien deze 0 is, op 10 gezet om het tiende lijstelement weer te geven. Vervolgens schakelt de reeds bekende lus het juiste LED­segment van het getal in.
20ste dag
Vandaag in de adventskalender
• 220 ohm weerstand (rood-rood-bruin)
Countdown voor knipperlicht met 7 segment scherm
Componenten: 1x insteekprintplaat, 1x 7 segment scherm, 10x 220 Ohm weerstand (rood-rood-bruin), 1x 20 MOhm weerstand (rood-zwart-
blauw), 2xboetseerkleicontact, 11x verbindingskabel, 4x geïsoleerde verbindingsbrug (verschillende lengtes)
Bij aanraken van het boetseerkleicontact start een tien seconde durende countdown op het 7 segment scherm, daarna knippert de RGB-LED kort in het wit. Daarvoor zijn alle drie de anoden van de RGB-LED via voorweerstanden met dezelfde Arduino-pen verbonden.
Het programma
De hoofdprogrammalus wacht eerst tot het boetseerkleicontact wordt aangeraakt en laat dan een countdown van 9 tot 1 lopen. Aan het einde wordt het 7 segment scherm op 0 gezet en wordt de LED gedurende 0,1 seconde ingeschakeld.
Voor de weergaven van de getallen wordt weer de uit eerdere programma's bekende methode gebruikt.
Scriptblok voor weergave van een getal
21ste dag
Vandaag in de adventskalender
• 20 MOhm weerstand (rood-zwart-blauw)
Deze weerstand is pas nodig bij de volgende dagen.
Getallen raden met 7 segment scherm
Componenten: 1x insteekprintplaat, 1x 7 segment scherm, 7x 220 Ohm weerstand (rood-rood-bruin), 3x 20 MOhm weerstand (rood-zwart-
blauw), 4xboetseerkleicontact, 12x verbindingskabel
Het spel genereert een willekeurig getal dat geraden moet worden. Met de boetseerkleicontacten kan met het zelf ingetikte getal stapsgewijs verhogen of verlagen. De met het vierkant gemarkeerde boetseerkleicontact wordt de suggestie ingevoerd.
Het programma
Eerst wordt in een eindeloze lus een geheim getal x willekeurig vastgelegd. Het aangegeven startgetal wordt eveneens toevallig vastgelegd en direct in de variabele n opgeslagen, die zoals in de eerdere programma's wordt gebruikt voor weergave op het 7 segment scherm. In de variabele y wordt de suggestie van de speler opgeslagen. De hoofdlus van het spel loopt zolang tot de suggestie gelijk is aan het willekeurige getal.
Aan het begin van elke lusdoorloop wordt het huidige ingestelde getal n op het 7 segment scherm weergegeven. Daarna volgen drie indien­vragen, die de drie boetseerkleicontacten controleren.
Indien het contact op pen 2 wordt aangeraakt, dan wordt het weergegeven getal met 1 verhoogd. Een interne indien-vraag verhindert, dat dit getal groter dan 9 wordt.
Indien het contact op pen 1 wordt aangeraakt, dan wordt het weergegeven getal met 1 verlaagd. Ook hier wordt verhinderd dat het getal onder 1 komt.
Omdat de hoofdlus van het spel zeer snel doorloopt en niet wacht op invoer door de gebruiker, kan het gebeuren dat het scriptblok voor weergave van een getal wordt opgeroepen voordat de weergave van het laatste getal volledig werd afgesloten. Om dit te verhinderen, gebruikt het programma zend ... aan alle en wacht-blokken. Deze wachten tot het opgeroepen subprogramma compleet is doorlopen.
Indien het contact op pen 0 wordt aangeraakt, dan heeft de speler een suggestie ingevoerd. De voor de suggesties gebruikte variabele y wordt op het huidig ingestelde getal n gezet en het 7 segment scherm wordt uitgeschakeld. Afhankelijk van of het gezochte getal groter of kleiner is dan de laatste suggestie, knippert het bovenste of onderste segment van het 7 segment scherm drie keer kort.
Daarna start de hoofdlus van het spel opnieuw en geeft weer het laatst gesuggereerde getal aan. Indien er voldaan is aan de overwinningsvoor­waarde, dan knippert het geraden getal vijf keer. Daarna start een nieuwe spelronde met een nieuw geheim getal.
Voor het weergeven van een getal en het wissen van het 7 segment scherm worden de reeds bekende scriptblokken gebruikt.
22ste dag
Vandaag in de adventskalender
• 20 MOhm weerstand (rood-zwart-blauw)
Tennisspel
Vandaag ter afwisseling maar weer een spel dat op het beeldscherm van de PC loop en op de Arduino bestuurd wordt met boetseerkleicontacten.
Componenten: 1x insteekprintplaat, 4x 20 MOhm weerstand (rood-zwart-blauw), 5x verbindingskabel, 6x boetseerkleicontact
Met een beetje vaardigheid moeten de spelers proberen om met hun paddel de bal steeds weer terug te slaan, zodat deze niet tegen de rode of groen wand vliegt. Elke speler heeft twee boetseerkleicontacten om zijn paddel in de beide richtingen te bewegen. Bovendien is er voor elke speler een aardingscontact om zo min mogelijk uitval door ongelijke aarding te hebben.
Indien de bal de eigen wand raakt, terwijl men de paddel niet op tijd in de weg gezet heeft, dan krijgt de tegenstander een punt. De bal start dan weer vanaf de uitgangspositie. Het spel wordt steeds gestopt door te klikken op het rode Stop-symbool. Wie meer punten heeft, heeft gewonnen.
Het programma
De bal wordt door vier scriptblokken aangestuurd, die alle gelijktijdig lopen en gestart worden, wanneer de gebruiker op het groen vlagje klikt.
Het hoofdscript zorgt bij een klik op het groene vlagje voor de basisvereisten voor het spel. Eerst worden de beide puntentellers op 0 gezet. vervolgens wordt de bal naar zijn uitgangspositie bij x:0 y:0 gebracht. De bal moet in een willekeurige hoek wegvliegen. Daarvoor wordt de richting op een toevallige waarde tussen -20 en -160 gezet.
Vervolgens wordt de beweging van de bal voortdurend herhaald. Hij botst van de rand af wanneer hij deze raakt. Anders vliegt hij in vier stappen in de ingestelde richting. Deze beweging herhaalt zich in theorie zonder einde. Echter, omdat er bij het klikken op het groene vlagje die verder scriptblokken voor de bal worden gestart, kunnen er ook andere bewegingen ontstaan.
Het hoofdscriptblok voor het initialiseren en bewegen van de bal
Wanneer de bal één van de beide paddels raakt, dan wordt de bewegingsrichting in het negatieve omgekeerd. De bal vliegt in gelijke hoek naar onderen verder, als van waar hij van boven kwam, of omgekeerd. Om de beweging iets onvoorspelbaarder te maken, wordt de bal vervolgens vijf stappen bewogen, zodat daarna de paddel in elk geval niet meer wordt aangeraakt. Vervolgens wordt de vliegrichting tegenover de huidige richting met een willekeurige waarde tussen -20 en 20 graden gewijzigd.
Indien de bal niet de paddel, maar de groene balken aan de rechter rand raakt, dan krijgt de tegenspeler een punt. Daarna wordt de bal weer op zijn uitgangspositie gezet en met een willekeurige waarde tussen de -20 en 20 graden gedraaid zodat hij niet opnieuw precies dezelfde vliegbaan neemt, maar toch ongeveer in dezelfde richting, waarin hij laatst is gevlogen, vliegt. Hetzelfde gebeurt ook wanneer de bal de rode balken aan de linker kant raakt, slechts met het verschil dat dit keer de rechter speler het punt krijgt.
Deze scriptblokken worden uitgevoerd wanneer de bal de linker rode of de rechter groen rand raakt.
In Snap4Arduino kan elk Snap-object met precies één Arduino zijn verbonden. Daarom maakt de paddel Speler1 gebruik van alle vier de boetseerkleicontacten en leidt de resultaten overeenkomstig verder. Bij het tot stand brengen van een verbinding met de Arduino moet daarom dit object gekozen zijn.
Bij het aanraken van de boetseerkleicontacten op pen 3 en pen 2 moet de linker paddel Speler1 bewegen. Daarvoor worden de berichten Speler1op en Speler1af verzonden, die door hetzelfde object geëvalueerd en in opwaartse of afwaartse beweging worden omgezet.
Boetseerkleicontacten evalueren en de paddel van »Speler1« bewegen
De paddel van Speler2 heeft geen toegang tot dezelfde Arduino en ontvangt derhalve eenvoudig de berichte, die de paddel van Speler1 bij het aanraken van de boetseerkleicontacten aan pen 1 en pen 0 verzendt. Dienovereenkomstig beweegt de paddel opwaarts en afwaarts. Met een klik op het groene vlagje wordt hij naar de uitgangspositie gebracht en wacht dan op berichten.
Bewegingen van de paddel van »Speler2«
23ste dag
Vandaag in de adventskalender
• RGB-LED
Knipperende kerstverlichting
Componenten: 1x insteekprintplaat, 2x RGB-LED, 6x 220 ohm weerstand (rood-rood-bruin), 7x verbindingskabel, 2x geïsoleerde draadbrug
Twee RGB-LEDs knipperen toevallig.
Het programma
Het programma toont hoe weinig er geprogrammeerd hoeft to worden in Snap4Arduino om twee RGB-LEDs in willekeurige kleuren te laten knipperen. De nummers van de voor de LEDs gebruikte pennen zijn in een lijst opgeslagen. Een eindeloze lus zet een toevallig uit de lijst gekozen pen op waar en daarna een verdere willekeurig gekozen pen op niet waar. Zo kunnen alle mogelijke kleurcombinaties ontstaan.
Het programma 23blink laat twee
RGB-LEDs in vele kleuren knipperen.
24ste dag
Vandaag in de adventskalender
• Piezo-zoemer
De Piezo.zoemer die u vandaag in de adventskalender vindt, maakt elektrische trillingen hoorbaar. Indien met de pulserende gelijkspanning tussen de beide polen van de zoemer legt, dan begint deze te trillen. Afhankelijk van de frequentie zijn enkele klikken of een voortdurende toon te horen. Frequenties van weinig Hertz (trillingen per seconde) neemt het menselijke oor nog als aparte tonen waar, frequenties tussen ongeveer 20 Hertz en 16 kHertz worden als voortdurende toon van verschillende toonhoogte waargenomen.
BuzzerFirmata installeren
Snap4Arduino ondersteunt standaard geen piezo-zoemer, omdat deze op e Arduino ook niet ondersteunt wordt door de basissoftware StandardFirmata. Om met de piezo-zoemer tonen te verkrijgen uit Snap4Arduino, gebruiken wij een eigen versie van de actuele StandardFirmata, die is uitgebreid met de functies uit de Snap4Arduino-Firmata-Bibliotheek (github.com/mdcanham/Snap4Arduino-Firmata).
De installatie is zeer vergelijkbaar met de standaard installatie van Arduino, beschreven op de eerste dag:
1 Stop eerst Snap4Arduino en start de Arduino-IDE.
2 Laad via Bestand/Openen het bestand
BuzzerFirmata25.ino uit de downloads bij de adventskalender in de Arduino-IDE.
3 Klik op het symbool Uploaden in de bovenste symbolenlijst - het gaat hier om het ronde symbool met de pijl naar rechts. Dan wordt de
software gecompileerd en overgedragen naar de aangesloten Arduino.
4 Stop de Arduino-IDE en start
Snap4Arduino opnieuw.
Kerstmuziek
Componenten: 1x insteekprintplaat, 5x 20 MOhm weerstand (rood-zwart-blauw), 6x verbindingskabel, 6x boetseerkleicontact, 1x piezo-
zoemer
De vijf boetseerkleicontacten leveren vijf verschillende tonen. Natuurlijk kan de Arduino met de piezo-zoemer willekeurige tonen afspelen. Vele enkelvoudige melodieën komen uit met vijf tonen. Bovendien kunnen deze met de vijf vingers van een hand eenvoudig spelen, zonder dat men met de vingers van toets hoeft te wisselen.
Zo kan bijvoorbeeld het bekende kerstlied „Jingle Bells“ worden afgespeeld:
Jin-gle bells, jin-gle bells
e e e e e e
jin-gle all the way e g c d e
Oh what fun it is to ride in a f f f f f e e e
one horse o-pen sleigh. O!
e d d d d g
Jin-gle bells, jin-gle bells e e e e e e
jin-gle all the way e g c d e
Oh what fun it is to ride in a f f f f f e e e
one horse o-pen sleigh. e d d d d
Het programma
Het programma definieert aan het begin vijf variabelen met de frequenties van de vijf gebruikte tonen. Daarna wacht een eindeloze lus tot één van de boetseerkleicontacten wordt aangeraakt. Indien dit het geval is, wordt de toon afgespeeld en wordt er gewacht tot het contact weer wordt losgelaten. Dan wordt de toon beëindigd.
Omdat altijd slechts één toon kan worden afgespeeld, worden de boetseerkleicontacten in een lus na elkaar afgetast en niet in parallelle gestarte scriptblokken. Zo kan het niet gebeuren dat het programma probeert om meerdere tonen gelijktijdig af te spelen.
Snap4Arduino biedt de mogelijkheid om eigen blokken te definiëren en JavaScript-functies uit te voeren om daarmee gebruik te kunnen maken van in StandardFirmata gedefinieerde componenten. Het programma van de 24ste dag bevat twee van dergelijke blokken:
To o n a a n p e n . . . m e t f r e q u e n t i e . . . speelt een toon met een bepaalde frequentie af via een piezo-zoemer, die op de aangegeven pen is aangesloten.
Stop toon aan pen ... stopt het afspelen van een toon en maakt het zo mogelijk om een nieuwe toon af te spelen. Alvorens een andere toon wordt
afgespeeld, moet de lopende toon altijd eerst worden gestopt.
Loading...