Slimme Nutella lamp
In deze activiteit maken we een lamp die licht geeft op basis van het licht in de kamer. Het kleur van de lamp wordt bepaald door de temperatuur.

Wat hebben we nodig?
Benodigdheden
Gereedschappen

Versier de pot en wat doet de lamp?
Je kan deze activiteit starten met een lege Nutella of andere pot. Je kan de pot ook eerst etsen om een leuke figuur op het glas te krijgen.
We maken een lamp die licht geeft op basis van het licht in de kamer: veel licht, dan niet aan, schemerlicht, dan helder zodat licht toch te zien is, donker, dan zwak om sfeer te creeren.
We meten de temperatuur van de kamer ook, en passen hiermee de kleur van het licht aan. 20 graden of meer: rode kleuren, 16 graden of minder, blauwe kleuren. Als het de optimale 18 graden is, dan regenboog effect met alle kleuren.
We maken een lamp die licht geeft op basis van het licht in de kamer: veel licht, dan niet aan, schemerlicht, dan helder zodat licht toch te zien is, donker, dan zwak om sfeer te creeren.
We meten de temperatuur van de kamer ook, en passen hiermee de kleur van het licht aan. 20 graden of meer: rode kleuren, 16 graden of minder, blauwe kleuren. Als het de optimale 18 graden is, dan regenboog effect met alle kleuren.
Bepaal de weerstand
Start met het bepalen van welke weerstand nodig is om de LDR uit te lezen. Dit doe je door de weerstandwaarde te meten met een multimeter terwijl je de LDR met je vinger bedekt (in het donker dus). Schakel dan de LDR in serie met een weerstand van dezelfde waarde zoals verder beschreven.
Een LDR geeft een verschillende weerstandwaarde terug afhankelijk van de hoeveelheid lichtinval. Als het donker is, is de weerstand het grootst. Als we onze LDR uitmeten met een multimeter, heeft deze een weerstand van 16kOhm. We schakelen hem in serie met een andere weerstand van ongeveer sterkte, in ons geval een 15 kOhm.
Een LDR geeft een verschillende weerstandwaarde terug afhankelijk van de hoeveelheid lichtinval. Als het donker is, is de weerstand het grootst. Als we onze LDR uitmeten met een multimeter, heeft deze een weerstand van 16kOhm. We schakelen hem in serie met een andere weerstand van ongeveer sterkte, in ons geval een 15 kOhm.
Het elektrisch circuit
De LDR verbinden we met de GND pin en staat in serie met de weerstand die dan met de 5V verbonden is. Je verbindt dan ook de twee (zie schema) met de analoge A0 pin. Hiermee meten we de lichtinval. Als het donker is, zijn beide weerstanden gelijk, en wordt het voltage dus in twee gesplitst. We meten dan aan de A0 pin 2,5V. Is er veel licht, dan is de LDR een veel lagere weerstand dat de 16 kOhm en meten we dus aan de A0 pin een waarde die dichter bij 0V ligt dan bij 2,5V.
Een neopixel heeft een in en een uit kant. De in kant heeft 3 connecties, de GND, de VCC welke naar 5V gaat, en de input meestal aangeduid met DIN welke we verbinden met pin D2 van de nano.
De DHT11 of DHT22 heeft 4 pinnen. Koop deze evenwel op een PCB, dan zijn er 3 pinnen en is constructie gemakkelijker. Een pin is – of GND, een pin + of VCC welke opnieuw naar
Maak je constructie zodat alles in het deksel past, en je nog stroom kunt voorzien aan de Arduino. Hiertoe moet je solderen.
Een neopixel heeft een in en een uit kant. De in kant heeft 3 connecties, de GND, de VCC welke naar 5V gaat, en de input meestal aangeduid met DIN welke we verbinden met pin D2 van de nano.
De DHT11 of DHT22 heeft 4 pinnen. Koop deze evenwel op een PCB, dan zijn er 3 pinnen en is constructie gemakkelijker. Een pin is – of GND, een pin + of VCC welke opnieuw naar
5V gaat, en dan een out pint welke je verbindt met D8 van de nano. De DHT22 meet temperatuur nauwkeuriger dan de DHT11, en is daarom een beetje duurder.Maak je constructie zodat alles in het deksel past, en je nog stroom kunt voorzien aan de Arduino. Hiertoe moet je solderen.
Verbind de DHT sensor
Om het circuit te maken, heb je naast de componenten, 7 draadjes nodig alsook een soldeerbout, kniptang, striptang en kleine platte schroevendraaier.
Indien mogelijk, gebruik rode draden voor de aansluitingen naar 5V en zwarte draden voor de aansluitingen naar GND.
Knip de draadjes ongeveer 10 cm lang en strip de uiteinden, vertin ze dan.
Vertin dan de pootjes van de DHT22 en de eilandjes op de neopixel (enkel de 3 eilandjes aan de in kant zal je nodig hebben). Soldeer dan de draden eraan. Gebruik krimpkousen om kortsluitingen te vermijden en je werk proper te houden. Soldeer een poot van de LDR aan een poot van de weerstand en soldeer hierbij een draad die je dan met de A0 verbindt.
Indien mogelijk, gebruik rode draden voor de aansluitingen naar 5V en zwarte draden voor de aansluitingen naar GND.
Knip de draadjes ongeveer 10 cm lang en strip de uiteinden, vertin ze dan.
Vertin dan de pootjes van de DHT22 en de eilandjes op de neopixel (enkel de 3 eilandjes aan de in kant zal je nodig hebben). Soldeer dan de draden eraan. Gebruik krimpkousen om kortsluitingen te vermijden en je werk proper te houden. Soldeer een poot van de LDR aan een poot van de weerstand en soldeer hierbij een draad die je dan met de A0 verbindt.
Maak gaten in het deksel van de Nutella pot.
Beslis waar alles moet komen op de dop en gebruik een stift om aan te duiden waar de gaten voor het bevestigen van de stukken moeten komen. Maak dan ook een gat om de neopixel aan de binnenkant van de dop te kunnen doen. Steek de neopixel erdoor en connecteer dan de draden naar de juiste pinnen zoals aangegeven in het schema.
Sluit alle componenten aan.
Maak alle andere connecties zoals op het schema en gebruik dan M3 moeren (bij voorkeur nylon moeren) om alles aan de dop te bevestigen. De constructie zou nu zoals volgt moeten eruit zien, met de neopixel aan de binnenkant van de dop. Heb je geen moeren? Dan kan je ook lijmen.
Bedenk het algoritme.
Laat ons nu de lamp programmeren. Ons doel is zorgen dat het licht aangaat als het donker wordt en dat de lichtkleuren aangeven of de temperatuur in de kamer te warm,te koud of juist goed is.
De procedure die we gaan programmeren zal dus iets zoals het volgende zijn:
1. meet lichtintensiteit in de kamer
2. meet temperatuur in de kamer
3. bepaal wat de helderheid van de pixel moet zijn (geen helderheid betekent:licht uit!)
4. bereken de kleur die de pixel moet aannemen
5. fade van oude kleur naar nieuwe kleur
Voor het programmeren gebruiken we de grafische omgeving blokkencode.ingegno.be. Een basishandleiding van deze tool vind je op de site van Ingegno..
De procedure die we gaan programmeren zal dus iets zoals het volgende zijn:
1. meet lichtintensiteit in de kamer
2. meet temperatuur in de kamer
3. bepaal wat de helderheid van de pixel moet zijn (geen helderheid betekent:licht uit!)
4. bereken de kleur die de pixel moet aannemen
5. fade van oude kleur naar nieuwe kleur
Voor het programmeren gebruiken we de grafische omgeving blokkencode.ingegno.be. Een basishandleiding van deze tool vind je op de site van Ingegno..
Koppel de Arduino Nano en componenten met jouw PC.
Begin met het definiëren van je Arduino Nano en alle gebruikte pinnen, alsook seriële monitor output om de gemeten waarden te kunnen opvolgen.

