0% found this document useful (0 votes)
1 views

LED_binary_clock_code

This document contains a code for a time display system using LEDs to represent seconds, minutes, and hours. It includes functionality for adjusting time with buttons and has placeholders for additional features like random light shows and audio visualizers. The setup initializes various input and output pins for the display and user interaction.

Uploaded by

diomarrs
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views

LED_binary_clock_code

This document contains a code for a time display system using LEDs to represent seconds, minutes, and hours. It includes functionality for adjusting time with buttons and has placeholders for additional features like random light shows and audio visualizers. The setup initializes various input and output pins for the display and user interaction.

Uploaded by

diomarrs
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 7

// Dev by Christian Steinmetz

// Check out the documentation for this project


// at www.christiansteinmetz.com
// Published July 31, 2016

#include <Time.h>
#include <TimeLib.h>

// initialize variables to store time


int seconds = 0;
int minutes = 0;
int hours = 0;

// initalize buttons to increment time


int min_button = 50;
int hr_button = 51;

// iniatlize buttons to set light shows


int randomize_button = 52;
int wave_button = 53;

// inialize output pin variables


// change the values here for pin layout

// seconds
int led1 = 22;
int led2 = 23;
int led3 = 24;
int led4 = 25;
int led5 = 26;
int led6 = 27;
int led7 = 28;
// minutes
int led8 = 29;
int led9 = 30;
int led10 = 31;
int led11 = 32;
int led12 = 33;
int led13 = 34;
int led14 = 35;
// hours
int led15 = 36;
int led16 = 37;
int led17 = 38;
int led18 = 39;
int led19 = 40;
int led20 = 41;

int AM_PM = 0; // AM == 0 and PM == 1

void setup() {
// initialize output pins for seconds
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);

// initialize output pins for minutes


pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
pinMode(led11, OUTPUT);
pinMode(led12, OUTPUT);
pinMode(led13, OUTPUT);
pinMode(led14, OUTPUT);

// initialize output pins for hours


pinMode(led15, OUTPUT);
pinMode(led16, OUTPUT);
pinMode(led17, OUTPUT);
pinMode(led18, OUTPUT);
pinMode(led19, OUTPUT);
pinMode(led20, OUTPUT);

// initalize input pins for inc buttons


pinMode(min_button, INPUT);
pinMode(hr_button, INPUT);

