const int countButton = 23;
const int forwardButton = 25;
const int reverseButton = 27;
const int segA = 29;
const int segB = 31;
const int segC = 33;
const int segD = 35;
const int segE = 37;
const int segF = 39;
const int segG = 41;
int count = 0;
int maxCount = 7;
int relayPairs[][2] = {
{22, 24}, {26, 28}, {30, 32}, {34, 36}, {38, 40},
{42, 44}, {46, 48}
};
void setup() {
pinMode(countButton, INPUT_PULLUP);
pinMode(forwardButton, INPUT_PULLUP);
pinMode(reverseButton, INPUT_PULLUP);
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
displayNumber(count);
for (int i = 0; i < maxCount; i++) {
pinMode(relayPairs[i][0], OUTPUT);
pinMode(relayPairs[i][1], OUTPUT);
digitalWrite(relayPairs[i][0], LOW); // Changed to LOW
digitalWrite(relayPairs[i][1], LOW); // Changed to LOW
}
Serial.begin(9600);
}
void loop() {
static int prevCountState = HIGH;
int countState = digitalRead(countButton);
int forwardState = digitalRead(forwardButton);
int reverseState = digitalRead(reverseButton);
if (prevCountState == HIGH && countState == LOW) {
count = count % maxCount + 1;
displayNumber(count);
Serial.print("Count: ");
Serial.println(count);
}
if (forwardState == LOW) {
digitalWrite(relayPairs[count - 1][0], HIGH);
} else {
digitalWrite(relayPairs[count - 1][0], LOW);
}
if (reverseState == LOW) {
digitalWrite(relayPairs[count - 1][1], HIGH);
} else {
digitalWrite(relayPairs[count - 1][1], LOW);
}
prevCountState = countState;
delay(50); // Debounce delay
}
void turnOffSegments() {
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void displayNumber(int num) {
turnOffSegments();
switch (num) {
case 0:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
break;
case 1:
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
break;
case 2:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segG, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segD, HIGH);
break;
case 3:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segG, HIGH);
break;
case 4:
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 5:
digitalWrite(segA, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 6:
digitalWrite(segA, HIGH);
digitalWrite(segC, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segE, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
break;
case 7:
digitalWrite(segA, HIGH);
digitalWrite(segB, HIGH);
digitalWrite(segC, HIGH);
break;
default:
break;
}
}