#include <Arduino.h>
#define START_PIN 39
#define STOP_PIN 36
#define CLEAR_PIN 34
#define COUNT_UP_PIN 35
#define COUNT_DOWN_PIN 32
bool run = 0;
bool up = 0;
bool down = 0;
bool clear = 0;
int count = 0;
int segmentPins[] = {23, 22, 21, 19, 18, 5, 17};
int digitPins[] = {4, 16};
byte segments[] = {
B0111111, // 0
B0000110, // 1
B1011011, // 2
B1001111, // 3
B1100110, // 4
B1101101, // 5
B1111101, // 6
B0000111, // 7
B1111111, // 8
B1101111, // 9
B0000000 // clear
};
void setup() {
pinMode(START_PIN, INPUT);
pinMode(STOP_PIN, INPUT);
pinMode(CLEAR_PIN, INPUT);
pinMode(COUNT_UP_PIN, INPUT);
pinMode(COUNT_DOWN_PIN, INPUT);
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
for (int i = 0; i < 2; i++) {
pinMode(digitPins[i], OUTPUT);
}
secmentDisplay(count);
}
void loop()
{
getButton();
if (run)
{
// count = --count > 0 ? count : run = 0;
count = ++count == 99 ? run = 0 : count;
}
else
{
if (up)
{
count = ++count > 99 ? 0 : count;
up = 0;
}
if(down)
{
count = --count > 0 ? count : 99;
down = 0;
}
}
if (clear)
{
count = 0;
clear = 0;
}
secmentDisplay(count);
}
void displayDigit(int digit) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], bitRead(segments[digit], i));
}
delay(30);
}
void secmentDisplay(int num)
{
digitalWrite(digitPins[0], HIGH);
digitalWrite(digitPins[1], LOW);
displayDigit(num / 10);
displayDigit(10);
delay(5);
digitalWrite(digitPins[0], LOW);
digitalWrite(digitPins[1], HIGH);
displayDigit(num % 10);
displayDigit(10);
delay(5);
}
void getButton()
{
if (!digitalRead((START_PIN)))
run = 1;
if (!digitalRead((STOP_PIN)))
run = 0;
if (!digitalRead((CLEAR_PIN)))
clear = 1;
if (!digitalRead((COUNT_UP_PIN)))
up = 1;
if (!digitalRead((COUNT_DOWN_PIN)))
down = 1;
}