const int BUTTON_PIN = PA0;
const int LED_PIN = PB6;
bool ledEnabled = false;
int brightness = 128;
bool directionUp = true;
unsigned long lastDebounceTime = 0;
const unsigned long DEBOUNCE_DELAY = 50;
int lastButtonState = HIGH;
int buttonState = HIGH;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
analogWrite(LED_PIN, ledEnabled ? brightness : 0);
Serial.begin(9600);
Serial.println("Система запущена. Управляйте яркостью!");
}
void loop() {
int reading = digitalRead(BUTTON_PIN);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > DEBOUNCE_DELAY) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
unsigned long pressStart = millis();
// Ждем отпускания кнопки
while (digitalRead(BUTTON_PIN) == LOW) {
delay(10);
}
unsigned long pressDuration = millis() - pressStart;
if (pressDuration < 500) {
ledEnabled = !ledEnabled;
if (ledEnabled) {
analogWrite(LED_PIN, brightness);
Serial.println("LED включен");
} else {
analogWrite(LED_PIN, 0);
Serial.println("LED выключен");
}
}
else if (pressDuration > 1000) {
Serial.print("Меняем яркость ");
Serial.println(directionUp ? "увеличивая" : "уменьшая");
while (digitalRead(BUTTON_PIN) == LOW) {
if (directionUp) {
brightness += 5;
if (brightness > 255) {
brightness = 255;
}
} else {
brightness -= 5;
if (brightness < 0) {
brightness = 0;
}
}
if (ledEnabled) {
analogWrite(LED_PIN, brightness);
}
delay(30);
}
directionUp = !directionUp;
Serial.print("Яркость установлена: ");
Serial.println(brightness);
}
}
}
}
lastButtonState = reading;
}