Clock project code and schematics
- Jason Ron
- Feb 2, 2019
- 2 min read



#include "LedControl.h" // need the library
LedControl lc=LedControl(1,2,3,1); // lc is our object
// pin 1 is connected to the MAX7219 pin 1
// pin 2 is connected to the CLK pin 13
// pin 3 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
//encodervariables
const int encoderPinA=9;
const int encoderPinB=10;
const int button1Pin = 11;
const int button2pin=12;
int encoderPos;
int buttonPushCounter = 0; // counter for the number of button presses
int buttonPushCounter2=0;
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
int lastButtonState2=0;
boolean encoderALast=LOW;
void setup()
{
// the zero refers to the MAX7219 number, it is zero for 1 chip
lc.shutdown(0,false);// turn off power saving, enables display
lc.setIntensity(0,8);// sets brightness (0~15 possible values)
lc.clearDisplay(0);// clear screen
//encoder//
pinMode(encoderPinA, INPUT);
pinMode(encoderPinB, INPUT);
pinMode(button1Pin, INPUT);
digitalWrite(encoderPinA,HIGH);
digitalWrite(encoderPinB,HIGH);
}
void loop()
{
int minutegiven, hourgiven,minute1,hour1, buttonState,buttonState2, sec, minute, hour, secsadj;
hourgiven=0;
buttonState=digitalRead(button1Pin);
buttonState2=digitalRead(button2pin);
boolean encoderA = digitalRead(encoderPinA);
if ((encoderALast == HIGH) && (encoderA == LOW) )
{
if( digitalRead(encoderPinB) == LOW )
{
encoderPos-- ;
}
else
{
encoderPos++;
}
}
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
}
}
lastButtonState = buttonState;
if(buttonPushCounter>12)
{
buttonPushCounter=1;
}
// save the current state as the last state,
encoderALast=encoderA;
minutegiven = abs(encoderPos);
hourgiven=buttonPushCounter;
minute1=minutegiven;
hour1=hourgiven;
if( (minute1<10)&& (hour1<10) )
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour1,true);
lc.setDigit(0,2,0,true);
lc.setDigit(0,3,minute1,true);
}
else if( (minute1<20) && (hour1<10) )
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour1,true);
lc.setDigit(0,2,1,true);
lc.setDigit(0,3,minute1%10,true);
}
else if( (minute1<30)&& (hour1<10) )
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour1,true);
lc.setDigit(0,2,2,true);
lc.setDigit(0,3,minute1%10,true);
}
else if( (minute1<40)&& (hour1<10))
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour1,true);
lc.setDigit(0,2,3,true);
lc.setDigit(0,3,minute1%10,true);
}
else if((minute1<50)&& (hour1<10) )
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour1,true);
lc.setDigit(0,2,4,true);
lc.setDigit(0,3,minute1%10,true);
}
else if( (minute1<60)&& (hour1<10))
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour1,true);
lc.setDigit(0,2,5,true);
lc.setDigit(0,3,minute1%10,true);
}
//////////////////////////hrstuff/////////////////////
if( (minute1<10)&& (hour1>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour1-10,true);
lc.setDigit(0,2,0,true);
lc.setDigit(0,3,minute1,true);
}
else if( (minute1<20) && (hour1>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour1-10,true);
lc.setDigit(0,2,1,true);
lc.setDigit(0,3,minute1%10,true);
}
else if( (minute1<30)&& (hour1>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour1-10,true);
lc.setDigit(0,2,2,true);
lc.setDigit(0,3,minute1%10,true);
}
else if( (minute1<40)&& (hour1>=10))
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour1-10,true);
lc.setDigit(0,2,3,true);
lc.setDigit(0,3,minute1%10,true);
}
else if((minute1<50)&& (hour1>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour1-10,true);
lc.setDigit(0,2,4,true);
lc.setDigit(0,3,minute1%10,true);
}
else if((minute1<60)&& (hour1>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour1-10,true);
lc.setDigit(0,2,5,true);
lc.setDigit(0,3,minute1%10,true);
}
if (buttonState2 != lastButtonState2) {
if (buttonState2 == HIGH) {
buttonPushCounter2++;
}
}
lastButtonState2 = buttonState2;
while(buttonPushCounter2==2){
unsigned long count=0;
count = count+ (millis()/1000);
int minute =(minutegiven+(count/60))%60;
// int secadj=(minutegiven*60)+count;
int hour = ((hourgiven-1+( (count+minutegiven*60)/3600 ) )%12)+1;
///////////////////////////////////////set start time min/////////////////
if( (minute<10)&& (hour<10) )
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour,true);
lc.setDigit(0,2,0,true);
lc.setDigit(0,3,minute,true);
}
else if( (minute<20) && (hour<10) )
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour,true);
lc.setDigit(0,2,1,true);
lc.setDigit(0,3,minute%10,true);
}
else if( (minute<30)&& (hour<10) )
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour,true);
lc.setDigit(0,2,2,true);
lc.setDigit(0,3,minute%10,true);
}
else if( (minute<40)&& (hour<10))
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour,true);
lc.setDigit(0,2,3,true);
lc.setDigit(0,3,minute%10,true);
}
else if((minute<50)&& (hour<10) )
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour,true);
lc.setDigit(0,2,4,true);
lc.setDigit(0,3,minute%10,true);
}
else if( (minute<60)&& (hour<10))
{
lc.setDigit(0,0,0,true);
lc.setDigit(0,1,hour,true);
lc.setDigit(0,2,5,true);
lc.setDigit(0,3,minute%10,true);
}
//////////////////////////hrstuff/////////////////////
if( (minute<10)&& (hour>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour-10,true);
lc.setDigit(0,2,0,true);
lc.setDigit(0,3,minute,true);
}
else if( (minute<20) && (hour>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour-10,true);
lc.setDigit(0,2,1,true);
lc.setDigit(0,3,minute%10,true);
}
else if( (minute<30)&& (hour>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour-10,true);
lc.setDigit(0,2,2,true);
lc.setDigit(0,3,minute%10,true);
}
else if( (minute<40)&& (hour>=10))
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour-10,true);
lc.setDigit(0,2,3,true);
lc.setDigit(0,3,minute%10,true);
}
else if((minute<50)&& (hour>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour-10,true);
lc.setDigit(0,2,4,true);
lc.setDigit(0,3,minute%10,true);
}
else if((minute<60)&& (hour>=10) )
{
lc.setDigit(0,0,1,true);
lc.setDigit(0,1,hour-10,true);
lc.setDigit(0,2,5,true);
lc.setDigit(0,3,minute%10,true);
}
/////////////////////////////////////////////
}//let time roll loop
}//voidloop
Comments