Постоянное отключение сигнализации
#include <RTClib.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // установите адрес ЖК-дисплея на 0x27 для 16 символов и 2-строчного дисплея
int nowHr, nowMin, nowSec;
RTC_DS3231 rtc;
const int pin_contact= 6;
const int buzzer = 9;
//first alarm
int h1=15;
int m1=51;
int s1=0;
void timeScreen() { // функция отображения даты и времени на LCD
DateTime now = rtc.now(); // take rtc time and print in display
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Time:");
lcd.setCursor(6, 0);
lcd.print(nowHr = now.hour(), DEC);
lcd.print(":");
lcd.print(nowMin = now.minute(), DEC);
lcd.print(":");
lcd.print(nowSec = now.second(), DEC);
lcd.setCursor(0, 1);
lcd.print("Date: ");
lcd.print(now.day(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.year(), DEC);
delay(500);
}
void setup()
{
Wire.begin();
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // uncomment this to set the current time and then comment in next upload when u set the tim
rtc.adjust(DateTime(2021, 03, 27, 15, 50, 50)); // manual time set
lcd.backlight();
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("hello"); // печать месседжа при запуске
lcd.setCursor(0, 1);
lcd.print("world");
delay(1000);
timeScreen();
delay(3000);
lcd.clear();
// Установить зуммер - вывод 9 в качестве выхода
pinMode(pin_contact, INPUT);
// Установить зуммер - вывод 9 в качестве выхода
Serial.begin(9600);
}
void loop()
{
timeScreen();
lcd.backlight();
at8am();
Serial.begin(9600);
}
void at8am() { // функция, чтобы начать гудеть в 8 утра
DateTime t = rtc.now();
if (int(t.hour()) == h1 && int(t.minute()) == m1 ) {
/////////////////////////////////////////////////////
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Time for ");
lcd.setCursor(0, 1);
lcd.print("breakfast");
stopbuzzer();
delay(5000);
/////////////////////////////////////////////////////
}
}
void stopbuzzer ()
{
int buzzer_state=1;
int stare_contact = digitalRead(pin_contact);
if (stare_contact == HIGH && buzzer_state==1)
{
buzzer_state=0;
}
digitalWrite(buzzer,buzzer_state);
}
- Алло ! Мое намерение состоит в том, чтобы остановить сигнал тревоги после нажатия кнопки. В этом коде звонит зуммер, когда если условие выполнено, и он останавливается при нажатии кнопки, но не навсегда, он продолжает звонить до тех пор, пока условия доступны. Как может зуммер перестать звонить после нажатия кнопки?
@Biancaaa, 👍0
Обсуждение0
Смотрите также:
- Как сделать так, чтобы мой пьезо-зуммер гудел только один раз без повторения?
- Может ли Arduino Uno работать со всеми этими компонентами?
- Как переключить светодиод при нажатии кнопки?
- Нажать клавишу Windows, используя «keyboard.press();»
- Цепь с зуммером не работает
- Устранение дребезга кнопки с помощью прерывания
- Хорошая кнопка debouncing/Библиотека StateChange
- Напряжение меняется, но цифровой поток всегда HIGH
Пожалуйста, без кода в качестве изображения. Вы можете скопировать и вставить код в виде текста в вопрос, а затем правильно отформатировать его (выбрав его и нажав кнопку" {}")., @chrisl
И, пожалуйста, предоставьте полный компилируемый код, @chrisl
Я редактировал сейчас @chrisl, @Biancaaa
Я предполагаю, что под "при наличии условий" вы подразумеваете, что будильник будет перезапускаться в течение 1 минуты каждые 5 секунд. Вы проверяете только время и минуты, равные времени будильника. Как насчет того, чтобы также проверить секунды? Также: Почему вы начинаете последовательно на каждой итерации цикла? Это не имеет смысла., @chrisl
Если вы хотите остановить его “навсегда”, вы можете вызвать "выход(0)" или "прервать ()" сразу после его остановки., @Edgar Bonet
@EdgarBonet спасибо тебе!, @Biancaaa
Это ответ на ваш вопрос? Зуммер+кнопка+arduino, @Juraj
@Juraj не совсем, это все еще не работает, @Biancaaa
и почему вы создали новый вопрос?, @Juraj
@Juraj, потому что это связано с новой проблемой, которая у меня есть, @Biancaaa