Tijd instellen

Hallo ik ben nieuw op het forum en best nieuw in de arduino wereld. Ik ben bezig met een simpel project, maar heb wat hulp nodig die ik niet snel kan vinden.

Ik maak nu een lamp (voor ouderen/ mensen die gehandicapt zijn). Deze lamp heeft geen aan en uit knop, maar maakt gebruik van een lichtsensor. De lamp gaat dus aan wanneer er weinig lichtval is in de desbetreffende ruimte. Nou vroeg ik me af of ik ook tijd kan instellen op de arduino board. Trouwens in combinatie met tinkerkit. Geen LCD scherm. Alleen de lamp en het boardje.

Anders zou de lamp namelijk de hele nacht aanstaan en ik wil dat uitfilteren.

Met vr. gr, Sjaakie

Of je nu tinkerkit of zelf een shield maakt, dat is om het even. Wel heb je een Real time Click (RTC) nodig die kijkt wat de echte tijd is. En hoe je gaat communiceren met het board is mij ook niet duidelijk. je hebt immers ook te maken met zomer/winter tijd en er moet iets zijn dat relevant is. Verder is het wel een relatief kostbare oplossing omdat de Arduino de hele tijd aanstaat terwijl hij alleen actief is in de schemertijd. Met de RTC geef je de uiterste tijd en vroegste tijd aan. Verder kun je een relais gebruiken of een triac (wel optisch scheiden) om het aan te schakelen. Die tinkerkit is wel een dure oplossing en uiteindelijk zul je, als je dit wilt commercialiseren naar een veiligere oplossing moeten.

Dit is meer een klein projectje om te testen. Ik hoopte door middel van een #include <time.h> (bijvoorbeeld) en bijbehorende code dit toe te kunnen passen. Dit is de code die ik tot noch toe heb, maar hier komt nog stukje code bij om een echte lamp te vebrinden d.m.v een relay in plaats van ‘LedLamp’:

#include <TinkerKit.h>

TKLightSensor ldr(I0); // Maak Lightsensor ‘ldr’ op port I0.
TKLightSensor actie(I0);
int waarde;

TKLed ledGroen(O0); // Maak ledGroen(O0) aan op port O0.
TKLed ledLamp(O1); // Maak ledLamp(O1) aan op port O1.
TKLed ledRood(O2); // Maak ledRood(O2) aan op port O2.

void setup(void)
{
Serial.begin(9600); // initialiseerd seriele verbinding bij 9600 bps.
}

void loop(void)
{
int helderheidswaarde = ldr.read(); // store the ldr values into a variable called brightnessVal.
waarde = actie.read();

if (waarde < 100) // Als de lichtwaarde minder dan 100 is, gaat het groene lampje en de LAMP aan.
{
ledGroen.on();
ledLamp.on();
ledRood.off();
}

else // Als de lichtwaarde gelijk aan of meer dan 100 is, blijft het licht op rood.
{
ledLamp.off();
ledGroen.off();
ledRood.on();
}
}

Zo ver om te kijken naar zomer en of winter tijd hoeft nog niet perse. Ik wil nu puur alleen nog even dat er bijvoorbeeld van 10uur s’avonds tot 7uur s’ochtends niet gekeken wordt of er genoeg licht is.

Alvast bedankt voor uw reactie!
Sjaakie

Als je boardje toch de gehele tijd aan staat, kun je de nterne klok wel gebruiken maar erg nauwkeurig is ze niet. Als je hem met de week gelijk zet werkt dat prima, en heb je geen rtc plus batterij nodig. Maar als de stroom er dan af gaat, staat ie weer op 00:00

En door middel van welke library kan ik die gebruiken? Ik lees op internet namelijk ook steeds dat de tijd dan op de lcd geprint wordt, maar ik wil dat niet gebruiken. Sterker nog ik heb geen lcd (nodig).

De library voor de RTC leest/schrijft alleen de tijd. Dat zijn gewone functies als klok.minute(), klok.hour() etc. Dus ff googelen op RTC + arduino. De voorbeelden displayen vaak naar een LCD. Maar dat hoef jij niet te doen. Vrijwel alle bibliotheken lezen en schrijven alleen naar de functionaliteit van het desbetreffende component. Het is jouw programma die bepaalt wat er met de data moet gebeuren.

hier een goede tutorial over RTC - http://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit -

Je zou ook naast een schemer detector ook een bewegings detector kunnen doen, geen beweging => lamp uit.

of als er beweging is geweest maximaal een half uur extra aan.
half uur geen beweging => uit.

Hoewel als iemand rustig TV zit te kijken…

Dan zit je wel héél rustig tv te kijken. Moet je niet af en toe een slok nemen, of de AB oprapen (die viel nèt van de bank, zeg)