#include "SevSeg.h"
#include "ds1307.h"
SevSeg sevseg;
// seven sig
#define SEV_DIGIT_1 12
#define SEV_DIGIT_2 11
#define SEV_DIGIT_3 10
#define SEV_DIGIT_4 9
//#define SEV_DIGITS_PINS {SEV_DIGIT_1, SEV_DIGIT_2, SEV_DIGIT_3, SEV_DIGIT_4}
//#define SEV_SEGMENTS_PINS {SEV_SEGMENT_A, SEV_SEGMENT_B, SEV_SEGMENT_C, SEV_SEGMENT_D, SEV_SEGMENT_E, SEV_SEGMENT_F, SEV_SEGMENT_G, SEV_SEGMENT_DP}
#define SEV_SEGMENT_A 2
#define SEV_SEGMENT_B 3
#define SEV_SEGMENT_C 4
#define SEV_SEGMENT_D 5
#define SEV_SEGMENT_E 6
#define SEV_SEGMENT_F 7
#define SEV_SEGMENT_G 8
#define SEV_SEGMENT_DP A7
#define SEV_NUM_GIGITS 4
#define SEV_COLON 13
void setColon(bool value) {
digitalWrite(SEV_COLON, value ? LOW : HIGH);
}
void setup() {
Serial.begin(9600);
Serial.println(F("setup"));
// put your setup code here, to run once:
byte digitPins[] = {SEV_DIGIT_1, SEV_DIGIT_2, SEV_DIGIT_3, SEV_DIGIT_4};
byte segmentPins[] = {SEV_SEGMENT_A, SEV_SEGMENT_B, SEV_SEGMENT_C, SEV_SEGMENT_D, SEV_SEGMENT_E, SEV_SEGMENT_F, SEV_SEGMENT_G, SEV_SEGMENT_DP};
beginDS1307();
pinMode(SEV_COLON, OUTPUT);
sevseg.begin(
COMMON_ANODE, // DISPLAY_TYPE
SEV_NUM_GIGITS, // digits
digitPins, // digitPins
segmentPins, // segmentPins
true, // resistorsOnSegments
true, // updateWithDelays
true, // leadingZeros
true // disableDecPoint
);
sevseg.setBrightness(100);
// sevseg.setNumber(1234, 1);
// digitalWrite(SEV_COLON, value ? LOW : HIGH);
pinMode(A0, INPUT);
}
void DisplayClock(){
Serial.println("clock " + String((uint8_t)tm.hours) + ":" + String((uint8_t)tm.minutes) + ":" + String((uint8_t)tm.seconds));
// Serial.println("clock " + String((uint8_t)tm.wday)); // tm.wday, tm.mday, tm.month, tm.year
// Serial.println("clock " + String((uint8_t)tm.mday) + "-" + String((uint8_t)tm.month) + "-" + String((uint8_t)tm.year));
// Serial.println("clock " + String((uint8_t)tm.mday) + "-" + String((uint8_t)tm.month) + "-" + String((uint8_t)tm.year));
sevseg.setNumber((uint8_t)tm.hours * 100 + tm.minutes);
// sevseg.setNumber((uint8_t)tm.minutes * 100 + tm.seconds);
// sevseg.setNumber((uint8_t)tm.hours);
// sevseg.setNumber(tm.minutes);
// sevseg.setNumber(tm.seconds);
}
void loop() {
static uint32_t rebootTimer = millis();
static uint32_t rebootTimerClock = millis();
if(millis() - rebootTimer >= 200){
rebootTimer = millis();
readDS1307();
bool blinkState = tm.seconds % 2 == 0;
setColon(blinkState);
Serial.println(analogRead(A0));
// DisplayClock();
}
if(millis() - rebootTimerClock >= 400){
rebootTimerClock = millis();
DisplayClock();
}
// put your main code here, to run repeatedly:
// static unsigned long timer = millis();
// static int deciSeconds = 0;
// if (millis() - timer >= 1000) {
// timer += 1000;
// deciSeconds++;
// if (deciSeconds == 10000) {
// deciSeconds=0;
// }
// sevseg.setNumber(deciSeconds);
// }
sevseg.refreshDisplay();
}