Sunteți pe pagina 1din 2

#include <WProgram.h>#include <Wire.h>#include <DS1307.h>#include <Debounce.

h>bo
olean pinstate = true; byte num_array[11]={ B00111111,B0000110,B01011011,B0100
1111,B01100110,B01101101,B01111101,B00000111,B01111111,B01101111,0};int rtc[7];
int dots_1 = 8;int dots_2 = 9;int reset_pin = 10;int clock_pin = 11;int date = 1
4;int up = 15;int down = 16;int set = 17;int dummy[7];int display_time[6];int di
splay_date[6];int position = 0;int blink_dots = 0; Debounce DATE = Debounce(20,d
ate);Debounce SET = Debounce (20,set);Debounce UP = Debounce(20,up);Debounce DOW
N = Debounce(20,down); void setup(){ DDRD=B11111111; pinMode(clock_pin,OUTPUT
); pinMode(reset_pin,OUTPUT); pinMode(dots_1,OUTPUT); pinMode(dots_2,OUTPUT);
digitalWrite(reset_pin,HIGH); digitalWrite(reset_pin,LOW); digitalWrite(dots
_1,HIGH); digitalWrite(dots_2,HIGH);} void loop(){ RTC.get(rtc,true); for(int
x = 0; x < 7; x++)
dummy[x] = rtc[x]; dummy[6]=dummy[6]-2000; display_time
[0] = dummy[2]/10; display_time[1] = dummy[2] - (display_time[0] * 10) ; displ
ay_time[2] = dummy[1]/10; display_time[3] = dummy[1] - (display_time[2] * 10) ;
display_time[4] = dummy[0]/10; display_time[5] = dummy[0] - (display_time[4]
* 10) ; if(blink_dots != display_time[5]){ pinstate = !pinstate; digitalWri
te(dots_1,pinstate); digitalWrite(dots_2,pinstate); blink_dots = display_tim
e[5] ; } for(int y = 0; y < 6; y++){
DATE.update();
SET.update();
if(
SET.read() == HIGH)
set_time();
if(DATE.read() == HIGH)
show_date()
;
if(position == 6){
digitalWrite(reset_pin,HIGH);
digitalWrite(res
et_pin,LOW);
position = 0;
}
PORTD = num_array[display_time[y]];
d
elayMicroseconds(800);
PORTD = 0;
digitalWrite(clock_pin,HIGH);
digital
Write(clock_pin,LOW);
position++; }} void show_date(){ int position_3 = 0;
digitalWrite(reset_pin,HIGH); digitalWrite(reset_pin,LOW); digitalWrite(dots
_1,HIGH); digitalWrite(dots_2,LOW); RTC.get(rtc,true); for(int a = 0; a < 7;
a++)
dummy[a] = rtc[a]; dummy[6]=dummy[6]-2000; display_date[0] = dummy[4]/
10; display_date[1] = dummy[4] - (display_date[0] * 10) ; display_date[2] = du
mmy[5]/10; display_date[3] = dummy[5] - (display_date[2] * 10) ; display_date[
4] = dummy[6]/10; display_date[5] = dummy[6] - (display_date[4] * 10) ; for(i
nt DELAY = 0; DELAY < 400; DELAY++){
for(int y = 0; y < 6; y++){
if(posi
tion_3 == 6){
digitalWrite(reset_pin,HIGH);
digitalWrite(reset_pin
,LOW);
position_3 = 0;
}
PORTD = num_array[display_date[y]];
delayMicroseconds(800);
PORTD = 0;
digitalWrite(clock_pin,HIGH);
digitalWrite(clock_pin,LOW);
position_3++;
} } digitalWrite(dots_2,
HIGH);} void set_time(){ int set_array[6]; int tag=0; byte pinmode = LOW; in
t time_mode = 0; delay(500); digitalWrite(dots_1,HIGH); digitalWrite(dots_2,H
IGH); RTC.get(rtc,true); for(int g = 0; g < 7; g++)
dummy[g] = rtc[g]; dum
my[6]=dummy[6]-2000; while(pinmode == LOW){
DATE.update();
if(DATE.read(
) == HIGH){
time_mode++;
delay(250);
}
switch (time_mode){
ca
se 0:
digitalWrite(dots_2,HIGH);
UP.update();
DOWN.update();
if(UP.read() == HIGH){
dummy[2]++;
}
if(DOWN.read() == HIGH){
dummy[2]--;
}
if(dummy[2] == -1)
dummy[2] = 23;
if(d
ummy[2] == 24)
dummy[2] = 0;
set_array[0] = dummy[2]/10;
set_arr
ay[1] = dummy[2] - (set_array[0] * 10) ;
set_array[2] = 10;
set_array[
3] = 10;
set_array[4] = 10;
set_array[5] = 10;
time_set_display(s
et_array);
break;
case 1:
UP.update();
DOWN.update();
if(
UP.read() == HIGH){
dummy[1]++;
}
if(DOWN.read() == HIGH){
dummy[1]--;
}
if(dummy[1] == -1)
dummy[1] = 59;
if(dummy
[1] == 60)
dummy[1] = 0;
set_array[0] = 10;
set_array[1] = 10;
set_array[2] = dummy[1]/10;
set_array[3] = dummy[1] - (set_array[2] * 1
0);
set_array[4] = 10;
set_array[5] = 10;
time_set_display(set_ar
ray);
break;
case 2:
digitalWrite(dots_2,LOW);
UP.update();
DOWN.update();
if(UP.read() == HIGH){
dummy[4]++;
}
if(
DOWN.read() == HIGH){
dummy[4]--;
}
if(dummy[4] == -1)
du
mmy[4] = 32;
if(dummy[4] == 33)
dummy[4] = 0;
set_array[0] = dum
my[4]/10;
set_array[1] = dummy[4] - (set_array[0] * 10);
set_array[2]
= 10;
set_array[3] = 10;
set_array[4] = 10;
set_array[5] = 10;
time_set_display(set_array);
break;
case 3:
UP.update();
DO
WN.update();
if(UP.read() == HIGH){
dummy[5]++;
}
if(DOWN.
read() == HIGH){
dummy[5]--;
}
if(dummy[5] == -1)
dummy[5

] = 12;
if(dummy[5] == 13)
dummy[5] = 0;
set_array[0] = 10;
set_array[1] = 10;
set_array[2] = dummy[5]/10;
set_array[3] = dummy[5
] - (set_array[2] * 10);
set_array[4] = 10;
set_array[5] = 10;
ti
me_set_display(set_array);
break;
case 4:
UP.update();
DOWN.up
date();
if(UP.read() == HIGH){
dummy[6]++;
}
if(DOWN.read(
) == HIGH){
dummy[6]--;
}
if(dummy[6] == -1)
dummy[6] = 9
9;
if(dummy[6] == 100)
dummy[6] = 0;
set_array[0] = 10;
set
_array[1] = 10;
set_array[2] = 10;
set_array[3] = 10;
set_array[4
] = dummy[6]/10;
set_array[5] = dummy[6] - (set_array[4] * 10);
time_s
et_display(set_array);
break;
case 5:
time_mode = 0;
break;
}
SET.update();
pinmode = SET.read(); } RTC.stop(); RTC.set(DS1307_MI
N,dummy[1]); RTC.set(DS1307_HR,dummy[2]); RTC.set(DS1307_DATE,dummy[4]); RTC.
set(DS1307_MTH,dummy[5]); RTC.set(DS1307_YR,dummy[6]); RTC.start(); digitalWr
ite(dots_2,HIGH); delay(200);} void time_set_display(int data_array[]){ int po
sition_2 = 0; digitalWrite(reset_pin,HIGH); digitalWrite(reset_pin,LOW); for(
int xlk=0;xlk<25;xlk++){ for(int j = 0; j < 6; j++){
if(position_2 == 6){
digitalWrite(reset_pin,HIGH);
digitalWrite(reset_pin,LOW);
position
_2 = 0;
}
PORTD = num_array[data_array[j]];
delayMicroseconds(800);
PORTD = 0;
digitalWrite(clock_pin,HIGH);
digitalWrite(clock_pin,LOW);
p
osition_2++; }}

S-ar putea să vă placă și