Оглавление:
- Шаг 1. Инструкции по подключению
- Шаг 2:
- Шаг 3:
- Шаг 4:
- Шаг 5:
- Шаг 6:
- Шаг 7:
- Шаг 8:
- Шаг 9: Инструкции по программированию
- Шаг 10:
- Шаг 11:
- Шаг 12:
- Шаг 13:
- Шаг 14:
Видео: Проект будильника Arduino: 14 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В этом проекте мы будем использовать Arduino Uno для управления ЖК-экраном, чтобы отображать текущее время и время, на которое установлен будильник. Мы будем использовать кнопки для установки каждый раз.
Материалы:
- Arduino Uno -
- Макетная плата -
- Провода перемычки (x13 +) -
- Резисторы 10 кОм (x4) -
- ЖК-экран -
- 7 кнопок -
- Пьезо-динамик -
Шаг 1. Инструкции по подключению
1. Подключите перемычку от контакта 5V на Arduino к одной из шин + на макетной плате.
Шаг 2:
2. Подключите перемычку от контакта GND на Arduino к шине - рядом с шиной +, которую вы выбрали на макетной плате.
Шаг 3:
3. Подключите ЖК-экран к источнику питания, заземлению и контакту TX (контакт 1).
Шаг 4:
4. Поместите 7 кнопок на макетную плату так, чтобы ножки попали в щель в макете.
Шаг 5:
5. Поместите резисторы 10 кОм от шины - с подключенным к ней контактом GND к нижним левым контактам кнопок.
Шаг 6:
6. Поместите перемычки между нижним правым контактом кнопок и шиной 5 В на макетной плате.
Шаг 7:
7. Поместите перемычки между контактами 6, затем 8-13 и контактом кнопки, к которой подключен резистор.
Шаг 8:
8. Затем поместите пьезо-динамик на макетную плату и подключите контакт 7 к контакту питания, а затем резистор 100 Ом к земле.
Шаг 9: Инструкции по программированию
1. Обзор: этот проект попросит пользователя установить текущее время при первоначальном включении на дисплее, текущее время и время, на которое установлен будильник. Подключенные выше кнопки будут использоваться для настройки каждый раз. Слева направо они устанавливают текущий час, устанавливают текущую минуту, устанавливают текущее AM или PM, устанавливают время будильника, устанавливают минуты сигнала будильника, устанавливают будильник AM или PM. Последняя кнопка используется для отключения звука будильника, когда он срабатывает.
Шаг 10:
2. Первое, что нам нужно сделать, это инициализировать нашу переменную, которую мы собираемся использовать.
// Инициализируем переменные для использования int hour = 0; // Час для текущего времени int minute = 0; //
Минуты текущего времени int second = 0; // Секунда на текущее время
int hour_a = 0; int // Час для будильника
минута_а = 0; // Минута времени будильника
bool am_pm = false; // Флаг переключения AM / PM. False - AM, True - PM
bool am_pm_a = false; // Флаг переключения AM / PM для будильника. False - AM, True - PM
int set_hr = 13; // Используйте вывод 13, чтобы установить час
int set_min = 12; // Используйте вывод 12 для установки минутного интервала
set_am_pm = 11; // Используйте контакт 11 для установки am / pm
int set_hr_a = 10; // Используйте контакт 10, чтобы установить час для будильника int set_min_a = 9; // Используйте вывод 9 для установки минут для будильника int set_am_pm_a = 8; // Используйте контакт 8, чтобы установить am / pm для будильника
int динамик = 7; // Пин для использования в Speakerint quiet = 6; // Закрепить, чтобы остановить динамик
bool alarm = false; // Флаг для переключения, чтобы продолжать тревогу
bool quieted = false; // Флаг, показывающий, что тихо, не был нажат
int cur_time = 0; // Переменная текущего времени
int etime = 0; // Переменная прошедшего времени
Шаг 11:
3. Затем нам нужно настроить ЖК-экран и сказать пользователю, что нужно установить текущее время. Поскольку это нужно сделать только один раз, мы сделаем это в процессе настройки.
void setup () {
// Настраиваем ЖК-экран
Serial.begin (9600); // Инициализируем последовательный порт на скорости 9600 бод
Serial.write (17); // Включаем подсветку
Serial.write (24); // Включаем дисплей с курсором и без мигания
Serial.write (12); // Очистить экран
Serial.write (128); // Перемещаем курсор в верхний левый угол // Устанавливаем pinModes pinMode (set_hr, ВХОД); pinMode (set_min, ВХОД);
pinMode (set_am_pm, INPUT);
pinMode (set_hr_a, ВХОД);
pinMode (set_min_a, ВХОД);
pinMode (set_am_pm_a, ВХОД);
pinMode (динамик, ВЫХОД);
pinMode (тихий, ВХОД);
// При начальном питании пользователь устанавливает текущее время. Serial.print («Установить текущее время»); задержка (2000);
Serial.write (12);
printTimes ();
cur_time = миллис (); // Сохраняем текущее время}
Шаг 12:
4. Затем в цикле мы отслеживаем время и считываем статус кнопки, чтобы узнать, устанавливает ли пользователь какое-либо время.
void loop () {
// Подождите немного
подождите немного();
// Проверяем, не пора ли тревожить!
if ((час == час_a && минута == минута_a &&! quieted) || будильник) {тон (динамик, 2000, 500); // Вывод звука 2000 Гц на динамик в течение 500 мс
задержка (500); // Задержка 500 мс if (! Alarm) {// Если будильник выключен, включите его
}
}
// Если пользователь отключает сигнал будильника, нажимая кнопку отключения звука, перестанет сигнализировать if (alarm &&! Quieted && digitalRead (quiet)) {
тревога = ложь;
quieted = true; }
// Сбросить сигнал тревоги, если (! Alarm && quieted && minute! = Minute_a) {quieted = false;
}
// Проверяем, идут ли установленные контакты на высокий уровень, и если да, увеличиваем соответствующее значение if (digitalRead (set_hr) && hour <12) {
час ++;
printTimes ();
debounce ();
}
иначе, если (digitalRead (set_hr) && час == 12) {час = 1;
printTimes ();
debounce ();
}
еще{}
if (digitalRead (set_min) && minute <59) {
минута ++; printTimes ();
debounce ();
}
иначе, если (digitalRead (set_min) && minute == 59) {minute = 0;
printTimes ();
debounce ();
}
else {} if (digitalRead (set_am_pm) && am_pm) {
am_pm = ложь;
printTimes ();
debounce ();
}
иначе, если (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
debounce ();
}
else {} if (digitalRead (set_hr_a) && hour_a <12) {
hour_a ++;
printTimes ();
debounce ();
}
иначе, если (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
debounce ();
}
else {} if (digitalRead (set_min_a) && minute_a <59) {
минута_а ++;
printTimes ();
debounce ();
}
иначе, если (digitalRead (set_min) && minute_a == 59) {minute_a = 0;
printTimes ();
debounce ();
}
else {} if (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = ложь;
printTimes ();
debounce ();
}
иначе, если (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;
printTimes ();
debounce ();
}
еще{}
}
Шаг 13:
5. Здесь вы заметите пару подпрограмм, которые я создал - debounce () и printTimes (). Debounce () используется, чтобы убедиться, что мы читаем кнопки только один раз. Поскольку Arduino сканирует тысячи раз в секунду, он может подумать, что кнопка была нажата несколько раз, когда вы предполагали, что она будет прочитана только один раз. Debounce () заморозит программу до тех пор, пока кнопка не будет отпущена. printTimes () обновляет ЖК-экран, но, поскольку это было несколько команд, я набрал их один раз, а затем могу вызвать подпрограмму в любое время, когда значение времени изменится.
// Пока какая-либо из кнопок нажата, оставайтесь в этой функции, затем задержите 250 мс.
void debounce () {
while (digitalRead (set_hr) || digitalRead (set_min) ||
digitalRead (set_am_pm) || digitalRead (set_hr_a) ||
digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} задержка (250);
}
// Печатает обновленное время, если есть какие-то изменения
void printTimes () {
Serial.write (12);
Serial.print ("Текущее время:");
Serial.write (148);
if (hour <10) {
Serial.print («0»);
}
Serial.print (час);
Serial.print (":");
if (минута <10) {
Serial.print («0»);
}
Serial.print (минута); Serial.print (":");
if (second <10) {
Serial.print («0»);
}
Serial.print (второй);
if (am_pm) {
Serial.print («ПМ»);
}
еще{
Serial.print («AM»);
}
Serial.write (168);
Serial.print («Будильник установлен для:»);
Serial.write (188);
if (hour_a <10) {
Serial.print («0»);
}
Серийный.печать (час_а);
Serial.print (":");
if (minute_a <10) {
Serial.print («0»);
}
Серийный.печать (минута_а);
if (am_pm_a) {
Serial.print («ПМ»);
}
еще{
Serial.print («AM»);
}
}
// Увеличиваем временные параметры void
подождите немного(){
etime = millis () - cur_time;
if (etime> = 1000 && second <59) {
второй ++;
cur_time = миллис ();
printTimes ();
}
иначе, если (время> = 1000 && секунда == 59 && минута <59) {секунда = 0;
минута ++;
cur_time = миллис ();
printTimes ();
}
else if (etime> = 1000 && second == 59 && minute == 59 && hour <12) {
второй = 0; минута =
0; час ++; cur_time =
миллис (); printTimes ();
}
else if (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {
второй = 0; минута =
0; час = 1; am_pm =
!до полудня после полудня;
cur_time = миллис ();
printTimes ();
}
еще{}
}
Шаг 14:
6. Вот и все!
Скомпилируйте и загрузите, и все готово!
Рекомендуемые:
Умный светильник для будильника: 8 шагов (с изображениями)
Обновленный будильник Smart Light: в этом проекте я использую полностью сломанный заводной будильник. Циферблат часов заменен 12 светодиодами, которые подсвечиваются светодиодной лентой по ободку часов. 12 светодиодов показывают время, а светодиодная лента запрограммирована на работу в качестве сигнала тревоги, поворачивая
Предотвращение повторения сигнала будильника: 5 шагов
Предотвращение повторения сигнала будильника: вы когда-нибудь кивали, когда учитесь, и хотите бодрствовать, но не можете? Что ж, я делаю крутую машину, которая может разбудить тебя. Это имя предотвращает отсрочку будильника. Работает легко, ставишь будильник на стол, когда голова
Часы с прогнозом погоды с использованием старого будильника и Arduino: 13 шагов (с изображениями)
Часы с прогнозом погоды с использованием старого будильника и Arduino: у меня валялся сломанный будильник, и мне пришла в голову идея преобразовать его в часы и станцию прогнозирования погоды. Для этого проекта вам понадобятся: Старый круглый будильник, модуль датчика Arduino Nano BME280 ( температура, влажность, давление) ЖК-дисплей
Цифровые часы Arduino с функцией будильника (пользовательская печатная плата): 6 шагов (с изображениями)
Цифровые часы Arduino с функцией будильника (настраиваемая печатная плата): в этом руководстве я покажу вам, как сделать ваши собственные цифровые часы этой функцией будильника. В этом проекте я решил сделать свою собственную печатную плату, основанную на микроконтроллере Arduino UNO - Atmega328p. Вы найдете электронную схему с печатной платой l
Реле будильника Arduino: 6 шагов (с изображениями)
Реле будильника Arduino: мне сложно просыпаться рано утром, особенно если прошлой ночью я не ложился спать поздно. По сути, этот проект позволяет вам размыкать реле в то время, которое вы устанавливаете с помощью клавиатуры и ЖК-дисплея. Это реле может управлять многими устройствами от включения