#include <Servo.h>
const int buttonPin = 2; // Пин, к которому подключена кнопка
int buttonState = LOW; // Текущее состояние кнопки
int lastButtonState = LOW; // Предыдущее состояние кнопки
unsigned long lastDebounceTime = 0; // Переменная для хранения времени последнего изменения состояния кнопки
unsigned long debounceDelay = 50; // Время для подавления дребезга (в миллисекундах)
Servo myservo;
int servoPin = 10;
int relayPin1 = 4;
int relayPin2 = 5;
int relayPin3 = 6;
int relayPin4 = 13;
bool isOpen = false; // Переменная для отслеживания состояния сервопривода
int reading;
void setup() {
pinMode(buttonPin, INPUT);
myservo.attach(servoPin);
myservo.write(0); // Установите сервопривод в 0 градусов
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
pinMode(relayPin3, OUTPUT);
pinMode(relayPin4, OUTPUT);
// Другие настройки, если есть
}
void loop() {
reading = digitalRead(buttonPin);
digitalWrite(relayPin4, !digitalRead(buttonPin));
// Проверка на изменение состояния кнопки с защитой от дребезга
if (reading != lastButtonState) {
lastDebounceTime = millis(); // Запоминаем время изменения состояния кнопки
}
// Если прошло достаточно времени с момента последнего изменения состояния кнопки
if ((millis() - lastDebounceTime) > debounceDelay) {
// Если состояние кнопки изменилось
if (reading != buttonState) {
buttonState = reading; // Сохраняем текущее состояние кнопки
if (buttonState == HIGH) {
// Если кнопка включена (старт)
if (!isOpen) {
myservo.write(90); // Открываем сервопривод
delay(500);
startLEDSequence(); // Запускаем мигание светодиодов
isOpen = true; // Сервопривод открыт
// digitalWrite(relayPin4, HIGH); // Включить светодиод
// delay(1500); // Задержка 500 миллисекунд
// digitalWrite(relayPin4, LOW); // Выключить светодиод
// delay(500);
}
} else {
// Кнопка выключена (стоп)
if (isOpen) {
myservo.write(0); // Закрываем сервопривод
delay(500);
isOpen = false; // Сервопривод закрыт
}
}
}
}
// Сохраняем текущее состояние кнопки как предыдущее
lastButtonState = reading;
}
void startLEDSequence() {
// Ваш код для мигания светодиодов (один раз по очереди) здесь
// Пример: можно использовать цикл для мигания каждого светодиода по очереди с задержкой
// Например, для трех светодиодов:
for (int i = relayPin1; i <= relayPin3; i++) {
digitalWrite(i, HIGH); // Включить светодиод
delay(900); // Задержка 500 миллисекунд
digitalWrite(i, LOW); // Выключить светодиод
delay(100);
}
}