#include <TimerOne.h>
#define ledPin 13
#define ledPin 12
int count = 0;
int state1 = 1;
int state2 = 1;
int Pushbutton1 = 3;
int Pushbutton2 = 2;
void setup () {
pinMode(Pushbutton1, INPUT);
pinMode(Pushbutton2, INPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10,OUTPUT);
SEGMENT_OUT(count);
// initialize timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 34286; // preload timer 65536-16MHz/256/2Hz
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt
interrupts(); // enable all interrupts
}
ISR(TIMER1_OVF_vect) // interrupt service routine that wraps a user defined function
//supplied by attachInterrupt
{
TCNT1 = 34286; // preload timer
digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
if (count==10)
count=0; //set PORTD output origin as number ‘0’
count=count +1; //count will +1 every time the switch pressed
//already programmed
SEGMENT_OUT(count); //call the ‘segment_out(count) function which
}
void loop()
{
state1 = digitalRead(Pushbutton1);
state2 = digitalRead(Pushbutton2);
if (state1 == 1) {
if (count==10)
count=0;
count=count + 1;
SEGMENT_OUT(count);
}
else if (state2 == 1) {
if (count==10)
count=0;
count=count -1;
SEGMENT_OUT(count);
}
}
void SEGMENT_OUT(int count) {
switch(count)
{
case 9:{
// write '9'
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);
digitalWrite(10, 0);
delay(100);
break;}
case 8:{
// write '8'
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 0);
delay(100);
break;}
case 7:{
// write '7'
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 1);
delay(100);
break;}
case 6:{
// write '6'
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10, 0);
delay(100);
break;}
case 5:{
// write '5'
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 1);
digitalWrite(9, 0);
digitalWrite(10, 0);
delay(100);
break;}
case 4: {
// write '4'
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 0);
digitalWrite(10, 0);
delay(100);
break;}
case 3: {
// write '3'
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10,0);
delay(100);
break;}
case 2: {
// write '2'
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 1);
digitalWrite(10, 0);
delay(100);
break;}
case 1: {
// write '1'
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
digitalWrite(9, 1);
digitalWrite(10, 1);
delay(100);
break;}
case 0: {
// write '0'
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
digitalWrite(9, 0);
digitalWrite(10,1);
delay(100);
break;}
}
}