Простая проблема, а решить не могу (чайник)
- Войдите на сайт для отправки комментариев
Вс, 27/10/2019 - 21:12
Помогите разобраться.
Есть устройство, 5 кнопок, 5 светодиодов
При включении питания горит светодиод 2, при нажатии кнопок 1,3,4,5 загорается соотв. светодиод. Кнопка 2 сбрасывает любую включенную кнопку и загорается светодиод 2. Набросал скетч, но при эмуляции светодиод 2 загорается и тут же тухнет, всё остальное работает нормально. Что я делаю не так???
вставили код не по правилам форума )))
Пардон.
int buttonPin = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5; int buttonPin5 = 6; int ledPin1 = 9; int ledPin2 = 10; int ledPin3 = 11; int ledPin4 = 12; int ledPin5 = 13; int buttonState = 0; int buttonState2 = 0; int buttonState3 = 0; int buttonState4 = 0; int buttonState5 = 0; int ledState2 = 1; void setup() { pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); pinMode(ledPin5, OUTPUT); pinMode(buttonPin, INPUT); pinMode(buttonPin2, INPUT); pinMode(buttonPin3, INPUT); pinMode(buttonPin4, INPUT); pinMode(buttonPin5, INPUT); digitalWrite(ledPin2, HIGH); } void loop() { buttonState = digitalRead(buttonPin); buttonState2 = digitalRead(buttonPin2); buttonState3 = digitalRead(buttonPin3); buttonState4 = digitalRead(buttonPin4); buttonState5 = digitalRead(buttonPin5); if (buttonState == HIGH) { digitalWrite(ledPin1, HIGH);} { digitalWrite(ledPin2, LOW);} if (buttonState2 == HIGH) { digitalWrite(ledPin1, LOW);} if (buttonState3 == HIGH) { digitalWrite(ledPin3, HIGH);} if (buttonState2 == HIGH) { digitalWrite(ledPin3, LOW); digitalWrite(ledPin2, HIGH);} if (buttonState4 == HIGH) { digitalWrite(ledPin4, HIGH);} if (buttonState2 == HIGH) { digitalWrite(ledPin4, LOW);} if (buttonState5 == HIGH) { digitalWrite(ledPin5, HIGH);} if (buttonState2 == HIGH) { digitalWrite(ledPin5, LOW);} }Проблема в if-ах, читайте мат.часть.
Читал! Раз 8! Не помогло (((
Самое обидное, что схема 2 кнопки, 2 светодиода работает нормально.
int buttonPin = 2; int buttonPin2 = 3; int ledPin = 11; int ledPin1 = 10; int buttonState = 0; int buttonState2 = 0; int ledState1 = 1; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); digitalWrite(ledPin1, HIGH); } void loop() { buttonState = digitalRead(buttonPin); buttonState2 = digitalRead(buttonPin2); if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); digitalWrite(ledPin1, LOW);} if (buttonState2 == HIGH) { digitalWrite(ledPin, LOW); digitalWrite(ledPin1, HIGH);} }Скажите, чтоу Вас делается в строках №№41-43 ? Нормальными словами расскажите.
Скажите, чтоу Вас делается в строках №№41-43 ? Нормальными словами расскажите.
Если нажата кнопка 1 (она без номера), то загорается светодиод 1 а светодиод 2 гаснет.
(или я неправ???)
Убрал строку 43, теперь светодиод 2 горит постоянно и не гаснет ((
самое обидное что даже если решение вам дадут, все равно не поймете. Может так намек будет понятен.
/**/ const byte button1Pin = 2; const byte button2Pin = 3; const byte led1Pin = 11; const byte led2Pin = 10; bool led1State, led2State; //------------------------------- void setup() { pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(button1Pin, INPUT_PULLUP); pinMode(button2Pin, INPUT_PULLUP); } void loop() { led1State = digitalRead(button1Pin); led2State = digitalRead(button2Pin); digitalWrite(led1Pin, led1State); digitalWrite(led2Pin, led2State); }ПС: Тема должна быть в песочнице.
1. Где схема подключения кнопок?
2. "Кнопка 2 сбрасывает любую включенную кнопку " - в каких строках программы из #2 это делается?
самое обидное что даже если решение вам дадут, все равно не поймете. Может так намек будет понятен.
/**/ const byte button1Pin = 2; const byte button2Pin = 3; const byte led1Pin = 11; const byte led2Pin = 10; bool led1State, led2State; //------------------------------- void setup() { pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(button1Pin, INPUT_PULLUP); pinMode(button2Pin, INPUT_PULLUP); } void loop() { led1State = digitalRead(button1Pin); led2State = digitalRead(button2Pin); digitalWrite(led1Pin, led1State); digitalWrite(led2Pin, led2State); }Оппачки, появилась новая команда bool. Нууу, хоть что-то!
Мда, рановато на 5 светодиодов замахнулись. Надо бы с глубокого изучения книг по С++ для чайников начать. А то элементарно не знаете что такое оператор, тип данных и так далее.
Всем спасибо, проблема решена, просто нужно было причесать программу.
Ну все, писец мелкомягким.))))
А рекомендацией Пуха, воспользуюсь.