Остановка функции Arduino

Тема в разделе "Arduino & Shields", создана пользователем MolodoyElectric, 22 апр 2018.

Метки:
  1. Всем привет. Пишу скетч. При нажатии на кнопку должны начать мигать светодиоды, а как кнопка отжата переставать. Подскажите как остановить работу функции кнопкой.
    Код (C++):
    #include <Bounce2.h>
    Bounce bouncer = Bounce();

    #define LED_PIN12  12
    #define LED_PIN13  13
    #define LOW_INTERVAL 350
    #define HIGH_INTERVAL 70
    void setup() {
      pinMode(2, INPUT);
      digitalWrite(2 ,HIGH);
      pinMode(LED_PIN12 , OUTPUT);
      pinMode(LED_PIN13, OUTPUT);
       bouncer .attach(2);
    bouncer .interval(5);

    }

    void loop() {
      if (bouncer.update())
      {
        if (bouncer.read()==0)
        {
          blinkLed();
        }
        else       ??????
      }

    void blinkLed(){
    static unsigned long period= LOW_INTERVAL;
    static unsigned long prevMillis=0;
      if( (millis()-prevMillis)>=period){
        prevMillis=millis();
         digitalWrite(LED_PIN12,!digitalRead(LED_PIN12));
         digitalWrite(LED_PIN13,!digitalRead(LED_PIN13));
         period=(period==LOW_INTERVAL)?HIGH_INTERVAL: LOW_INTERVAL;  LOW_INTERVAL/HIGH_INTERVAL
      }
      }
     
     
  2. ostrov

    ostrov Гуру

    Установить флаг, если он поднят мигать, не поднят - не мигать. В качестве флага можно использовать сам опрос кнопки, но это не совсем верно. Лучше опрашивать ее с антидребезгом (раз в 50 мс, например) и выставлять флаг по результату.
     
  3. Так, что то я запутался. Здесь у меня указан в качестве флага опрос кнопки как я понял, и я же поставил дребезг. Или я что то неправильно сделал? Прочитал про флаг состояния, дак меня не это интересует, а интересует как остановить функцию blinkLed();, когда кнопка будет отжата.

    Вот я нажал кнопку пин 2, запускается blinkLed(); отжимаю, и blinkLed(); должна остановиться (светодиоды погаснуть).
     
  4. parovoZZ

    parovoZZ Гуру

    Код (C++):
    if  (pin_on) {
    blinkLed()
    }
    фсе
     
    MolodoyElectric нравится это.
  5. ostrov

    ostrov Гуру

    Как оно вообще компилируется у вас?

    И не используйте библиотеки для каждого чиха. Сделайте антидребезг руками, сможете понять как он работает и в каком месте происходит.
     
  6. Компилируется нормально, как дребезг работает я понимаю. Чет не пойму, кнопка почему то вообще не работает. Светодиоды то мигают то просто горят, независимо от кнопки, какая то лажа. Даже убрав дребезг.
     
  7. Понял, спасибо.
     
    Последнее редактирование: 23 апр 2018
  8. parovoZZ

    parovoZZ Гуру

    Здесь ОНО не нужно.