Project: Arduino nachtlampje
Benodigde onderdelen:
- 1 Witte LED
- 1 Weerstand 68 Ohm
- 1 Lichtsensor (LDR)
- 1 Weerstand 10 kOhm
- 1 Potmeter
- 6 Draadbruggen
- 1 Breadboard
Arduino nachtlampje | 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 rij 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 witte LED op het breadboard, let daarbij goed op de polariteit (+/-) van de LED en verbind de pootjes tussen twee stroken op het breadboard.
- Plaats een draadbrug tussen de anode (+) van de LED en digitale I/O 2 op de Arduino.
// U sluit de anode van de LED via een draadbrug aan op de Arduino en niet op 5V omdat u de LED wilt aansturen met de Arduino op basis van input (de lichtsensor).
- Plaats een weerstand van 68 Ohm (blauw/grijs/zwart) tussen de kathode (-) van de LED en de blauwe GND-strook van het breadboard.
// Deze LED heeft een voorschakelweerstand van 68 Ohm nodig om niet teveel spanning over de LED te laten lopen (deze is geschikt voor maximaal 3,6V).
- Plaats de lichtsensor tussen twee stroken van het breadboard, polariteit speelt hier geen rol.
- Plaats een draadbrug tussen de 5V van het breadboard en de linkerpin van de lichtsensor.
- Plaats een weerstand van 10 kOhm (bruin/zwart/oranje) tussen de rechterpin van de lichtsensor en de GND-strook op het breadboard.
- Plaats een draadbrug tussen de rechterpin van de lichtsensor en de A0 op uw Arduino.
// De lichtsensor gaat samen met de weerstand functioneren als spanningsdeler. Met deze spanningsdeler kunt u de uitgangsspanning regelen en zo de bijbehorende waarde uitlezen vanaf de lichtsensor.
- Plaats de potmeter over het midden van je breadboard. Zorg ervoor dat de zijde met twee pinnen aan de kant van de LED’s zitten. 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 A1van de Arduino.
// Een potmeter is een spanningsdeler, maar dan in één behuizing. Door te draaien aan de as wijzigt u de uitgangsspannning. De uitgangsspanning loopt in dit geval richting de analoge A1-aansluiting van de Arduino.
Arduino nachtlampje | 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 drie aansluitingen gebruikt in uw opstelling. Om de sketch begrijpelijk te houden, is het makkelijk om deze aansluitingen een naam te geven. Deze aansluiting verandert niet (het is een constante) en heeft een numerieke waarde (integer). De LED is bijvoorbeeld aangesloten op aansluiting 2.
Wat nu volgt is de setup(), hier geeft u eenmalig aan wat de juiste instellingen voor deze sketch zijn. Met de code Serial.begin(9600); opent u een seriële verbinding met de computer. Via deze verbinding kunt u straks alle relevante waarden uitlezen op het beeldscherm van uw computer. De toevoeging (9600) staat voor de snelheid (de baudrate) waarmee de communicatie verloopt en is een veelgebruikte waarde.
Verder geeft u hier aan dat de aansluiting die u in de vorige stap hebt aangeduid als LED dient als uitgang (output) in deze sketch. De sensor en potmeter worden gebruikt als ingang (input).
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 ‘drempelWaarde’. Dit is de analoge waarde (tussen 0 en 1024) die wordt uitgelezen bij de uitgang van de potmeter. Deze waarde gebruikt u om aan te geven of het donker genoeg is. Via de Serial.print code toont u deze waarden op het beeldscherm van uw computer. Een waarde tussen “aanhalingstekens“ wordt letterlijk als tekst overgenomen. De “ | “ gebruikt u hier alleen als scheidingsteken voor een betere leesbaarheid op de computer.
U maakt vervolgens een waarde aan genaamd ‘sensorWaarde’. Dit is de analoge waarde (tussen 0 en 1024) die wordt uitgelezen vanaf de lichtsensor. Ook deze waarde gaat u straks weergeven op het beeldscherm van uw computer.
In de vorige stappen worden de invoerwaarden (de input) van uw schakeling uitgelezen. Deze gaat u nu gebruiken om een concrete actie uit te voeren (de output).
U begint met het creëren van een voorwaarde. Namelijk; als (if) de gemeten sensorWaarde kleiner is dan de gemeten drempelWaarde. Als aan deze voorwaarde wordt voldaan, dan wordt er spanning gezet op de LED-aansluiting. Dit doet u door deze digitale uitgang op ‘HIGH’ te zetten.
Om inzicht te krijgen in wat er gebeurt, wilt u ook op het beeldscherm laten zien dat aan de voorwaarde wordt voldaan. Dit doet u in dit geval door aan te geven dat het nachtlampje aan staat. Let op; u gebruikt hier Serial.println, de toevoeging ln (lees; el-en) geeft een regeleinde aan. Alles na deze Serial.println begint daarmee op een nieuwe regel.
U heeft nu een voorwaarde gecreëerd. Het kan dan ook gebeuren dat hier niet aan wordt voldaan. Dit doet u met een de voorwaarde ‘else’. Als de sensorwaarde dus niet lager is dan de drempelWaarde, dan wilt u geen spanning op de LED-uitgang. Dit doet u door de digitale uitgang op ‘LOW’ te zetten.
Ook hier wilt u via de computer zien wat er gebeurt. Gebruik daarom ook hier de Serial.println toevoeging voor de seriële communicatie.
U bent nu aan het einde van de loop() beland. De Arduino gebruikt in deze sketch een aantal analoge waarden. Deze worden intern omgezet naar digitale waarden om goed verwerkt te kunnen worden. Dit verloopt via een ADC (Analog-to-Digital-Converter). Om deze ADC zijn werk goed te laten doen en om knipperen van de LED te voorkopen voegen we een vertraging toe. Als u deze op 1000 milliseconden zet wacht de sketch hier een seconde en begint daarna weer van voor af aan.
Het haakje } dient als afsluiting van de loop(). U heeft deze namelijk ook geopend met een haakje {.
Arduino nachtlampje | 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 kunt u 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. Het nachtlampje is klaar voor gebruik!
Open als eerste de Serial Monitor via de Arduino software (Hulpmiddelen-> Seriële Monitor). Dit hulpmiddel laat zien wat er in uw project gebeurt, dat hebben we immers zelf aangegeven in de sketch.
Draai nu eens aan de potmeter. U zult zien dat de drempelwaarde verandert. Zodra de gemeten hoeveelheid licht op de lichtsensor onder de drempelwaarde zakt, gaat het nachtlampje aan. Test dit zelf ook maar eens door uw hand boven de lichtsensor te houden. U zult zien dat de waarde verandert.
U heeft nu zelf een nachtlampje gebouwd. U kunt hetzelfde principe natuurlijk ook gebruiken als schemerschakelaar in verschillende andere projecten!