Meet elke seconde de lichtinval.
Maak een effect om elke seconde de lichtinval te meten en de temperatuur te meten.

Geef de startwaarden in.
In het setup gedeelte van de code (
Arduino doe eerst) geven we beginwaarden voor alle variabelen, en zorgen we dat de neopixel af staat bij opstarten.
Link lichtinval aan helderheid van de neopixel.
Vervolgens maken we een functie die de gemeten lichtinval omzet naar de helderheid die we de neopixel willen geven. We voorzien 4 mogelijkheden, waarbij we bij dag de helderheid op 0 zetten, dus licht uit! Je kan de waarden van de helderheid (nacht, schemer, vallicht) aanpassen naar getallen tussen 0 en 255 indien je licht te zwak of te helder vindt.
Onze loop zal er dan als volgt uitzien:
1. meet licht
2. meet temperatuur
3. bepaal wat de helderheid van de pixel moet zijn
4. bereken de nieuwe kleur die de pixel moet aannemen
5. fade van oude kleur naar nieuwe kleur
Onze loop zal er dan als volgt uitzien:
1. meet licht
2. meet temperatuur
3. bepaal wat de helderheid van de pixel moet zijn
4. bereken de nieuwe kleur die de pixel moet aannemen
5. fade van oude kleur naar nieuwe kleur
Link de temperatuur en de kleur.
De laatste twee procedures moeten we nog maken. De procedure bepaal_volgende_kleur welke om de 2 seconden een nieuwe kleur berekent. Welke kleur dit is zal afhankelijk zijn van de temperatuur:
1. als dag: pixel uit
2. als > 20°C, dan is het te warm, we tonen een combinatie van rood en groen als volgende kleur. Rood zal overheersen.
3. als < 17°C, dat is het te koud in je kamer. We tonen een combinatie van blauw en groen als volgende kleur. Blauw zal overheersen
4. anders is de temperatuur perfect! We tonen een regenboogeffect die door alle kleuren op een aangename manier gaat.
De procedure om dit te doen zie je op de foto’s.
1. als dag: pixel uit
2. als > 20°C, dan is het te warm, we tonen een combinatie van rood en groen als volgende kleur. Rood zal overheersen.
3. als < 17°C, dat is het te koud in je kamer. We tonen een combinatie van blauw en groen als volgende kleur. Blauw zal overheersen
4. anders is de temperatuur perfect! We tonen een regenboogeffect die door alle kleuren op een aangename manier gaat.
De procedure om dit te doen zie je op de foto’s.
Programmeer de regenboog kleuren.
Om de regenboog te maken gebruiken we een teller. Om de twee seconden verhoogt de waarde van de teller met 1, en bekomen we een nieuwe kleur in onze regenboog. We doen dit als volgt:

