/*---- created 27 Oct 2016 by dd647 -------*/ int DAT_pin = 3; int CLK_pin = 4; int RST_pin = 2; void set(int c, int v){ digitalWrite(CLK_pin, LOW); digitalWrite(RST_pin, HIGH);//-----------HIGH shiftOut(DAT_pin, CLK_pin, LSBFIRST, c);//Command write shiftOut(DAT_pin, CLK_pin, LSBFIRST, v);//set time digitalWrite(RST_pin, LOW);//-------------LOW } int read_t(int c){ int Bit = 0; int v = 0; digitalWrite(CLK_pin, LOW); digitalWrite(RST_pin, HIGH);//-----------HIGH shiftOut(DAT_pin, CLK_pin, LSBFIRST, c);//Command read for (int i = 0; i < 8; ++i)//read time { Bit = digitalRead(DAT_pin); Serial.print(Bit); v |= (Bit << i); digitalWrite(CLK_pin, HIGH); delayMicroseconds(1); digitalWrite(CLK_pin, LOW); } digitalWrite(RST_pin, LOW);//-------------LOW Serial.print(" "); int t = (v & 15) + (10 * (v >> 4)) ; return(t); } void setup() { pinMode(CLK_pin,OUTPUT); pinMode(RST_pin,OUTPUT); Serial.begin(9600); Serial.println("reset time ? [y or n]"); while(Serial.available() == 0){} int c = Serial.read(); if(c == 121){ pinMode(DAT_pin,OUTPUT);//----------------OUTPUT set(128,72);//Seconds set to 48 set(130,89);//Minutes set to 59 set(132,35);//Hour set to 23 set(134,49);//Date set to 31 set(136,16);//Month set to 10 set(140,22);//Year set to 16 pinMode(DAT_pin, INPUT);//----------------INPUT }else{ pinMode(DAT_pin, INPUT);//----------------INPUT } Serial.println(" s| 10s| m| 10m| h| 10h| d| 10d|"); } void loop() { int S = read_t(129);//read Second int MI = read_t(131);//read Minute int H = read_t(133);//read Hour int D = read_t(135);//read Date int MO = read_t(137);//read Month int Y = read_t(141);//read Year Serial.print(" "); Serial.print(S); Serial.print("s "); Serial.print(MI); Serial.print("mi "); Serial.print(H); Serial.print("h "); Serial.print(D); Serial.print("d "); Serial.print(MO); Serial.print("mo "); Serial.print("20"); Serial.print(Y); Serial.println("y "); delay(1000); }