Skip to content

Instantly share code, notes, and snippets.

@KaiSmith
Last active December 24, 2015 14:59
Show Gist options
  • Save KaiSmith/6817169 to your computer and use it in GitHub Desktop.
Save KaiSmith/6817169 to your computer and use it in GitHub Desktop.
Uses a buttons set a value and then decrement it on two multiplexed seven segment displays.
byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 }, // = 0
{ 1,0,0,1,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 0,0,0,0,1,1,0 }, // = 3
{ 1,0,0,1,1,0,0 }, // = 4
{ 0,1,0,0,1,0,0 }, // = 5
{ 0,1,0,0,0,0,0 }, // = 6
{ 0,0,0,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 0,0,0,1,1,0,0 } // = 9
};
int count = 0;
boolean lastState = 0;
void setup() {
pinMode(2, OUTPUT); // 7seg - a
pinMode(3, OUTPUT); // 7seg - b
pinMode(4, OUTPUT); // 7seg - c
pinMode(5, OUTPUT); // 7seg - d
pinMode(6, OUTPUT); // 7seg - e
pinMode(7, OUTPUT); // 7seg - f
pinMode(8, OUTPUT); // 7seg - g
pinMode(9, OUTPUT); // Power to 7seg 1
pinMode(10, OUTPUT); // power to 7seg 2
pinMode(11, INPUT); // Button 1
pinMode(12, INPUT); // Button 2
}
void sevenSegWrite(byte digit) {
//Takes a digit between 0 and 9 (inclusive) and turns on the appropriate pins to display on the seven segment display
byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[digit][segCount]);
++pin;
}
}
void displayNum(int digit){
//Displays a two digit number via multiplex on two seven segment displays
sevenSegWrite((digit/10)%10);
digitalWrite(9, HIGH);
delay(10);
digitalWrite(9, LOW);
sevenSegWrite(digit%10);
digitalWrite(10, HIGH);
delay(10);
digitalWrite(10, LOW);
}
void loop() {
//Checks for button presses and displays current count
displayNum(count);
boolean buttonState = digitalRead(11);
if(buttonState != lastState && buttonState == 1 && count > 0){
//When button 1 is pressed, decrement
count -= 1;
}
if(digitalRead(12) == 1){
//When button 2 is pressed, set counter to 99
count = 99;
}
lastState = buttonState;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment