Ошибка при использовании библиотеки Bounce

Тема в разделе "Arduino & Shields", создана пользователем Loki_86, 7 апр 2017.

  1. Loki_86

    Loki_86 Нуб

    Доброго времени суток.
    Я в Ардуино начинающий.
    При попытке написания скетча для ШИМ управления двумя кнопками с использованием библиотеки Bounce, вылезли интересные проблемы.
    1 В глобальной функции не могу назначать порты через #define
    2 При попытке записать bouncer.read в какую нибудь переменную сильно ругается (пробовал boolean и int) выдает cannot convert 'Bounce::read' from type 'bool (Bounce::)()' to type 'bool'
    UPD 2 второй вопрос решил и довел код до полностью работоспособного. Но вот что за беда с # define?
    Проблемные места в коде пометил комментариями.

    Код (C++):
    #include <Bounce2.h>

    //скетч разрабатывается для ШИМ управления светодиодом двумя кнопками "+" и "-" по однократному нажатию

    int buttonPin_1 = 2; // не дает почему-то поставить #define buttonPin_1 2
    int buttonPin_2 = 4; // не дает почему-то поставить #define buttonPin_2 4
    int ledPin = 9;  // не дает почему-то поставить #define ledPin 9
    int ledStatus = 0;
    #define ledStep 51;
    #define buttonTime 50
    Bounce bouncer1 = Bounce();
    Bounce bouncer2 = Bounce();
      boolean StatePin_1 = 0;
      boolean StatePin_2 = 0;

    void setup() {
      ledStatus = 0;
      analogWrite(ledPin, ledStatus);
     
      pinMode(buttonPin_1, INPUT_PULLUP);
      bouncer1.attach(buttonPin_1);
      bouncer1.interval(buttonTime);
     
      pinMode(buttonPin_2, INPUT_PULLUP);
      bouncer2.attach(buttonPin_2);
      bouncer2.interval(buttonTime);
    }

    void loop() {
     
      bouncer1.update();
      bouncer2.update();
      boolean val1 =!bouncer1.read();
      boolean val2 =!bouncer2.read();

        if ( val1 == HIGH && val2 == LOW ){
          if (ledStatus<255 && val1 !=StatePin_1){
       ledStatus = ledStatus+ledStep;
       StatePin_1=HIGH;
       if (ledStatus>255){
        ledStatus = 255;
          }
    }
           
        }
       
        if ( val2 == HIGH && val1 == LOW ){
          if (ledStatus>0 && val2 !=StatePin_2){
       ledStatus = ledStatus-ledStep;
       StatePin_2=HIGH;
       if (ledStatus<0){
        ledStatus = 0;
          }
            }
           
        }
        if(val1 == LOW && val2 == LOW){
          StatePin_1=LOW;
          StatePin_2=LOW;
        }
       
       
        analogWrite(ledPin, ledStatus);
      }
     
     
    Последнее редактирование: 7 апр 2017
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    сравните эти две строчки и найдите свою ошибку ;)
     
  3. Loki_86

    Loki_86 Нуб

    Так это компилятор скушал и не подавился
    UPD все косяки исправил. немного усовершенствовал код на проверку одновременного нажатия кнопок. Все гуд. Тему можно удалять.
     
    Последнее редактирование: 8 апр 2017
  4. rkit

    rkit Гуру

    Если у вас проблема, то выкладывайте код с проблемой. И точную информацию об ошибках.