/* Binary Clock Example: 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0 1 09 : 54 : 25 9 8 10 4 11 2 12 1 */ #define LED1 8 #define LED2 9 #define LED3 10 #define LED4 11 #define LED5 12 #define LED6 13 #define LAYER1 4 #define LAYER2 5 #define LAYER3 6 #define LAYER4 7 #define TASTER1 1 //hours up #define TASTER2 2 //minutes up #define TASTER3 3 //leds on/of boolean ledsOn = true; int i=0; //set default time byte hours = 0; byte minutes = 0; byte seconds = 0; unsigned long time; unsigned long cycle; void setup() { for(i=4; i<=13; i++){ pinMode(i, OUTPUT); } delay(1500); for(i=4; i<8; i++){ digitalWrite(i, HIGH); } clearLEDS(); } void loop() { time = millis()+1000; do{ cycle = millis(); checkButtons(); if(ledsOn){ setLEDS(); } cycle = millis()-cycle; }while(millis()+cycle=60){ minutes++; seconds=0; } if(minutes>=60){ hours++; minutes=0; } if(hours>=24){ hours=0; } } void setLEDS(){ //layer1 digitalWrite(LAYER1, LOW); digitalWrite(LED1, bitRead(hours/10, 0)); digitalWrite(LED2, bitRead(hours%10, 0)); digitalWrite(LED3, bitRead(minutes/10, 0)); digitalWrite(LED4, bitRead(minutes%10, 0)); digitalWrite(LED5, bitRead(seconds/10, 0)); digitalWrite(LED6, bitRead(seconds%10, 0)); waitTwoMillis(); //wait before kill power, because the last LED column get not as bright as the other ones digitalWrite(LAYER1, HIGH); clearLEDS(); //layer2 digitalWrite(LAYER2, LOW); digitalWrite(LED1, bitRead(hours/10, 1)); digitalWrite(LED2, bitRead(hours%10, 1)); digitalWrite(LED3, bitRead(minutes/10, 1)); digitalWrite(LED4, bitRead(minutes%10, 1)); digitalWrite(LED5, bitRead(seconds/10, 1)); digitalWrite(LED6, bitRead(seconds%10, 1)); waitTwoMillis(); digitalWrite(LAYER2, HIGH); clearLEDS(); //layer3 digitalWrite(LAYER3, LOW); digitalWrite(LED2, bitRead(hours%10, 2)); digitalWrite(LED3, bitRead(minutes/10, 2)); digitalWrite(LED4, bitRead(minutes%10, 2)); digitalWrite(LED5, bitRead(seconds/10, 2)); digitalWrite(LED6, bitRead(seconds%10, 2)); waitTwoMillis(); digitalWrite(LAYER3, HIGH); clearLEDS(); //layer4 digitalWrite(LAYER4, LOW); digitalWrite(LED2, bitRead(hours%10, 3)); digitalWrite(LED4, bitRead(minutes%10, 3)); digitalWrite(LED6, bitRead(seconds%10, 3)); waitTwoMillis(); digitalWrite(LAYER4, HIGH); clearLEDS(); } void clearLEDS(){ //set LEDs at Pin 8 - 13 to LOW for(i=8; i<=13;i++){ digitalWrite(i, LOW); } } void checkButtons(){ if(digitalRead(TASTER2)){//set hours delay(1); while(digitalRead(TASTER2)){ } hours++; return; } if(digitalRead(TASTER3)){//set minutes delay(1); while(digitalRead(TASTER3)){ } minutes++; return; } if(digitalRead(TASTER1)){//LEDs on/off // || digitalRead(13) for IR Receiver delay(1); while(digitalRead(TASTER1)){ } ledsOn = (!ledsOn); return; } } void waitTwoMillis(){ delay(2); }