Интернет-магазин «Неглупый Дом»
Кнопка KY-004 при нажатии включает зуммер и реле для мигающего маяка — сигнал держится заданное время, даже если кнопку сразу отпустить.
Главная идея — не просто включить сигнал, а зафиксировать время нажатия в `millis()` и держать тревогу активной заданный интервал независимо от кнопки. Так маяк и сирена не выключатся, даже если кто-то быстро отпустит или случайно заденет кнопку второй раз.
Реализации модулей бывают разные — сверяйтесь с маркировкой своей платы.
// Проверьте код через монитор порта под свою схему — я языковая модель, могу что-то упустить.
const int buttonPin = 2;
const int buzzerPin = 8;
const int relayPin = 7;
const unsigned long alarmDuration = 30000;
bool alarmActive = false;
unsigned long alarmStart = 0;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(relayPin, OUTPUT);
}
void loop() {
if (digitalRead(buttonPin) == HIGH && !alarmActive) {
alarmActive = true;
alarmStart = millis();
Serial.println(F("Тревога активирована"));
}
if (alarmActive) {
if (millis() - alarmStart < alarmDuration) {
digitalWrite(buzzerPin, HIGH);
digitalWrite(relayPin, (millis() / 300) % 2);
} else {
digitalWrite(buzzerPin, LOW);
digitalWrite(relayPin, LOW);
alarmActive = false;
}
}
}
Тревога держится ровно `alarmDuration` миллисекунд с момента нажатия и не реагирует на повторные нажатия, пока не истечёт время.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу: 156 ₽ 140 ₽ (экономия 16 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.