Помогите начинающему: Буквально недавно приобрёл ардуино и сталкнулся с непонятной проблемой - Одна кнопка, 3 диода , нажатие кнопки сделал по туториолу (работает), и решил сделать чтобы диоды по разному мигали (гирлянда), сделал чтобы при нажатии уровень (вариант мигания) повышался на 1 и проверка - если 1 то такое мигание, если 2 то такое мигание .... (пока для начала просто горит один из диодов) Но проблемма - они все по очереди мигают, коофицент 0 в теории ничего гореть не должно, а всё равно выполняются все "if" ... Помогите !!! Код (C): int switchPin = 5; int ledPin1 = 9; int ledPin2 = 10; int ledPin3 = 11; int ledLevel = 0; boolean lastButton = LOW; // может принимать только два значения boolean currentButton = LOW; void setup () // часть коа которая выполняется только один раз { pinMode(switchPin, INPUT); // инициализируем контакт как выход pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); } boolean debounce(boolean last) // функция которая смягчает вкл\выкл { boolean current = digitalRead(switchPin); if(last != current) { delay(5); current = digitalRead(switchPin); } return current; } void loop() // безконечно повторояющаяся часть кода { currentButton = debounce(lastButton); if (lastButton == LOW && currentButton == HIGH) { ledLevel = ledLevel; if (ledLevel > 3) {ledLevel = 0;} } lastButton = currentButton; if (ledLevel = 1) { digitalWrite(ledPin1, HIGH); delay(200); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); } if (ledLevel = 2) { digitalWrite(ledPin2, HIGH); delay(200); digitalWrite(ledPin1, LOW); digitalWrite(ledPin3, LOW); } if (ledLevel = 3) { digitalWrite(ledPin3, HIGH); delay(200); digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); } }
Оператор сравнения в C/C++ это "==", а не "=". У вас в коде выполняется присваивание внутри условия if (). Да, так тоже можно писать! Но это не то, что вам в данном случае нужно.
там был "ledLevel = ledLevel + 1;" потом я решил проверить не там ли ошибка... а потом забыл исправить обратно. Спасибо, как и думал какая-нибудь будет глупая ошибка, сейчас исправлю - проверю)