int sliderPin = A0;
//int sevenSegmentDisplayPins[8] = {0, 1, 2, 3, 4, 5, 6, 7};
int ledArray[4] = {A1, A2, A3, A4};
int switchPin = 8;
int oldSwitchValue = LOW;
int index = 0;
int sensorValue;
int outputValue;
unsigned long lastDebounceTime = 0; // the last time the output pin was toggled
unsigned long debounceDelay = 50; // the debounce time; increase if the output flickers
void setup() {
// put your setup code here, to run once:
for (int i = 0; i < 10; i++){
pinMode(i, OUTPUT);
}
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(switchPin, INPUT);
for (int i = 0; i < 4; i++){
digitalWrite(ledArray[i], HIGH);
delay(100);
digitalWrite(ledArray[i], LOW);
delay(100);
}
}
void loop() {
// put your main code here, to run repeatedly:
sensorValue = analogRead(sliderPin);
outputValue = map(sensorValue, 0, 1023, 0, 9);
displaySevenSegment(outputValue);
int switchValue = digitalRead(switchPin);
if (switchValue != oldSwitchValue) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// whatever the reading is at, it's been there for longer than the debounce
// delay, so take it as the actual current state:
// if the button state has changed:
if (switchValue != oldSwitchValue) {
oldSwitchValue = switchValue;
ledRoundRobin();
}
}
}
void ledRoundRobin() {
digitalWrite(ledArray[index], LOW);
if (index < 4) {
index++;
}
else {
index = 0;
}
digitalWrite(ledArray[index], HIGH);
}
void displaySevenSegment(int valueToDisplay){
switch (valueToDisplay) {
case 0:
// 9, 7, 6, 4, 2, 1
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
digitalWrite(1, HIGH);
break;
case 1:
// 6, 4
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(2, LOW);
digitalWrite(1, LOW);
break;
case 2:
// 7, 6, 10, 1, 2
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(2, HIGH);
digitalWrite(1, HIGH);
break;
case 3:
// 7, 6, 10, 4, 2
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
digitalWrite(1, LOW);
break;
case 4:
// 9, 6, 10, 4
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(2, LOW);
digitalWrite(1, LOW);
break;
case 5:
// 7, 9, 10, 4, 2
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
digitalWrite(1, LOW);
break;
case 6:
// 7, 9, 10, 1, 4, 2
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
digitalWrite(1, HIGH);
break;
case 7:
// 7, 6, 4
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(2, LOW);
digitalWrite(1, LOW);
break;
case 8:
// 7, 6, 5, 4, 3 ,2, 1, 9, 10
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
digitalWrite(1, HIGH);
break;
case 9:
// 7, 6, 10, 9, 1
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(2, LOW);
digitalWrite(1, HIGH);
break;
}
}