//Maak de schakeling voor 2-4 knoppen en minimum 8 LEDs
//Gebruik de knoppen als inputs om de LEDs aan te sturen en creeer een mini-game / interactieve light show
//Vb knop1 = aan/uit, knop2 = versnellen, knop3 = vertragen, knop4 = ander patroon/richting/kleur,...
//Maak gebruik van een array
//Je mag een potentiometer toevoegen voor extra features
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; //array met de pin-nummers vd LEDs
int knop1 = 10; //pin knop 1
int knop2 = 11;
int knop3 = 12;
int potmeter = A0; //analoge pin voor potmeter
int potwaarde = 0; //var
int toestand = 0;
void setup() { //seriële communicatie => debugging
Serial.begin(9600);
for (int pin : ledPins) { //elke LED pin als output
pinMode(pin, OUTPUT);
}
pinMode(knop1, INPUT);
pinMode(knop2, INPUT);
pinMode(knop3, INPUT);
}
void loop() {
if (toestand == 0 || toestand == 1) { //toestand 0 (binnen naar buiten) of 1 (buiten naar binnen) is
for (int i = (toestand == 0) ? 4 : 0; (toestand == 0) ? (i < 8) : (i < 4); (toestand == 0) ? i++ : i--) {
analogWrite(ledPins[i], analogRead(potmeter));
analogWrite(ledPins[7 - i], analogRead(potmeter));
delay(100);
toestand = var();
}
for (int i = (toestand == 0) ? 4 : 0; (toestand == 0) ? (i < 8) : (i < 4); (toestand == 0) ? i++ : i--) {
analogWrite(ledPins[i], LOW);
analogWrite(ledPins[7 - i], LOW);
delay(100);
toestand = var();
}
} else if (toestand == 2 || toestand == 3) { //links naar rechts of rechts naar links
for (int i = (toestand == 2) ? 0 : 7; (toestand == 2) ? (i <= 7) : (i >= 0); (toestand == 2) ? i++ : i--) {
analogWrite(ledPins[i], analogRead(potmeter));
delay(100);
toestand = var();
}
for (int i = (toestand == 2) ? 0 : 7; (toestand == 2) ? (i < 8) : (i > -1); (toestand == 2) ? i++ : i--) {
analogWrite(ledPins[i], LOW);
delay(100);
toestand = var();
}
}
Serial.println(toestand);
}
int var() {
if (digitalRead(knop1)) return 1; //knop 1 ingedrukt? => verander toestand naar 1
if (digitalRead(knop2)) return 2;
if (digitalRead(knop3)) return 3;
return toestand;
}