#include <Arduino.h>
#include <EncButton.h>
#define LED_PIN_1 33
#define LED_PIN_2 32
#define LED_PIN_3 18
#define LED_PIN_4 19
Button b1(14);
Button b2(27);
Button b3(26);
Button b4(25);
uint32_t time1, time2, time3, time4;
int tar_bri1, tar_bri2, tar_bri3, tar_bri4;
int cur_bri1, cur_bri2, cur_bri3, cur_bri4;
bool blya1, blya2, blya3, blya4;
int time_smooth1, time_smooth2, time_smooth3, time_smooth4;
void setup() {
Serial.begin(115200);
}
void loop() {
b1.tick();
b2.tick();
b3.tick();
b4.tick();
if (b1.click()) { //если кнопка нажата
blya1 = !blya1; //инвертируем вспомогательную переменную
if (blya1 == 1) tar_bri1 = 100; //если бля равно 1 выполняем условие
else tar_bri1 = 0; //иначе бля равно 0
tar_bri1 = map(tar_bri1, 0, 100, 0, 255);
}
if (b2.click()) { //если кнопка нажата
blya2 = !blya2; //инвертируем вспомогательную переменную
if (blya2 == 1) tar_bri2 = 100; //если бля равно 1 выполняем условие
else tar_bri2 = 0; //иначе бля равно 0
tar_bri2 = map(tar_bri2, 0, 100, 0, 255);
}
if (b3.click()) { //если кнопка нажата
blya3 = !blya3; //инвертируем вспомогательную переменную
if (blya3 == 1) tar_bri3 = 100; //если бля равно 1 выполняем условие
else tar_bri3 = 0; //иначе бля равно 0
tar_bri3 = map(tar_bri3, 0, 100, 0, 255);
}
if (b4.click()) { //если кнопка нажата
blya4 = !blya4; //инвертируем вспомогательную переменную
if (blya4 == 1) tar_bri4 = 100; //если бля равно 1 выполняем условие
else tar_bri4 = 0; //иначе бля равно 0
tar_bri4 = map(tar_bri4, 0, 100, 0, 255);
}
if (millis() - time1 >= time_smooth1) { //выполняем каждые 20 мс
time1 = millis();
if (tar_bri1 > cur_bri1) {
time_smooth1 = 20;
cur_bri1++;
}
if (tar_bri1 < cur_bri1) {
if (cur_bri1 == 150) time_smooth1 = 25;
else if (cur_bri1 == 130) time_smooth1 = 30;
else if (cur_bri1 == 80) time_smooth1 = 60;
else if (cur_bri1 == 30) time_smooth1 = 80;
cur_bri1--;
}
analogWrite(LED_PIN_1, cur_bri1);
}
if (millis() - time2 >= time_smooth2) { //выполняем каждые 20 мс
time2 = millis();
if (tar_bri2 > cur_bri2) {
time_smooth2 = 20;
cur_bri2++;
}
if (tar_bri2 < cur_bri2) {
if (cur_bri2 == 150) time_smooth2 = 25;
else if (cur_bri2 == 130) time_smooth2 = 30;
else if (cur_bri2 == 80) time_smooth2 = 60;
else if (cur_bri2 == 30) time_smooth2 = 80;
cur_bri2--;
}
analogWrite(LED_PIN_2, cur_bri2);
}
if (millis() - time3 >= time_smooth3) { //выполняем каждые 20 мс
time3 = millis();
if (tar_bri3 > cur_bri3) {
time_smooth3 = 20;
cur_bri3++;
}
if (tar_bri3 < cur_bri3) {
if (cur_bri3 == 150) time_smooth3 = 25;
else if (cur_bri3 == 130) time_smooth3 = 30;
else if (cur_bri3 == 80) time_smooth3 = 60;
else if (cur_bri3 == 30) time_smooth3 = 80;
cur_bri3--;
}
analogWrite(LED_PIN_3, cur_bri3);
}
if (millis() - time4 >= time_smooth4) { //выполняем каждые 20 мс
time4 = millis();
if (tar_bri4 > cur_bri4) {
time_smooth4 = 20;
cur_bri4++;
}
if (tar_bri4 < cur_bri4) {
if (cur_bri4 == 150) time_smooth4 = 25;
else if (cur_bri4 == 130) time_smooth4 = 30;
else if (cur_bri4 == 80) time_smooth4 = 60;
else if (cur_bri4 == 30) time_smooth4 = 80;
cur_bri4--;
}
analogWrite(LED_PIN_4, cur_bri4);
}
}