Project: Arduino Knight Rider
Benodigde onderdelen
Benodigde onderdelen
Arduino Knight Rider | de schakeling
Op de volgende pagina vindt u een duidelijk schema van de schakeling.
- Plaats een draadbrug tussen de 5V-aansluiting van uw Arduino en de rood gemarkeerde strook op het breadboard. Het maakt niet uit welke draadbrug u hiervoor kiest.
- Plaats een draadbrug tussen de GND-aansluiting van uw Arduino en de blauw gemarkeerde strook op het breadboard.
// De eerste stap bij het bouwen van vrijwel iedere schakeling is het aansluiten van de voeding op het breadboard. De 5V- en GND-aansluiting van uw Arduino dienen in dit project als voeding, deze worden doorverbonden naar het breadboard waardoor ook hier spanning op staat.
- Plaats de rode LED’s naast elkaar op het breadboard, let daarbij goed op de polariteit (+/-) van de LED’s en verbind de pootjes tussen twee stroken op het breadboard.
- Plaats draadbruggen tussen de anode (+) van de LED’s en digitale I/O 2 tot en met 6 op de Arduino (doe dit op volgorde, anders knipperen de LED’s straks niet zoals gewenst).
// U sluit de anode van de LED’s via een draadbrug aan op de Arduino en niet op 5V omdat u de LED’s wilt aansturen met de Arduino op basis van tijd.
- Plaats bij iedere rode LED een weerstand van 150 Ohm (bruin/groen/bruin) tussen de kathode (-) van de LED en de blauwe GND-strook van het breadboard.
// De rode LED heeft een voorschakelweerstand van 150 Ohm nodig om niet teveel spanning over de LED te laten lopen (deze is geschikt voor maximaal 2,25V).
- Plaats de potmeter over het midden van uw breadboard. Zorg ervoor dat de zijde met twee pinnen aan de kant van de LED’s zit. De enkele pin wordt aan de overzijde in het breadboard geplaatst.
- Plaats een draadbrug tussen de linkerpin van de potmeter en de 5V van het breadboard.
- Plaats een draadbrug tussen de rechterpin van de potmeter en de GND van het breadboard.
- Plaats een draadbrug tussen de achterste pin van de potmeter en de A1 van de Arduino.
// Een potmeter is een spanningsdeler, maar dan in één behuizing. Door te draaien aan de as wijzig je de uitgangsspannning. De uitgangsspanning loopt in dit geval richting de analoge A1-aansluiting van de Arduino.
Arduino Knight Rider | de sketch
U gaat nu de sketch schrijven om alle verschillende onderdelen van de hardware aan te sturen.
Open hiervoor de Arduino software op uw computer. Er opent vanzelf een lege sketch.
We gaan nu stap-voor-stap de verschillende onderdelen van de sketch bespreken.
U heeft veel aansluitingen gebruikt in uw opstelling. Om de sketch begrijpelijk te houden, is het makkelijk om deze aansluitingen een naam te geven. U hoeft dit niet per se te doen (u kunt verderop in de sketch ook verwijzen naar het nummer van de I/O). Het benoemen van de I/O’s houdt uw sketch echter wel een stuk overzichtelijker.
Wat nu volgt is de setup(), hier geeft u eenmalig aan wat de juiste instellingen voor deze sketch zijn.
Geef aan dat de aansluitingen die u in de vorige stap hebt aangeduid als led1 tot en met led6 dienen als uitgang (output) in deze sketch. We benoemen ze hier allemaal afzonderlijk om het begrijpelijk te houden. U kunt ze echter ook allemaal tegelijkertijd benoemen via een zogenaamde ‘for loop’. U bespaart daarmee wat code én dus geheugen (zie het Arduino thermometer project voor een dergelijke ‘for loop’).
De sketch komt nu aan bij het loop() gedeelte waar daadwerkelijke acties zich keer op keer herhalen.
Als eerste maakt u hier een waarde aan genaamd ‘snelheidsRegelaar’. Dit is de analoge waarde (een cijfer tussen 0 en 1024) die wordt uitgelezen bij de potmeter. Deze waarde gaat u vervolgens gebruiken om de snelheid van het knipperen te bepalen.
Nu gaan we de waarde uit de vorige stap omrekenen. Als u de snelheid 0 zou gebruiken, dan knipperen de LED’s namelijk niet. De snelheid 1024 gaat zo snel dat het bijna niet te zien is. Via de ‘map’ functie zet u de waarde tussen 0-1024 om naar een nieuwe waarde tussen de 50-500. Draait u de potmeter helemaal terug, dan wordt de waarde 50. Draait u de potmeter volledig open, dan wordt de waarde 500.
De waarde van 50 komt tijdens de sketch overeen met 50 milliseconden. De waarde 500 komt overeen met 500 milliseconden (oftewel ½ seconde). Door de waarde op deze plek te veranderen zal de potmeter tijdens het uitvoeren van de sketch anders reageren. Test dit na de tijd zelf maar eens.
Het is nu tijd om de LED’s te laten knipperen. Het knipperende effect krijg je door de LED aan te zetten (de digitale poort krijgt de waarde HIGH). Vervolgens pauzeert u even (delay). De LED blijft nu branden. De volgende stap is het uitzetten van de LED (de digitale poort krijgt de waarde LOW).
Dit doet u voor alle LED’s afzonderlijk. De volgorde in de sketch is ook de volgorde van knipperen in het uiteindelijke project. U gaat daarom eerst led1 tot en met led5 laten knipperen, om vervolgens weer terug te gaan door led4 tot en met led1 te laten knipperen (u gaat dus heen- en weer).
Ook hier zou u een ‘for loop’ kunnen gebruiken. Om duidelijk te zien wat er gebeurt tijdens het uitvoeren van de sketch kiest u daar nu niet voor.
Het haakje } dient als afsluiting van de loop(). U heeft deze namelijk ook geopend met een haakje {.
Arduino Knight Rider| uitvoeren van de sketch
Sluit nu de Arduino via de USB-kabel aan op de computer. U zult zien dat het ON-lampje gaat branden. Nu kun je de sketch uploaden naar de Arduino via de upload-knop in de software. De RX/TX-lampjes gaan even knipperen, vervolgens ziet u in de software staan dat de upload is geslaagd. De LED’s zullen nu gaan knipperen!
Draai nu eens aan de potmeter. U zult zien dat het effect vertraagt of versnelt. Dit komt doordat u de snelheid zelf bepaalt via de geprogrammeerde ‘delay’ in uw sketch.
// Er kleeft een nadeel aan de ‘delay’ functie. De Arduino doet op die momenten ook echt niets. Wanneer je aan de potmeter draait zal de Arduino eerst de hele loop uitvoeren (inclusief alle tijdrovende delays) om vervolgens pas de snelheid te wijzigen aan het begin van de loop. Voor dit project maakt het gelukkig weinig uit. Wil je dat de Arduino altijd paraat staat, dan zul je op een andere (lastiger) manier met tijd moeten werken. De millis () functie uit het volgende project (Arduino alarmsysteem) is daar een mooi voorbeeld van.
Bekijk ook de andere projecten:
Project: Arduino schakelaar
Bouw een eenvoudige lichtschakelaar met behulp van Arduino.
> Bekijk het project
Project: Arduino Nachtlampje
Bouw het bekende Knight Rider lichteffect na met een Arduino.
> Bekijk het project