Coś mi działa ten kod i nie wiem czy go jakoś źle nie zaimplementowałem...
Poniżej wklejam swój kod i proszę o sugestię co w nim dopisać by działało jak trzeba. Dodam, że program steruje poprzez dwa przyciski 9 diodami i naciskanie jednego przycisku powoduje sekwencyjne włączanie diód.
Kod:
int ledPin1 = 4;
int ledPin2 = 5;
int ledPin3 = 13;
int ledPin4 = 12;
int ledPin5 = 11;
int ledPin6 = 10;
int ledPin7 = 9;
int ledPin8 = 8;
int ledPin9 = 7;
int ledPin10 = 6;
int switchPin1 =2;
int switchPin2 =3;
int counter = 1;
int val1 = 0;
int val2 = 0;
int currentState = 0;
int previousState = 0;
int count = 0;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
pinMode(ledPin5, OUTPUT);
pinMode(ledPin6, OUTPUT);
pinMode(ledPin7, OUTPUT);
pinMode(ledPin8, OUTPUT);
pinMode(ledPin9, OUTPUT);
pinMode(ledPin10, OUTPUT);
pinMode(switchPin1, INPUT);
pinMode(switchPin2, INPUT);
digitalWrite(switchPin1, HIGH);
digitalWrite(switchPin2, HIGH);
Serial.begin(9600);
}
void loop(){
val1 = digitalRead(switchPin1);
val2 = digitalRead(switchPin2);
if (val1 == LOW && val2 == HIGH) {
digitalWrite(ledPin1, LOW);
currentState = 1;
}
else if (val1 == HIGH && val2 == LOW) {
digitalWrite(ledPin2, LOW);
currentState = 2;
}
else {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
currentState = 0;
}
if(currentState != previousState){
if(currentState == 1){
if(counter != 15){
counter = counter + 1;
Serial.println(counter);
if (counter == 1){ //1
digitalWrite(ledPin3, HIGH);
}
else{
digitalWrite(ledPin3, LOW);
if (counter == 2){ //1,2
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
}
else{
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
if (counter == 3){ //2
digitalWrite(ledPin4, HIGH);
}
else{
digitalWrite(ledPin4, LOW);
if (counter == 4){ //2,3
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
}
else{
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
if (counter == 5){ //3
digitalWrite(ledPin5, HIGH);
}
else{
digitalWrite(ledPin5, LOW);
if (counter == 6){ //3,4
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, HIGH);
}
else{
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
if (counter == 7){ //4
digitalWrite(ledPin6, HIGH);
}
else{
digitalWrite(ledPin6, LOW);
if (counter == 8){ //4,5
digitalWrite(ledPin6, HIGH);
digitalWrite(ledPin7, HIGH);
}
else{
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
if (counter == 9){ //5
digitalWrite(ledPin7, HIGH);
}
else{
digitalWrite(ledPin7, LOW);
if (counter == 10){ //5,6
digitalWrite(ledPin7, HIGH);
digitalWrite(ledPin8, HIGH);
}
else{
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
if (counter == 11){ //6
digitalWrite(ledPin8, HIGH);
}
else{
digitalWrite(ledPin8, LOW);
if (counter == 12){ //6,7
digitalWrite(ledPin8, HIGH);
digitalWrite(ledPin9, HIGH);
}
else{
digitalWrite(ledPin8, LOW);
digitalWrite(ledPin9, LOW);
if (counter == 13){ //7
digitalWrite(ledPin9, HIGH);
}
else{
digitalWrite(ledPin9, LOW);
if (counter == 14){ //7,8
digitalWrite(ledPin9, HIGH);
digitalWrite(ledPin10, HIGH);
}
else{
digitalWrite(ledPin9, LOW);
digitalWrite(ledPin10, LOW);
if (counter == 15){ //8
digitalWrite(ledPin10, HIGH);
}
else{
digitalWrite(ledPin10, LOW);
if (counter == 16){ //8,9
digitalWrite(ledPin10, HIGH);
digitalWrite(ledPin1, HIGH);
}
else{
digitalWrite(ledPin10, LOW);
digitalWrite(ledPin1, LOW);
if (counter == 17){ //9
digitalWrite(ledPin1, HIGH);
}
else{
digitalWrite(ledPin1, LOW);
}}}}}}}}}}}}}}}}}
}}}
if(currentState != previousState){
if(currentState == 2){
if(counter != 1){
counter = counter - 1;
Serial.println(counter);
if (counter == 17){ //9
digitalWrite(ledPin1, HIGH);
}
else{
digitalWrite(ledPin1, LOW);
if (counter == 16){ //8,9
digitalWrite(ledPin10, HIGH);
digitalWrite(ledPin1, HIGH);
}
else{
digitalWrite(ledPin10, LOW);
digitalWrite(ledPin1, LOW);
if (counter == 15){ //8
digitalWrite(ledPin10, HIGH);
}
else{
digitalWrite(ledPin10, LOW);
if (counter == 14){ //7,8
digitalWrite(ledPin9, HIGH);
digitalWrite(ledPin10, HIGH);
}
else{
digitalWrite(ledPin9, LOW);
digitalWrite(ledPin10, LOW);
if (counter == 13){ //7
digitalWrite(ledPin9, HIGH);
}
else{
digitalWrite(ledPin9, LOW);
if (counter == 12){ //6,7
digitalWrite(ledPin8, HIGH);
digitalWrite(ledPin9, HIGH);
}
else{
digitalWrite(ledPin8, LOW);
digitalWrite(ledPin9, LOW);
if (counter == 11){ //6
digitalWrite(ledPin8, HIGH);
}
else{
digitalWrite(ledPin8, LOW);
if (counter == 10){ //5,6
digitalWrite(ledPin7, HIGH);
digitalWrite(ledPin8, HIGH);
}
else{
digitalWrite(ledPin7, LOW);
digitalWrite(ledPin8, LOW);
if (counter == 9){ //5
digitalWrite(ledPin7, HIGH);
}
else{
digitalWrite(ledPin7, LOW);
if (counter == 8){ //4,5
digitalWrite(ledPin6, HIGH);
digitalWrite(ledPin7, HIGH);
}
else{
digitalWrite(ledPin6, LOW);
digitalWrite(ledPin7, LOW);
if (counter == 7){ //4
digitalWrite(ledPin6, HIGH);
}
else{
digitalWrite(ledPin6, LOW);
if (counter == 6){ //3,4
digitalWrite(ledPin5, HIGH);
digitalWrite(ledPin6, HIGH);
}
else{
digitalWrite(ledPin5, LOW);
digitalWrite(ledPin6, LOW);
if (counter == 5){ //3
digitalWrite(ledPin5, HIGH);
}
else{
digitalWrite(ledPin5, LOW);
if (counter == 4){ //2,3
digitalWrite(ledPin4, HIGH);
digitalWrite(ledPin5, HIGH);
}
else{
digitalWrite(ledPin4, LOW);
digitalWrite(ledPin5, LOW);
if (counter == 3){ //2
digitalWrite(ledPin4, HIGH);
}
else{
digitalWrite(ledPin4, LOW);
if (counter == 2){ //1,2
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, HIGH);
}
else{
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
if (counter == 1){ //1
digitalWrite(ledPin3, HIGH);
}
else{
digitalWrite(ledPin3, LOW);
}}}}}}}}}}}}}}}}}
}}}
previousState = currentState;
delay(250);
}