Изучение работы кнопки (не работает как надо)
- Войдите на сайт для отправки комментариев
Ср, 06/01/2016 - 19:11
День добрый!
Начал изучать Ардуино (заказан с Алиэкспресса Funduino Uno)/
Дошёл до 2-йго урока, где изучается кнопка. В результате у меня встроенный светодиод (13-й цифровой вывод) постоянно моргает, если на цифровой вход, который установлен как сенсор (через стягивающий резистор).
не знаю на что думать...
программа вроде нормально написана:
boolean currentStatus = LOW; boolean lastStatus = LOW; boolean statusLed = LOW; const int BUTTON = 7; void setup() { pinMode(BUTTON, INPUT); pinMode(13, OUTPUT); digitalWrite(13, statusLed); } void loop() { currentStatus = getButtonStatus(lastStatus); if (currentStatus == HIGH && lastStatus ==LOW) { statusLed = !statusLed; } digitalWrite(13, statusLed); } boolean getButtonStatus(boolean last) { boolean current = digitalRead(BUTTON); if (last != current) { delay(50); current = digitalRead(BUTTON); return current; } }
Подскажите, что да как мне делать? так как кнопку мне необходимо задействовать в моей задумке "Светофор", как переключение режимов работы светофора (дальше буду уже от фоторезистора делать).
Да, забыл сказать, что подключиил на 5В и на GND через сопротивление в 220 Ом светодиод - он горит ровнои не моргает, а вот 13-й светодиод, который получает команду от 7 входа - моргает постоянно (порядка 10 морганий в секунду)
lastStatus - нигде не присваивается. Остальное не смотрел.
Благодарю, добавил строку в функции loop(). Теперь 13-й светодиод моргает постоянно на 65% яркости.
исключения - когда замыкаю кнопку - то ярко светит, то отключает светодиод.
Теперь 13-й светодиод моргает постоянно на 65% яркости.
Чем измеряли яркость? Там точно не 60? и не 70%?
А если серьёзно, то это разговор "в пользу бедных".
Прочитайте вот эту фразу:
В результате у меня встроенный светодиод (13-й цифровой вывод) постоянно моргает, если на цифровой вход, который установлен как сенсор (через стягивающий резистор).
Вы её поняли? Я - нет. Что там за вход, который установлен как сенсор? Да, "если на цифровой вход", то ЧТО? И, кстати "ЧТО" на цифровой вход? Землю подать? Или питание? Или пописать?
Поэтому, давайте так, если Вам нужна помощь, то:
1. Полный скетч в студию
2. Полную схему в студию
3. Внятно объяснте чего Вы хотите и что в реальности получаете.
А что он у Вас дрыгаться будет, это понятно. Подумайте, что возвращает Ваша функция getButtonStatus в том случае, если last оказался равным current? Посмотрите, подумайте.
Извольте:
1) Скетч:
2) Схема по ссылке https://yadi.sk/i/damzB1uqmiD33
3) Хочу что бы при нажатии на кнопку изменялось состояние встроенного светодиода (на 13-м пине) при этом никаких морганий.
Пример взят из книги Джерими Блюма...
Благодарю за подсказку: перенес return из условия и вроде как всё заработало.
Ну, и слава Богу.
Вот результат работы кнопки, чего я добивался.
https://yadi.sk/i/Qny1QnYxmiKYu
Показан один из моментов, когда нажатие кнопки среди паузы отрабатывает после выполнения подпрграммы.