Две кнопки, Bounce и проблема
- Войдите на сайт для отправки комментариев
Ср, 06/03/2013 - 22:21
Написал скетч для управления драйвером светодиода. Использовал Bounce, потомучто впоследствии хочу дописать шим управление в зависимости от длительности нажатия (ну или количества нажатий). Но пока даже не могу реализовать выключение по нажатию кнопки 2. Но вот Включать получается по нажатию кнопки 1. В чем-то косяк, подскажите где?
//подключаем библиотеку Bounce
#include <Bounce.h>
//дефайним значения пинов с кнопкой и со светодиодом
#define BUTTON1 2
#define BUTTON2 3
#define LED 9
//создаем объект класса Bounce. Указываем пин, к которому подключена кнопка, и время дребезга в мс.
Bounce bouncer1 = Bounce(BUTTON1,5); // включение
Bounce bouncer2 = Bounce(BUTTON2,5); // выключение
//задаем начальное состояние светодиода "выключен"
int ledValue = LOW;
void setup() {
//определяем режимы работы пинов
pinMode(BUTTON1,INPUT);
pinMode(BUTTON2,INPUT);
pinMode(LED,OUTPUT);
}
void loop() {
//если сменилось состояние кнопки1
if ( bouncer1.update() ) {
//если считано значение 1
if ( bouncer1.read() == HIGH ) {
//если свет был выключен, будем его включать
if ( ledValue == LOW ) {
ledValue = HIGH;
}
}
}
//если сменилось состояние кнопки2
if ( bouncer2.update() ) {
//если считано значение 1
if ( bouncer2.read() == HIGH ) {
//если свет был включен, будем его вsключать
if ( ledValue == HIGH ) {
ledValue = LOW;
}
}
}
//записываем значение вкл/выкл на пин со светодиодом
digitalWrite(LED,ledValue);
}
Ну а так работает?
//дефайним значения пинов с кнопкой и со светодиодом #define BUTTON1 2 #define BUTTON2 3 #define LED 9 //задаем начальное состояние светодиода "выключен" bool ledValue = LOW; void setup() { //определяем режимы работы пинов pinMode(LED,OUTPUT); } void loop() { //если сменилось состояние кнопки2 if (digitalRead(BUTTON1) == HIGH) { //если свет был выключен, будем его включать if (ledValue == LOW) ledValue = HIGH; delay(100); } //если сменилось состояние кнопки2 if (digitalRead(BUTTON2) == HIGH) { //если свет был включен, будем его вsключать if (ledValue == HIGH) ledValue = LOW; delay(100); } //записываем значение вкл/выкл на пин со светодиодом digitalWrite(LED, ledValue); }Да, с digitalread работает. я такой скетч находил в примерах от конструктора SIK там это circuit5. Мне хотелось с перспективой на длительность нажатия. Поэтому я написал с bounce