Werk de regenboog codering af.
We zijn er bijna! We hebben een oude kleur in de variabelen R, G, B en de nieuw berekende kleur in de Nieuw variabelen. Elke twee seconden is er een nieuwe kleur, en we hebben de tijd bijgehouden waarop dit gebeurde met de variabele tijdKleurBepaald. We faden van de oude in de nieuwe kleur met een effect die elke 100 milliseconden loopt en over 1 seconde fade van oud naar nieuw, dan de voor 1 seconde de nieuwe kleur toont. De code hiervoor zie je op de foto.
Dit is het. Wil je deze code downloaden? Zie de downloads hieronder (.xml file). De .xml file kan je openen met blokkencode.ingegno.be. Ook de .ino file kan je downloaden voor gebruik in de Arduino IDE. Je kan deze aanpassen zoals je zelf wil!
Dit is het. Wil je deze code downloaden? Zie de downloads hieronder (.xml file). De .xml file kan je openen met blokkencode.ingegno.be. Ook de .ino file kan je downloaden voor gebruik in de Arduino IDE. Je kan deze aanpassen zoals je zelf wil!

Download hier de brondcode van het project.
Hier vind je nogmaals de link naar de broncodes van dit project:
Blokkencode XML file.
Arduino nano code.
Blokkencode XML file.
Arduino nano code.