// take as input time in sec, min, hr as ints and then output to Binary LED layout
void UpdateDisplay(int seconds, int minutes, int hours) {

/* Seconds Count */

int seconds_ones = 0;
int seconds_tens = 0;

//find seconds ones and tens


seconds_ones = seconds % 10;
seconds_tens = seconds / 10;

// seconds 0-9 counter


switch(seconds_ones) {
case 0:
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
break;
case 1:
digitalWrite(led1, HIGH);
break;
case 2:
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
break;
case 3:
digitalWrite(led1, HIGH);
break;
case 4:
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
break;
case 5:
digitalWrite(led1, HIGH);
break;
case 6:
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
break;
case 7:
digitalWrite(led1, HIGH);
break;
case 8:
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
break;
case 9:
digitalWrite(led1, HIGH);
break;

// seconds 10-50 counter


switch(seconds_tens) {
case 1:
digitalWrite(led5, HIGH);
break;
case 2:
digitalWrite(led5, LOW);
digitalWrite(led6, HIGH);
break;
case 3:
digitalWrite(led5, HIGH);
break;
case 4:
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, HIGH);
break;
case 5:
digitalWrite(led5, HIGH);
break;
case 6:
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
break;
}

// case to reset seconds after 59 have elapsed


if (seconds_tens < 1) {
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
}

/* Minutes Count */
int minutes_ones = 0;
int minutes_tens = 0;

//find minutes ones and tens


minutes_ones = minutes % 10;
minutes_tens = minutes / 10;

// minutes 0-9 counter


switch(minutes_ones) {
case 0:
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
digitalWrite(led11, LOW);
break;
case 1:
digitalWrite(led8, HIGH);
break;
case 2:
digitalWrite(led8, LOW);
digitalWrite(led9, HIGH);
break;
case 3:
digitalWrite(led8, HIGH);
break;
case 4:
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, HIGH);
break;
case 5:
digitalWrite(led8, HIGH);
break;
case 6:
digitalWrite(led8, LOW);
digitalWrite(led9, HIGH);
break;
case 7:
digitalWrite(led8, HIGH);
break;
case 8:
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
digitalWrite(led11, HIGH);
break;
case 9:
digitalWrite(led8, HIGH);
break;

// minutes 10-50 counter


switch(minutes_tens) {
case 1:
digitalWrite(led12, HIGH);
break;
case 2:
digitalWrite(led12, LOW);
digitalWrite(led13, HIGH);
break;
case 3:
digitalWrite(led12, HIGH);
break;
case 4:
digitalWrite(led12, LOW);
digitalWrite(led13, LOW);
digitalWrite(led14, HIGH);
break;
case 5:
digitalWrite(led12, HIGH);
break;
case 6:
digitalWrite(led12, LOW);
digitalWrite(led13, LOW);
digitalWrite(led14, LOW);
break;
}

// case to resent minutes after 59 have elapsed


if (minutes_tens < 1) {
digitalWrite(led12, LOW);
digitalWrite(led13, LOW);
digitalWrite(led14, LOW);
}

/* Hours Count */

int hours_ones = hours % 10;


int hours_tens = hours / 10;

switch(hours_ones) {
case 0:
digitalWrite(led15, LOW);
digitalWrite(led16, LOW);
digitalWrite(led17, LOW);
digitalWrite(led18, LOW);
break;
case 1:
digitalWrite(led15, HIGH);
break;
case 2:
digitalWrite(led15, LOW);
digitalWrite(led16, HIGH);
break;
case 3:
digitalWrite(led15, HIGH);
break;
case 4:
digitalWrite(led15, LOW);
digitalWrite(led16, LOW);
digitalWrite(led17, HIGH);
break;
case 5:
digitalWrite(led15, HIGH);
break;
case 6:
digitalWrite(led15, LOW);
digitalWrite(led16, HIGH);
break;
case 7:
digitalWrite(led15, HIGH);
break;
case 8:
digitalWrite(led15, LOW);
digitalWrite(led16, LOW);
digitalWrite(led17, LOW);
digitalWrite(led18, HIGH);
break;
case 9:
digitalWrite(led15, HIGH);
break;
}

// hours 10-50 counter


switch(hours_tens) {
case 1:
digitalWrite(led19, HIGH);
break;
case 2:
digitalWrite(led19, LOW);
digitalWrite(led20, HIGH);
break;

// case to reset hours after 23 have elapsed


if (hours_tens < 1) {
digitalWrite(led19, LOW);
digitalWrite(led20, LOW);

}
}
// function to reset the display after entering another mode
void ResetDisplay() {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
digitalWrite(led11, LOW);
digitalWrite(led12, LOW);
digitalWrite(led13, LOW);
digitalWrite(led14, LOW);
digitalWrite(led15, LOW);
digitalWrite(led16, LOW);
digitalWrite(led17, LOW);
digitalWrite(led18, LOW);
digitalWrite(led19, LOW);
digitalWrite(led20, LOW);
}

// code to make a randomized light shown


void Randomize() {

// to be added

// code for the audio visualizer


void Wave() {

// to be added

void loop() {

// get user input from push buttons


if (digitalRead(min_button) == LOW) {
adjustTime(60); // add 60sec or 1 min
}

if (digitalRead(hr_button) == LOW) {
adjustTime(3600); // add 3600 sec or 1 hr
}

if (digitalRead(randomize_button) == LOW) {
Randomize();
}

if (digitalRead(wave_button) == LOW) {
Wave();
}

// get new time and update display


seconds = second();
minutes = minute();
hours = hour();

UpdateDisplay(seconds, minutes, hours);


delay(100);

You might also like