Всегда выполняется ELSE. Помогите нубу
- Войдите на сайт для отправки комментариев
Нашел на форуме только одну похожую ветку, но так и не нашел в ней ответа на вопрос, поэтому попробую задать тут.
Вот купил я значит ардуину, открыл уроки и как 100% нуб сразу нашел себе проблему, с которой пришлось идти на форум. В Гугле, честное пионерское, провел не менее часа.
Итак, операторы IF-ELSE и SWITCH-DEFAULT всегда выполняют операцию else/default при диалоге с монитором порта:
byte val;
То есть, при любом вводе, получаю в ответ либо "miss" либо "odin" и затем "miss".
Здесь на форуме нашел ветку, где челу посоветовали заменить в окне COM-порта "NL(Новая строка)" на "Нет конца строки" и все заработало как надо. Почему заработало - не совсем понял.
Теперь, я подключаю в следующем уроке кнопку ко второму порту и светодиод к 13-му, соответственно, диод должен загореться по нажатию на кнопку. Но у меня снова возникает та же проблема с If-Else — светодиод горит всегда, вне зависимости от нажатия кнопки. (схему пересобирал 2 раза, резисторы перепроверил, что еще сделать ума не приложу). Вот код, скопированный из учебного видео (писал и сам, меняя варианты else if местами):
//Обозначаем пины const int LED1=9; const int BUTTON1=2; void setup() { // Инициализация pinMode (LED1,OUTPUT); pinMode (BUTTON1,INPUT); } void loop() { // Цикличное выполнение программы. if (digitalRead(BUTTON1)== LOW) // если читается на входе (BUTTON) - ноль (LOW). { digitalWrite(LED1, LOW); // То на выходе (LED) - ноль (LOW). } else //если иначе (то есть на входе (BUTTON) логическая единица (HIGH) ). { digitalWrite(LED1,HIGH); // То на выходе (LED) - логическая единица (HIGH). } }
В строке #3 какой пин указан вместо 13-го?
Схема подключения какая?
В строке #3 какой пин указан вместо 13-го?
Схема подключения какая?
Это тут ошибся, 9й пин, сейчас сфоткаю схему
это как, или как всегда, ой это я пробовал и забыл...
1. Служебные символы по нажатию Enter
2. Дребезг контактов
Но у меня снова возникает та же проблема с If-Else — светодиод горит всегда, вне зависимости от нажатия кнопки.
Судя по коду. у вас светодиод должен гореть при НЕнажатой кнопке. А при нажатой - гаснуть.
Если же светик вовсе на кнопку не реагирует - проверяйте схему в третий раз, в коде ошибок не вижу
ну да, глянул фото - дело в схеме, по картинке похоже у вас светодиод подключен между VCC и GND без всякого управления от контроллера. И без резистора - он не сгорел еще?
Но у меня снова возникает та же проблема с If-Else — светодиод горит всегда, вне зависимости от нажатия кнопки.
Судя по коду. у вас светодиод должен гореть при НЕнажатой кнопке. А при нажатой - гаснуть.
Если же светик вовсе на кнопку не реагирует - проверяйте схему в третий раз, в коде ошибок не вижу
Значит я совсем туплю, я этот коду понимаю как:
Если от кнопки получаем 0,
То отправляем на свет 0,
else отправляем на свет 1.
Нет?
ну да, глянул фото - дело в схеме, по картинке похоже у вас светодиод подключен между VCC и GND без всякого управления от контроллера. И без резистора - он не сгорел еще?
со светиком все правильно, хотя сначала тоже показалось, а вот кнопка (вывод 2) жестко на + висит.
Светодиод нормально, а вот двойка закорочена с плюсом, вот он и горит постоянно.
Светодиод нормально, а вот двойка закорочена с плюсом, вот он и горит постоянно.
можно как для первоклассника? белый провод с оранжевым на выходе с кнопки?
кнопка не верно подключена на картинке - белый переставить к резистору
белый вверх к резистору!
Спасибо, умные люди, кажись допетрил, надо перенести контакт второго пина на тот выход с кнопки, который через резистор на землю? Щас попробую
Значит я совсем туплю, я этот коду понимаю как:
Если от кнопки получаем 0,
То отправляем на свет 0,
else отправляем на свет 1.
Нет?
это зависит от подключения кнопки. У вас кнопка подключена так, что у нее нажатое состояние = LOW, а ненажатое = HIGH. поэтому логика обратная
Значит я совсем туплю, я этот коду понимаю как:
Если от кнопки получаем 0,
То отправляем на свет 0,
else отправляем на свет 1.
Нет?
это зависит от подключения кнопки. У вас кнопка подключена так, что у нее нажатое состояние = LOW, а ненажатое = HIGH. поэтому логика обратная
если он провод перенесет, как посоветовали, будет все с точностью до наоборот:)
Все получилось. Разобрал, пересобрал не по памяти, а стараясь вникать в логику процесса, все отлично, всем спасибо