Arduino Binary Clock (timmar, minuter och sekunder) (3 / 4 steg)
Steg 3: RTClib
http://Arduino-info.wikispaces.com/DS1307_RealTime_Clock_Brick
Din RTC kommer lastat med en gång. ibland med lokal tid från Kina. Om du vill ändra tid, gå till th, ansluta din RTC (webbplatsen visas i diagrammet) och köra följande kod:
Arduino 1.0 + endast
Arduino 1.0 + endast
#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte noll = 0x00; problemet #527
void setup() {
Wire.BEGIN();
Serial.BEGIN(9600);
setDateTime(); MÅSTE KONFIGURERA I FUNKTION
}
void loop() {
printDate();
Delay(1000);
}
void setDateTime() {
Redigera här datum och tid
byte näst = 20; 0-59
byte minut = 27. 0-59
byte timme = 22. 0-23
byte vardag = 26. 1-7
byte monthDay = 22. 1-31
byte månad = 11; 1-12
byte år = 13. 0-99
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(Zero); stoppa Oscillator
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(Zero); Start
Wire.endTransmission();
}
byte decToBcd(byte val) {
Konvertera normala decimaltal till binary coded decimal
tillbaka ((val/10 * 16) + (val % 10));
}
byte bcdToDec(byte val) {
Konvertera binary coded decimal till normala decimaltal
tillbaka ((val/16 * 10) + (val % 16));
}
void printDate() {
Återställ registret pekaren
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(Zero);
Wire.endTransmission();
Wire.requestFrom (DS1307_ADDRESS, 7);
int näst = bcdToDec(Wire.read());
int minut = bcdToDec(Wire.read());
int timme = bcdToDec(Wire.read() & 0b111111); 24 timmars tid
int vardag = bcdToDec(Wire.read()); 0-6-> söndag - lördag
int monthDay = bcdToDec(Wire.read());
int månad = bcdToDec(Wire.read());
int år = bcdToDec(Wire.read());
skriva ut datum EG 3/1/11 23:59:59
Serial.Print(month);
Serial.Print("/");
Serial.Print(monthDay);
Serial.Print("/");
Serial.Print(Year);
Serial.Print("");
Serial.Print(Hour);
Serial.Print(":");
Serial.Print(Minute);
Serial.Print(":");
Serial.println(Second);
}