Нужно сделать кнопку, чтобы выключить будильник на часах
ну я вам задание сделать школьный проект будильник с помощью Arduino, xD как вы можете видеть, я не очень хорош в этом смысле я кое-что знаю, но не все, поэтому, пожалуйста, может кто-нибудь помочь мне, я скопировал этот код откуда-то из сети, и я делаю небольшие изменения, но есть единственное, чего я не могу сделать правильно, я просто хочу добавить, когда я нажимаю кнопку, это остановить будильник с звуковой сигнал, сейчас он пищит, пока, например, я поставил будильник на 08:05 он будет звонить до 08:06, мой вопрос: как я могу сделать это, когда я нажимаю кнопку тревоги уходит , кто-то может дать мне несколько советов, я был бы очень благодарен
я скопировал исходный код отсюда: http://roboticadiy.com/how-to-make-arduino-alarm-clock/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Установите жидкокристаллический адрес на 0x27 для отображения 16 символов и 2 строк
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <DS1302.h>
int Hour;
int Min;
int pset = 8; // кнопка для установки будильника
int phour = 9; // кнопка для часа
int pmin = 10; // кнопка для минут
int pexit = 11; // кнопка для выхода из установленного будильника
int buzzer = 6;
int h;
int m;
int buttonforset = 0; // состояние кнопки для установки будильника
int buttonforhour = 0; // состояние кнопки для часа
int buttonformin = 0;// состояние кнопки для минут
int buttonforexit = 0;// состояние кнопки для выхода из установки будильника
int activate=0;
Time t;
// Init the DS1302
DS1302 rtc(2, 3, 4);
void setup()
{
pinMode(pset, INPUT);
pinMode(phour, INPUT);
pinMode(pmin, INPUT);
pinMode(pexit, INPUT);
// Установите часы в режим запуска и отключите защиту от записи
rtc.halt(false);
rtc.writeProtect(false);
// Setup LCD to 16x2 characters
lcd.begin();
// Следующие строки можно закомментировать, чтобы использовать значения, уже сохраненные в DS1302
//rtc.setDOW(СУББОТА); // Set Day-of-Week to FRIDAY
//rtc.setTime(10, 0, 0); // Установите время 12:00:00 (формат 24 часа)
//rtc.setDate(11, 11, 2017); // Установите дату на 6 августа 2010 года
}
void loop()
{
if (activate == 0) {
// Время на правой верхней строке
lcd.setCursor(0, 0);
lcd.print("Time: ");
lcd.setCursor(6, 0);
lcd.print(rtc.getTimeStr());
// Отображение сокращенного Дня недели в левом нижнем углу
//lcd.setCursor(0, 1);
//lcd.print(rtc.getDOWStr(FORMAT_SHORT));
// Отображение даты в правом нижнем углу
lcd.setCursor(0, 1);
lcd.print("Date: ");
lcd.setCursor(6, 1);
lcd.print(rtc.getDateStr());
t = rtc.getTime();
Hour = t.hour;
Min = t.min;
buttonforset = digitalRead(pset);
} // setting button pressed
if (buttonforset == HIGH) {
activate =1;
lcd.clear(); }
while(activate== 1){
lcd.setCursor(0,0);
lcd.print("Set Alarm");
lcd.setCursor(0,1);
lcd.print("Hour= ");
lcd.setCursor(9,1);
lcd.print("Min= ");
buttonforhour = digitalRead(phour); // установить час для будильника
if (buttonforhour == HIGH){
h++;
lcd.setCursor(5,1);
lcd.print(h);
if (h>23){
h=0;
lcd.clear(); }
delay(100);
}
buttonformin = digitalRead(pmin); // установить минуты для будильника
if (buttonformin == HIGH){
m++;
lcd.setCursor(13,1);
lcd.print(m);
if (m>59){
m=0;
lcd.clear();}
delay(100);
}
lcd.setCursor(5,1);
lcd.print(h);
lcd.setCursor(13,1);
lcd.print(m);
buttonforexit = digitalRead(pexit); // выход из установленного режима тревоги
if (buttonforexit == HIGH){
activate = 0;
lcd.clear();
lcd.print("Postavljanje");
lcd.setCursor(0,1);
lcd.print("alarma...");
delay(2000);
lcd.clear();
}
}
if (Hour== h && Min== m) {
lcd.clear();
lcd.print("Budenje...");
tone(6,5000);
delay(1000);
noTone(6);}
}
@cukoloda1234, 👍0
Обсуждение0
- Та же кнопка одним кликом и двойным кликом
- Соединение I2C с модулем камеры MT9D111, странные результаты после записи регистров через i2C
- PCF8583 с задержкой Arduino в одну секунду?
- Я не знаю, как сделать код для rtc, управляющего реле
- Как включить 3 светодиода в повторяющейся последовательности, чтобы все три светодиода затем выключались при отпускании используемой кнопки?
- Не удается обновить время в RTC через I2c
- DS3231 + кнопка для включения подсветки
- Как назвать датчики температуры вместо адреса печати с помощью датчиков ds2482-100 и ds18b20 - Справка
ну, на самом деле это не проблема, все работает хорошо, но я просто хочу добавить, когда я нажимаю кнопку, он останавливает сигнал тревоги от звукового сигнала, теперь он подает звуковой сигнал, пока, например, я не установлю сигнал тревоги на 08:05 он будет звонить до 08:06 мой вопрос в том, как я могу сделать это, когда я нажимаю кнопку, сигнал тревоги выключается, @cukoloda1234
xd да, я знаю, что я noob на этом сайте я пытался разместить его здесь, но это просто испортить он не пишет в строках, как я Arduino Ide, @cukoloda1234
вот оригинальный код https://roboticadiy.com/how-to-make-arduino-alarm-clock/, @cukoloda1234
используйте флаг, чтобы включить звуковой сигнал тревоги ... очистить флаг с таймером ... также снимите флажок при нажатии кнопки ... вот пример того, как использовать переменную флага ... https://arduinoprosto.ru/q/81738/how-can-i-break-the-loop-if-it-hasnt-finished-in-10-seconds/81739#81739, @jsotola