Две кнопки, Bounce и проблема

Balas
Offline
Зарегистрирован: 05.03.2013

Написал скетч для управления драйвером светодиода. Использовал 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);
}

 

maksim
Offline
Зарегистрирован: 12.02.2012

Ну а так работает?

//дефайним значения пинов с кнопкой и со светодиодом
#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);
} 

 

Balas
Offline
Зарегистрирован: 05.03.2013

Да, с digitalread работает. я такой скетч находил в примерах от конструктора SIK там это circuit5. Мне хотелось с перспективой на длительность нажатия. Поэтому я написал с bounce