#include <Arduino.h>
#define RED_PIN 32
#define GREEN_PIN 33
#define BLUE_PIN 25
#define BLACK 0
#define RED 1
#define GREEN 2
#define BLUE 3
#define WHITE 4
#define BTN 18
bool button = 0;
bool button_status = 0;
byte color_lasttime = 0;
unsigned long debounce_lasttime = 0; // Время последнего изменения состояния кнопки
void buttonProcessing() {
if (digitalRead(BTN) != button) {
debounce_lasttime = millis(); // Сброс времени дебаунса
button = digitalRead(BTN); // Обновление состояния кнопки
}
if ((millis() - debounce_lasttime) > 50) {
if (!button && !button_status) {
button_status = 1;
Serial.println("Кнопку натиснуто!");
unsigned int button_time = millis();
unsigned int button_bufer;
bool sleep_status = 0;
ledProcessing(RED);
while (!button){
button_bufer = millis() - button_time;
if (digitalRead(BTN) != button) {
debounce_lasttime = millis(); // Сброс времени дебаунса
button = digitalRead(BTN); // Обновление состояния кнопки
}
if ((button_bufer >= 10000) && !sleep_status) {
sleep_status = 1;
Serial.println("Тут повинна бути спроба входу в сплячий режим...");
}
}
Serial.println("Кнопка була натиснута " + String(button_bufer / 1000) + " секунд.");
}
if (button && button_status) {
button_status = 0;
ledProcessing(BLACK);
String text_bufer;
text_bufer = "Кнопку відпущено!";
Serial.println(text_bufer);
}
}
}
void ledProcessing (byte color) {
switch (color)
{
case BLACK:
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, 0);
break;
case RED:
analogWrite(RED_PIN, 255);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, 0);
break;
case GREEN:
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 255);
analogWrite(BLUE_PIN, 0);
break;
case BLUE:
analogWrite(RED_PIN, 0);
analogWrite(GREEN_PIN, 0);
analogWrite(BLUE_PIN, 255);
break;
case WHITE:
analogWrite(RED_PIN, 255);
analogWrite(GREEN_PIN, 255);
analogWrite(BLUE_PIN, 255);
break;
default:
analogWrite(RED_PIN, 255);
analogWrite(GREEN_PIN, 255);
analogWrite(BLUE_PIN, 255);
break;
}
}
void setup() {
Serial.begin(115200);
pinMode(BTN, INPUT_PULLUP); // Ініціалізуємо порт для кнопки
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
Serial.println("Пристрій ініціалізовано.");
}
void loop() {
buttonProcessing();
}