Skip to content

Instantly share code, notes, and snippets.

@christianmeichtry
Created August 12, 2009 20:32
Show Gist options
  • Save christianmeichtry/166739 to your computer and use it in GitHub Desktop.
Save christianmeichtry/166739 to your computer and use it in GitHub Desktop.
int ledPin = 0 ;
int catPin = 8 ;
int buttonUp = 14 ;
int buttonDown = 15 ;
int number = 0 ;
unsigned long time, oldTime ;
int numbers[10][8]={{HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW,LOW},
{LOW,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW},
{HIGH,HIGH,LOW,HIGH,HIGH,LOW,HIGH,LOW},
{HIGH,HIGH,HIGH,HIGH,LOW,LOW,HIGH,LOW},
{LOW,HIGH,HIGH,LOW,LOW,HIGH,HIGH,LOW},
{HIGH,LOW,HIGH,HIGH,LOW,HIGH,HIGH,LOW},
{HIGH,LOW,HIGH,HIGH,HIGH,HIGH,HIGH,LOW},
{HIGH,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW},
{HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,HIGH,LOW},
{HIGH,HIGH,HIGH,HIGH,LOW,HIGH,HIGH,LOW}};
void writeDigit(int index, int digit)
{
reset() ;
int cathode = catPin + index ;
for (int i=0; i<8 ; i++)
digitalWrite(ledPin + i, numbers[digit][i]) ;
digitalWrite(cathode, LOW) ;
}
void reset()
{
for (int i=0 ; i<5 ; i++)
digitalWrite(catPin + i, HIGH) ;
for (int i=0 ; i<8 ; i++)
digitalWrite(ledPin + i, LOW) ;
}
void writeDots()
{
reset() ;
digitalWrite(ledPin, HIGH) ;
digitalWrite(ledPin+1, HIGH) ;
digitalWrite(catPin+4, (millis()/1000)%2) ;
reset() ;
}
void writeNumber(int number)
{
number = number%10000 ;
writeDigit(0, number/1000) ;
number = number%1000 ;
writeDigit(1, number/100) ;
number = number%100 ;
writeDigit(2, number/10) ;
number = number%10 ;
writeDigit(3, number) ;
writeDots() ;
}
void writeTime(unsigned long time)
{
int seconds = time % 60 ;
time = time % 86400 ;
int hours = (time/3600) ;
int minutes = (time/60) - hours*60 ;
writeNumber(hours*100 + minutes) ;
}
unsigned long timeInSeconds(int hours, int minutes, int seconds)
{
unsigned long sTime = (unsigned long)seconds + 60*(unsigned long)minutes + 3600*(unsigned long)hours ;
return sTime ;
}
void display()
{
writeNumber(0) ;
}
void setupPins()
{
for (int i=ledPin; i < ledPin + 8 ; i++)
{
pinMode(i, OUTPUT) ;
}
for (int i=catPin; i < catPin + 5 ; i++)
{
pinMode(i, OUTPUT) ;
digitalWrite(i, HIGH) ;
}
pinMode(buttonUp, INPUT) ;
}
void setup()
{
setupPins() ;
reset() ;
time = timeInSeconds(22,8,0) ;
// Serial.begin(9600);
}
void loop()
{
if (digitalRead(buttonUp) == HIGH)
{
if (millis() > oldTime + 200)
{
time += 60 ;
oldTime = millis() ;
}
}
if (digitalRead(buttonDown) == HIGH)
{
if (millis() > oldTime + 200)
{
time -= 60 ;
oldTime = millis() ;
}
}
// Serial.print("Hello\n") ;
writeTime(time + millis()/1000) ;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment