Manual Adjust For RTC Clock With Arduino and 7-Segment LED
Manual Adjust For RTC Clock With Arduino and 7-Segment LED
OUTPUT);
OUTPUT);
OUTPUT);
OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.println("test for niq_ro");
pinMode(SW0, INPUT); // for this use a slide switch
pinMode(SW1, INPUT); // N.O. push button switch
pinMode(SW2, INPUT);
}
void loop() {
digitalWrite(segDP, HIGH);
DateTime now = RTC.now();
int timp = now.hour()*100+now.minute();
//
int timp = (now.minute(), DEC);
//
displayNumber(12); // this is number to diplay
//
int timp = 1234;
Serial.print(now.hour(), DEC);
Serial.print(":");
Serial.print(now.minute(), DEC);
Serial.print(" -> ");
Serial.print(timp);
Serial.println(" !");
// display parts
for(int i = 250 ; i >0 ; i--) {
if (timp > 1000) displayNumber01(timp);
else displayNumber02(timp);
}
for(int i = 250 ; i >0 ; i--) {
if (timp > 1000) displayNumber03(timp);
else displayNumber04(timp);
}
if (!(digitalRead(SW0))) set_time(); // hold the switch to set time
}
void set_time()
{
byte minutes1 = 0;
byte hours1 = 0;
byte minutes = 0;
byte hours = 0;
while (!digitalRead(SW0))
exit
{
minutes1=minutes;
hours1=hours;
//
}
}
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
}
}
}
}
}
void displayNumber04(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
lightNumber(10);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
}
}
switch (numberToDisplay){
case 0:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
case 1:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
case 2:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
case 3:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_ON);
case 4:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
case 5:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
case 6:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
case 7:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
case 8:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
case 9:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
}
}
/*
4 digit 7 segment display: http://www.sparkfun.com/products/9483
Datasheet: http://www.sparkfun.com/datasheets/Components/LED/7Segment/YSD-439AR6B-35.pdf
7 segments + 4 digits + 1 colon = 12 pins required for full control
*/
// modified connexion by niq_ro from http://nicuflorica.blogspot.com
// for my Luckylight KW4-563ASA
// dataseet:
http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4563XSA.pdf
int digit1 =
right side)
int digit2 =
int digit3 =
int digit4 =
side)
pinMode(digit2, OUTPUT);
pinMode(digit3, OUTPUT);
pinMode(digit4, OUTPUT);
//
pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.println("test for niq_ro");
pinMode(SW0, INPUT); // for this use a slide switch
pinMode(SW1, INPUT); // N.O. push button switch
pinMode(SW2, INPUT); // N.O. push button switch
digitalWrite(SW0, HIGH); // pull-ups on
digitalWrite(SW1, HIGH);
digitalWrite(SW2, HIGH);
}
void loop() {
digitalWrite(segDP, HIGH);
DateTime now = RTC.now();
int timp = now.hour()*100+now.minute();
//
int timp = (now.minute(), DEC);
//
displayNumber(12); // this is number to diplay
//
int timp = 1234;
Serial.print(now.hour(), DEC);
Serial.print(":");
Serial.print(now.minute(), DEC);
Serial.print(" -> ");
Serial.print(timp);
Serial.println(" !");
// display parts
for(int i = 250 ; i >0 ; i--) {
if (timp > 1000) displayNumber01(timp);
else displayNumber02(timp);
}
for(int i = 250 ; i >0 ; i--) {
if (timp > 1000) displayNumber03(timp);
else displayNumber04(timp);
}
if (!(digitalRead(SW0))) set_time(); // hold the switch to set time
}
void set_time()
{
byte minutes1 = 0;
byte hours1 = 0;
byte minutes = 0;
byte hours = 0;
while (!digitalRead(SW0))
exit
{
minutes1=minutes;
hours1=hours;
//
}
}
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
}
}
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
}
}
}
}
}
//Given a number, turns on those segments
//If number == 10, then turn off number
void lightNumber(int numberToDisplay) {
#define SEGMENT_ON LOW
#define SEGMENT_OFF HIGH
switch (numberToDisplay){
case 0:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
case 1:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
case 2:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
case 3:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_ON);
case 4:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
case 5:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
case 6:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
case 7:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
SEGMENT_OFF);
case 8:
digitalWrite(segA,
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
case 9:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB,
digitalWrite(segC,
digitalWrite(segD,
digitalWrite(segE,
digitalWrite(segF,
digitalWrite(segG,
break;
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_ON);
SEGMENT_OFF);
SEGMENT_ON);
SEGMENT_ON);