Klocka, RTC DS1307 ange och Visa tiden på din LCD. (4 / 5 steg)
Steg 4: Ange rtc skissen från medlem WWC. ta detta.
Du måste ange din tid, ladda upp och sedan öppna följetong och slå y och skicka.//////////////////////////////////////////
RTC uppgifter och tid setter / /
// //
Detta prov program tillåter användaren / /
att ställa in datum och tid av en RTC / /
med hjälp av I2C. //
// //
Koder av: / /
eGizmo Mechatronix Central / /
Taft, Manila, Filippinerna / /
http://www.egizmo.com / /
Den 15 april, 2013 / /
///////////////////////////////////////////
#include < Wire.h >
CONST int DS1307 = 0x68; Adressen till DS1307 se datablad
CONST char * dagar [] =
{"Söndag", "Monday", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"};
CONST char * månader [] =
{"Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"};
Initierar alla värden:
byte näst = 0;
byte minut = 0;
byte timme = 0;
byte vardag = 0;
byte monthday = 0;
byte månad = 0;
byte år = 0;
void setup() {
Wire.BEGIN();
Serial.BEGIN(9600);
Delay(2000); Denna försening kan MCU att läsa aktuellt datum och tid.
Serial.Print ("aktuella datum och tid är:");
printTime();
Serial.println ("Please ändra till ny rad slutar inställningarna på det nedre högra hörnet av seriell övervaka");
Serial.println ("vill du ange datum och tid nu? Y/N");
tag (!. Serial.available()) delay(10);
om (Serial.read() == "y" || Serial.Read() == "Y")
Denna uppsättning funktioner tillåter användaren att ändra datum och tid
{
Serial.Read();
setTime();
Serial.Print ("aktuella datum och tid är nu:");
printTime();
}
Serial.println ("tack.");
}
Kontinuerlig funktion för konvertering av byte till decimaler och vice versa
void loop() {
}
byte decToBcd(byte val) {
tillbaka ((val/10 * 16) + (val % 10));
}
byte bcdToDec(byte val) {
tillbaka ((val/16 * 10) + (val % 16));
}
Denna uppsättning koder är tillåter datainsamling
void setTime() {
Serial.Print ("Skriv in aktuellt år, 00-99. - ");
år = 13.
Serial.println(Year);
Serial.Print ("Ange den aktuella månaden, 1-12. - ");
månad = 9.
Serial.println(months[month-1]);
Serial.Print ("Ange den aktuella dagen i månaden, 1-31. - ");
monthday = 20;
Serial.println(monthday);
Serial.println ("Ange den aktuella dagen i veckan, 1-7.");
Serial.Print ("1 solen | 2 mån | 3 tis | 4 Weds | 5 tors | 6 fre | 7 lör - ");
veckodag = 6;
Serial.println(Days[Weekday-1]);
Serial.Print ("Ange aktuell timme i 24 timmars format, 0-23. - ");
timme = 13.
Serial.println(Hour);
Serial.Print ("Ange den aktuella minut, 0-59. - ");
minut = 51.
Serial.println(Minute);
för det andra = 15.
Serial.println ("data har registrerats.");
Följande koder överför data till RTC
Wire.beginTransmission(DS1307);
Wire.write(byte(0));
Wire.write(decToBcd(Second));
Wire.write(decToBcd(Minute));
Wire.write(decToBcd(Hour));
Wire.write(decToBcd(Weekday));
Wire.write(decToBcd(monthday));
Wire.write(decToBcd(month));
Wire.write(decToBcd(Year));
Wire.write(byte(0));
Wire.endTransmission();
Ändarna överföring av data
}
byte readByte() {
tag (!. Serial.available()) delay(10);
byte läsning = 0;
byte incomingByte = Serial.read();
medan (incomingByte! = '\n') {
om (incomingByte > = "0" & & incomingByte < = '9')
läsning = läsning * 10 + (incomingByte - '0');
annat;
incomingByte = Serial.read();
}
Serial.flush();
returnera behandlingen.
}
void printTime() {
char buffer [3].
CONST char * AMPM = 0;
readTime();
Serial.Print(Days[Weekday-1]);
Serial.Print("");
Serial.Print(months[month-1]);
Serial.Print("");
Serial.Print(monthday);
Serial.Print (", 20);
Serial.Print(Year);
Serial.Print("");
om (timme > 12) {
dygnet-= 12.
AMPM = "PM";
}
annat AMPM = "AM";
Serial.Print(Hour);
Serial.Print(":");
sprintf (buffert, "% 02d", minut);
Serial.Print(buffer);
Serial.println(AMPM);
}
void readTime() {
Wire.beginTransmission(DS1307);
Wire.write(byte(0));
Wire.endTransmission();
Wire.requestFrom (DS1307, 7);
för det andra = bcdToDec(Wire.read());
minut = bcdToDec(Wire.read());
timme = bcdToDec(Wire.read());
veckodag = bcdToDec(Wire.read());
monthday = bcdToDec(Wire.read());
månad = bcdToDec(Wire.read());
år = bcdToDec(Wire.read());
}