In dit project laat ik jullie zien hoe je zelf een Arduino klok maakt
Met deze Arduino klok kan je de datum en tijd zien.
In dit project gebruiken we een 16×2 lcd-scherm, een real time clock module en een potentiometer. De real time clock (vanaf nu RTC) is eigenlijk een horloge maar dan in een elektronische vorm. Als de stroom wegvalt van de Arduino loopt de RTC nog door omdat deze dan op een klein baterijtje loopt. Zo kan hij voor 7 jaar de tijd bijhouden. Dit is vooral handig als je de Arduino klok op een batterij wilt laten lopen. Mocht de batterij opraken hoef je niet steeds de tijd goed te zetten. De potentiometer gebruiken wij om de felheid van het lcd-scherm te veranderen.
- Niveau – gemiddeld 45%
- Tijdsduur – 40/60 Min 45%
- Kosten – €48.85 euro compleet 30%
Stap 1: Benodigheden
Stap 2: Bouwen en Bedraden
Nu gaan we het project bouwen
We beginnen met het solderen van de pinheaders op de RTC. Doe dit volgens de onderstaande plaatjes. Als je goed kijkt zie je dat ik de RTC ondersteboven op het breadboard geplaatst heb. Dit heb ik gedaan zodat hij beter op het breadboard past aangezien mijn pinheaders niet lang genoeg waren. Je moet zelf kijken wat jij het makkelijkst vindt. Let er wel op dat je wel de juiste aansluitingen op de RTC gebruikt.
Nadat je de pinheaders hebt gesoldeerd kan je de componenten plaatsen volgens de tekening. Daarna kan je beginnen met het bedraden van de componenten en de Arduino.
Het is belangrijk dat je de juiste componenten op de juiste Arduino pins aansluit, anders werkt de code niet!
RTC -> Arduino Uno
SCL -> pin A5
SDA -> pin A4
VCC -> 5V
GND -> GND
LCD -> Arduino Uno
VSS -> GND
VDD -> 5V
VO -> potentiometer signal
RS -> pin 12
RW -> GND
E -> pin 11
D4 -> pin 5
D5 -> pin 4
D6 -> pin 3
D7 -> pin 2
A -> 5V
K -> GND
Stap 3: Programmeren
Nu je klaar bent met het bedraden en bouwen van je Arduino Alarm kan je beginnen met het programmeren van de Arduino Uno.
Voor deze code moeten wij ook een library toevoegen.
Een Library of Include file bevatten vaak code welke vaak hergebruikt kan worden in andere Sketches. Vaak zijn libraries (bibliotheken) een verzameling samenhangende functies gericht op een bepaalde toepassing. Bijvoorbeeld om een strip met LEDjes aan te sturen, speciale wiskundige functies of bijvoorbeeld om een LCD schermpje aan te sturen.
Wij gebruiken de library voor de RTC, anders weet hij niet wat hij moet doen.
Download de Library hier
Om de Library aan de IDE toe te voegen moeten we het mapje RTC kopieren of te verplaatsen naar de map libraries.
deze map is normaal te vinden in C:\Users\(naam)\Documents\Arduino\libraries
De code die hieronder staat kan je dan volledig kopiëren en plakken in de Arduino IDE.
Upload de code naar de Arduino Uno en kijk of deze werkt.
Als het goed is brand het lcd-scherm en staat hier de juiste datum en tijd op.
Met de potentiemeter kan je de felheid van het lcd-scherm veranderen.
Mocht het zo zijn de het lcd-scherm aan staat maar niks aangeeft moet je de potentiemeter naar links of rechts draaien.
Kopieer nu de onderstaande code in je Arduino programma, wij raden het aan om het zelf over te nemen aangezien je hier meer van leert.
#include <Wire.h>
#include <RTClib.h> // zorg ervoor dat je de map RTC in de goede libraries map zet
#include <LiquidCrystal.h>
RTC_DS1307 RTC;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
lcd.begin(16, 2);
// de volgende zin verzet de tijd van de RTC naar de tijd wanneer deze code geupload is naar de Arduino
RTC.adjust(DateTime(_DATE, __TIME_));
}
void loop () {
DateTime now = RTC.now();
lcd.setCursor(4,0);
lcd.print(now.day(), DEC);
lcd.print(‘/’);
lcd.print(now.month(), DEC);
lcd.print(‘/’);
lcd.print(now.year(), DEC);
lcd.print(‘ ‘);
lcd.setCursor (4,1);
lcd.print(now.hour(), DEC);
lcd.print(‘:’);
lcd.print(now.minute(), DEC);
lcd.print(‘:’);
lcd.print(now.second(), DEC);
lcd.print(‘ ‘);
delay(1000);
}
Ik hoop dat het je gelukt is om de Arduino klok te maken!
Nog een opmerking die ik aan dit project wil toevoegen: Het feit dat je telkens de RTC laadt met een oude datum als je de opstelling uit en weer aan zet is natuurlijk uitermate vreemd, waarom heb je dan uberhaupt een backupbatterij nodig. Je moet het laden van die datum er dus zeker uit halen als je de klok normaal wilt gebruiken. Je moet dan eigenlijk wel een of ander mechanisme ontwerpen om de klok in te kunnen stellen. Ik heb dat gedaan met een zgn. rotational encoder maar je kunt ook een paar drukknopjes aan je arduino verbinden.
De volgende dag opnieuw aangezet en toen bleek het toch te werken. Misschien moest het even wennen. Wel loopt de tijd nu 15 uur achter.
Dag Jan,
Bedankt voor uw reactie. Kunt u de code opnieuw uploaden? De actuele tijd wordt dan ook weer naar de Arduino geüpload.
Succes met het project!
Ik bedoel, bij mij zie ik nog geen tijd op het display verschijnen.
Zo werkt de code niet, om te beginnen moet je bij de printstatements geen rare qoutes gebruiken (open en close quotes) die horen in een tekstverwerker. Dus de quotes moeten hier allemaal vervangen worden door normale ascii quotes. Bovendien werkt het RTC.adjust(DateTime(_DATE, __TIME_)); ook niet, het moet (__DATE__ , __TIME__) zijn.
Ik heb hem nu gebouwd en het programma er in gezet maar bij zie ik nog een tijd op het display verschijnen.