/* * Прошивка для светодиодного светильника LEDlamp v2.1 * Добавлено: * плавное включение/выключение * выключение после долгого нажатия на кнопку * включение заданной яркости за постоянное к-во миллисекунд */ #define BTN 2 // Пин для подключения кнопки #define LED 3 // Пин для подключение мофсета byte State = 0, flag = 0; bool ButtonState = HIGH; // Изменить в зависимости от использованной в проекте кнопки unsigned long previousMillis = 0; unsigned long interval = 2000; // К-во миллиссекунд для включения заданной яркости unsigned long currentMillis = 0; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); pinMode(BTN, INPUT); pinMode(A0, INPUT); } void loop() { if (digitalRead(BTN) == ButtonState) { flag++; currentMillis = millis(); } while (digitalRead(BTN) == ButtonState) { if (millis() - currentMillis >= interval) { flag = 0; analogWrite(LED, 0); break; } } while (digitalRead(BTN) == ButtonState) delay(1); // Задержка от ложный нажатий switch (flag) { case 0: analogWrite(LED, 0); // вторым аргументом в функции устанавливается яркость ленты break; case 1: analogWrite(LED, 40); break; case 2: analogWrite(LED, 85); break; case 3: analogWrite(LED, 175); break; case 4: analogWrite(LED, 250); break; case 5: flag = 0; break; } delay(1); }