Hey Allen,
Ik zit met volgende... Ik heb nog zeer weinig ervaring met de arduino-taal, ik beheers slechts de simpele zaakjes. Door van het net voorbeelden te plukken en te combineren ben ik er toch in geslaagd een werkende klok met RTC module te maken.
Nu zou ik dit graag uitbreiden zodat ik ze met behulp van druktoetsjes kan instellen.
Het geheel is aangesloten als volgt:
LCD op pinnen 12, 11, 5, 4, 3, 2 zoals in het voorbeeld op de site
RTC I2C op A4 en A5
volgende sketch:
#include "Wire.h"
#include <LiquidCrystal.h>
#define DS1307_I2C_ADDRESS 0x68
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
void getDateDs1307(byte *second,byte *minute,byte *hour,byte *dayOfWeek,byte *dayOfMonth,byte *month,byte *year)
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}
void setup()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
Wire.begin();
lcd.begin(16, 2);
}
void loop()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
String s, m, d, mth, h;
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
if (second < 10) { s = "0" + String(second); } else { s = String(second); }
if (minute < 10) { m = "0" + String(minute); } else { m = String(minute); }
h = String(hour);
if (dayOfMonth < 10) { d = "0" + String(dayOfMonth); } else { d = String(dayOfMonth); }
if (month < 10) { mth = "0" + String(month); } else { mth = String(month); }
char* days[] = { "NA", "Ma", "Di", "Wo", "Do", "Vry", "Zat", "Zon" };
lcd.clear();
lcd.setCursor(4,0);
lcd.print(h + ":" + m + ":" + s);
lcd.setCursor(1,1);
lcd.print(String(days[dayOfWeek]) + " " + d + "/" + mth + "/20" + year);
delay(1000);
}
Ik heb geen flauw idee hoe er aan te beginnen, want de gewijzigde tijd moet ook weer naar de RTC geschreven worden denk ik dan zo.....
Iemand die me op weg kan helpen?