// Binary 24hr-Clock
// Coded by Marcelo Borges
//
#include <RTClib.h>
RTC_DS1307 _rtc;
#define HOUR_PIN_1 31
#define HOUR_PIN_2 29
#define HOUR_PIN_4 27
#define HOUR_PIN_8 25
#define HOUR_PIN_16 23
#define MINUTE_PIN_1 43
#define MINUTE_PIN_2 41
#define MINUTE_PIN_4 39
#define MINUTE_PIN_8 37
#define MINUTE_PIN_16 35
#define MINUTE_PIN_32 33
#define SECOND_PIN_1 44
#define SECOND_PIN_2 46
#define SECOND_PIN_4 48
#define SECOND_PIN_8 49
#define SECOND_PIN_16 47
#define SECOND_PIN_32 45
void setup() {
_rtc.begin();
pinMode(HOUR_PIN_1, OUTPUT);
pinMode(HOUR_PIN_2, OUTPUT);
pinMode(HOUR_PIN_4, OUTPUT);
pinMode(HOUR_PIN_8, OUTPUT);
pinMode(HOUR_PIN_16, OUTPUT);
pinMode(MINUTE_PIN_1, OUTPUT);
pinMode(MINUTE_PIN_2, OUTPUT);
pinMode(MINUTE_PIN_4, OUTPUT);
pinMode(MINUTE_PIN_8, OUTPUT);
pinMode(MINUTE_PIN_16, OUTPUT);
pinMode(MINUTE_PIN_32, OUTPUT);
pinMode(SECOND_PIN_1, OUTPUT);
pinMode(SECOND_PIN_2, OUTPUT);
pinMode(SECOND_PIN_4, OUTPUT);
pinMode(SECOND_PIN_8, OUTPUT);
pinMode(SECOND_PIN_16, OUTPUT);
pinMode(SECOND_PIN_32, OUTPUT);
}
void loop() {
DateTime now = _rtc.now();
int second = now.second();
int minute = now.minute();
int hour = now.hour();
//Seconds
digitalWrite(SECOND_PIN_1, (second & 1) == 1 ? HIGH : LOW);
digitalWrite(SECOND_PIN_2, (second & 2) == 2 ? HIGH : LOW);
digitalWrite(SECOND_PIN_4, (second & 4) == 4 ? HIGH : LOW);
digitalWrite(SECOND_PIN_8, (second & 8) == 8 ? HIGH : LOW);
digitalWrite(SECOND_PIN_16, (second & 16) == 16 ? HIGH : LOW);
digitalWrite(SECOND_PIN_32, (second & 32) == 32 ? HIGH : LOW);
//Minutes
digitalWrite(MINUTE_PIN_1, (minute & 1) == 1 ? HIGH : LOW);
digitalWrite(MINUTE_PIN_2, (minute & 2) == 2 ? HIGH : LOW);
digitalWrite(MINUTE_PIN_4, (minute & 4) == 4 ? HIGH : LOW);
digitalWrite(MINUTE_PIN_8, (minute & 8) == 8 ? HIGH : LOW);
digitalWrite(MINUTE_PIN_16, (minute & 16) == 16 ? HIGH : LOW);
digitalWrite(MINUTE_PIN_32, (minute & 32) == 32 ? HIGH : LOW);
//Hours
digitalWrite(HOUR_PIN_1, (hour & 1) == 1 ? HIGH : LOW);
digitalWrite(HOUR_PIN_2, (hour & 2) == 2 ? HIGH : LOW);
digitalWrite(HOUR_PIN_4, (hour & 4) == 4 ? HIGH : LOW);
digitalWrite(HOUR_PIN_8, (hour & 8) == 8 ? HIGH : LOW);
digitalWrite(HOUR_PIN_16, (hour & 16) == 16 ? HIGH : LOW);
delay(1000);
}