Помогите с обработкой кнопок Guverbutton и регулировкой яркости светодиода

AndrySmart

✩✩✩✩✩✩✩
12 Дек 2018
38
2
Киев
Делаю простейший ночничек. для ребенка.
сетодиод и кнопка. при включении он должен плавно зажечься до яркости запомненой при настройке в еепром (с ЕЕПРОМ пока не реализовал) если нажимать коротко один раз то должен на минимум. если двойной клик то на максимум а если удерживать то изменяться яркость. в моем случае не изменяется направление регулировки яркости. не могу понять что я не так напартачил. ну и может кто посоветует лучше алгоритм изменения яркости, что бы обойти восприятие глазом нелинейности. боюсь я напартачил что то в обработке кнопок
вот проба пера не пинайте сильно:
#define BTN_PIN 7         // кнопка п
#define     LED 11         // светодиод
#include "GyverButton.h"
GButton butt1(BTN_PIN);
int   Tbrightness = 0;    // текущая яркость
int   Cbrightness = 255;  // целевая яркость
int   DirBright   =1;     //направление изменения яркости 1 вверх 0 вниз
int       Fade = 10;      // скорость изменения яркости

void setup() {
  pinMode(LED, OUTPUT);

}

void loop() {

   butt1.tick();

   analogWrite(LED, Tbrightness);
   delay(Fade);
   if (butt1.isSingle()) Cbrightness=1;       // одиночное нажати минималка
   if (butt1.isDouble()) Cbrightness=255;     // двойной клик максималка
 
   if (Tbrightness < Cbrightness) Tbrightness ++;
   if (Tbrightness > Cbrightness) Tbrightness --;
   if (butt1.isHold()) BrChange();            // при удержании меняем яркость
   if (butt1.isRelease())DirBright=!DirBright;// при отпускании меняем направление изменения яркости
 
}
void BrChange (){
  Fade = 15+(255/Tbrightness);   // попытка сделать плавнее изменение яркости
  if (DirBright)
  {
    Cbrightness++;
    if (Cbrightness==256)
    {
      Cbrightness--;
      DirBright = 0;
     
      }
   
    }

    else
    {
     
    if (Cbrightness==0)
    {
      Cbrightness++;
      DirBright = 1;
     
      }
     
      }

}
 
Изменено:

Александр Симонов

★★★★✩✩✩
2 Авг 2018
727
208
Поправь код, а то у тебя там операторы если и еще откуда-то взялись

Ну и общий совет: расставь по коду отладочные выводы в Монитор порта, чтоб понимать, в каком порядке выполняется твой код, и какие значения у переменных.
 

Александр Симонов

★★★★✩✩✩
2 Авг 2018
727
208