Hi all,
I managed to build a LED watch using 4 7-segment (HH:MM) displays with 4 PNP transistors (3906). I was trying to implement the RTC 1307 into the whole picture because i ddint want to have button for adjusting time once the watch was disconnected from power supply. I used the schematics for RTC 1307 from ladyada site DS1307 RTC tutorial.
I hit the wall in writing code, basicly I want to read data (exp. Serial.println(now.hour()); from RTC and feed it to the LED display.
here is the code snippet from the main program. I'm also posting the schematics
int tra1= 12; //first tranzistor...
int tra2 = 13; //second and so on..
int tra3 = 11;
int tra4 = 10;
#define G 2
#define S 3
#define A 5
#define B 6
#define E 7
#define D 8
#define C 9
#define DP 4
int timer=0;
int j=0;
// functions to display digits
void digit0 () {
// for 0 needed to turn ON F A B C D E segments, so:
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(S, LOW);
//////////////////////// G segment should be turn OFF
digitalWrite(G, HIGH);
};
void digit1 () {
digitalWrite(A,HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(S, HIGH);
digitalWrite(G, HIGH);
};
void digit2 () {
digitalWrite(A,LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(S, HIGH);
digitalWrite(G, LOW);
};
void digit3 () {
digitalWrite(A,LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(S, HIGH);
digitalWrite(G, LOW);
};
void digit4 () {
digitalWrite(A,HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(S, LOW);
digitalWrite(G, LOW);
};
void digit5 () {
digitalWrite(A,LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(S, LOW);
digitalWrite(G, LOW);
};
void digit6 () {
digitalWrite(A,LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(S, LOW);
digitalWrite(G, LOW);
};
void digit7 () {
digitalWrite(A,LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(S, HIGH);
digitalWrite(G, HIGH);
};
void digit8 () {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(S, LOW);
digitalWrite(G, LOW);
};
void digit9 () {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(S, LOW);
digitalWrite(G, LOW);
};
//function to display digit from inputed int
void showdigit (int digit)
{
switch (digit) {
case 0:
digit0 ();
break;
case 1:
digit1 ();
break;
case 2:
digit2 ();
break;
case 3:
digit3 ();
break;
case 4:
digit4 ();
break;
case 5:
digit5 ();
break;
case 6:
digit6 ();
break;
case 7:
digit7 ();
break;
case 8:
digit8 ();
break;
case 9:
digit9 ();
break;
default:
break;
};
}
/*
// showing 4 digits
void showdigits (int number)
{
// e.g. we have "1234"
showdigit(number/1000); // segments are set to display "1"
digitalWrite(bla, LOW); // first digit on,
digitalWrite(bla1, HIGH); // other off
digitalWrite(bla2, HIGH);
digitalWrite(bla3, HIGH);
delay (1);
number = number%1000; // remainder of 1234/1000 is 234
digitalWrite(bla, HIGH); // first digit is off
showdigit(number/100); //// segments are set to display "2"
digitalWrite(bla1, LOW); // second digit is on
delay (1); // and so on....
number =number%100;
digitalWrite(bla1, HIGH);
showdigit(number/10);
digitalWrite(bla2, LOW);
delay (1);
number =number%10;
digitalWrite(bla2, HIGH);
showdigit(number);
digitalWrite(bla3, LOW);
delay (1);
};
*/
void setup()
{
Serial.begin(57600);
Wire.begin();
RTC.begin();
pinMode(pin, INPUT);
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(S, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(tra1, OUTPUT);
pinMode(tra2, OUTPUT);
pinMode(tra3, OUTPUT);
pinMode(tra4, OUTPUT);
};
hope somone can help me out. thanks in advance!