Съдържание:
- Стъпка 1: Инструкции за свързване
- Стъпка 2:
- Стъпка 3:
- Стъпка 4:
- Стъпка 5:
- Стъпка 6:
- Стъпка 7:
- Стъпка 8:
- Стъпка 9: Инструкции за програмиране
- Стъпка 10:
- Стъпка 11:
- Стъпка 12:
- Стъпка 13:
- Стъпка 14:
Видео: Проект за будилник Arduino: 14 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
В този проект ще използваме Arduino Uno за управление на LCD екран, за да покажем текущото време и час, за които е зададена аларма. Всеки път ще използваме бутони за настройка.
Материали:
- Arduino Uno -
- Breadboard -
- Jumper Wires (x13+) -
- 10 kohm резистора (x4) -
- LCD екран -
- 7 бутона-https://vilros.com/collections/raspberry-pi-acces…
- Пиезо говорител -
Стъпка 1: Инструкции за свързване
1. Свържете джъмпер кабел от 5V щифта на Arduino към една от + релсите на макета.
Стъпка 2:
2. Свържете джъмпер кабел от щифта GND на Arduino към - релсата до + релсата, която сте избрали на макета.
Стъпка 3:
3. Свържете LCD екрана към захранването, земята и TX щифта (щифт 1).
Стъпка 4:
4. Поставете 7 бутона на макета с краката през пролуката в макета.
Стъпка 5:
5. Поставете 10 kohm резистора от релсата с GND щифт, свързан към нея към долните леви щифтове на бутоните.
Стъпка 6:
6. Поставете джъмперните проводници между долния десен щифт на бутоните и 5V шината на вашата дъска.
Стъпка 7:
7. Поставете джъмперните проводници между щифтове 6, след това 8-13 и щифта на бутона, към който е свързан резисторът.
Стъпка 8:
8. След това поставете своя Piezo високоговорител върху чертежа и свържете щифт 7 към захранващия щифт, след това 100 ома резистор към земята.
Стъпка 9: Инструкции за програмиране
1. Общ преглед: Този проект ще поиска от потребителя да зададе текущото време на първоначалното захранване на дисплея, текущото време и времето, за което е настроена алармата. Бутоните, свързани по -горе, ще се използват за настройка всеки път. От ляво на дясно те се задават текущ час, задават текуща минута, задават текущ AM или PM, задават час на аларма, задават алармена минута, задават аларма AM или PM. Последният бутон се използва за заглушаване на алармата, когато тя звучи.
Стъпка 10:
2. Първото нещо, което трябва да направим, е да инициализираме нашата променлива, която ще използваме.
// Инициализиране на променливи, които да се използватint hour = 0; // Час за текущо време int минута = 0; //
Минута за текущо време int секунда = 0; // Втори за текущото време
int час_а = 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, за да зададете минута int
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. След това трябва да настроим LCD екрана и да кажем на потребителя да зададе текущия час. Тъй като това трябва да се направи само веднъж, ще го направим в рутината за настройка.
void setup () {
// Настройване на LCD екран
Serial.begin (9600); // Инициализиране на Serial при 9600 бода
Serial.write (17); // Включете задното осветление
Serial.write (24); // Включете дисплея, с курсор и без мигане
Serial.write (12); // Изчистете екрана
Serial.write (128); // Преместване на курсора в горния ляв ъгъл // Задаване на pinModes pinMode (set_hr, ВХОД); pinMode (set_min, INPUT);
pinMode (set_am_pm, INPUT);
pinMode (set_hr_a, INPUT);
pinMode (set_min_a, INPUT);
pinMode (set_am_pm_a, INPUT);
pinMode (високоговорител, OUTPUT);
pinMode (тих, ВХОД);
// При първоначално захранване потребителят трябва да настрои текущото време. Serial.print ("Задаване на текущия час"); забавяне (2000);
Serial.write (12);
printTimes ();
cur_time = millis (); // Съхранявайте текущото време}
Стъпка 12:
4. След това, в цикъла на цикъла, ние следим времето и четем състоянието на бутона, за да видим дали потребителят задава някое от часовете.
void loop () {
// Спазвайте времето
keepTime ();
// Проверете дали е време за аларма!
ако ((час == час_а && минута == минута_а &&! тихо) || аларма) {тон (високоговорител, 2000, 500); // Извежда звук от 2000 Hz към високоговорителя за 500 ms
забавяне (500); // Забавяне 500 ms, ако (! Аларма) {// Ако алармата е изключена, включете я
}
}
// Ако потребителят заглуши алармата, като натисне бутона за тих режим, спрете да алармирате ако (аларма &&! Тихо && digitalRead (тихо)) {
аларма = невярно;
тихо = вярно; }
// Нулиране на алармата, ако (! Alarm && quieted && minute! = Minute_a) {quieted = false;
}
// Проверете дали зададените щифтове са високи и ако е така, увеличете съответната стойностif (digitalRead (set_hr) && час <12) {
час ++;
printTimes ();
debounce ();
}
иначе if (digitalRead (set_hr) && час == 12) {час = 1;
printTimes ();
debounce ();
}
друго {}
if (digitalRead (set_min) && минута <59) {
минута ++; printTimes ();
debounce ();
}
else if (digitalRead (set_min) && minute == 59) {minute = 0;
printTimes ();
debounce ();
}
else {} if (digitalRead (set_am_pm) && am_pm) {
am_pm = false;
printTimes ();
debounce ();
}
иначе if (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
debounce ();
}
else {} if (digitalRead (set_hr_a) && hour_a <12) {
час_а ++;
printTimes ();
debounce ();
}
else if (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
debounce ();
}
else {} if (digitalRead (set_min_a) && minute_a <59) {
minute_a ++;
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 () актуализира LCD екрана, но тъй като това бяха няколко команди, аз ги въведох веднъж и след това мога да извикам подпрограмата всеки път, когато стойността на времето се промени.
// Докато някой от бутоните е натиснат, останете в тази функция и след това забавете 250 ms.
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);
ако (час <10) {
Serial.print ("0");
}
Serial.print (час);
Serial.print (":");
ако (минута <10) {
Serial.print ("0");
}
Serial.print (минута); Serial.print (":");
if (втори <10) {
Serial.print ("0");
}
Serial.print (втори);
ако (am_pm) {
Serial.print ("PM");
}
иначе {
Serial.print ("AM");
}
Serial.write (168);
Serial.print ("Алармен набор за:");
Serial.write (188);
ако (час_а <10) {
Serial.print ("0");
}
Serial.print (час_а);
Serial.print (":");
ако (минута_а <10) {
Serial.print ("0");
}
Serial.print (minute_a);
ако (am_pm_a) {
Serial.print ("PM");
}
иначе {
Serial.print ("AM");
}
}
// Увеличаване на времевите параметри void
keepTime () {
etime = millis () - cur_time;
if (etime> = 1000 && second <59) {
втори ++;
cur_time = millis ();
printTimes ();
}
else if (etime> = 1000 && second == 59 && minute <59) {second = 0;
минута ++;
cur_time = millis ();
printTimes ();
}
иначе ако (etime> = 1000 && секунда == 59 && минута == 59 && час <12) {
втори = 0; минута =
0; час ++; cur_time =
милис (); printTimes ();
}
иначе ако (etime> = 1000 && секунда == 59 && минута == 59 && час == 12) {
втори = 0; минута =
0; час = 1; am_pm =
! am_pm;
cur_time = millis ();
printTimes ();
}
друго {}
}
Стъпка 14:
6. Това е всичко!
Компилирайте и качете и сте готови!
Препоръчано:
Интелигентен будилник, използващ Magicbit (Arduino): 10 стъпки
Интелигентен будилник с помощта на Magicbit (Arduino): Този урок показва как да направите интелигентен будилник с помощта на OLED дисплей в Magicbit dev board, без да използвате никакъв RTC модул
Нощен будилник с будилник MP3: 6 стъпки (със снимки)
Нощен алармен будилник с букви за MP3: За този проект исках да направя удобен и напълно функционален часовник за нощна аларма. Моите лични предпоставки за нощен будилник са: Четене при всяка светлина, без да заслепява през нощта MP3 мелодии за аларма Привличане
Будилник Arduino с температурен сензор: 5 стъпки
Будилник Arduino с температурен сензор: Arduino е много лесен и евтин микроконтролер. и варират лесно да го контролират. И така, какво ще очаквате в този проект … ще използваме RTC толкова точни настройки на алармата за време, които са достатъчно силни, за да събудят температурата в стаята, ако искате да гледате видео кликване
Интелигентен будилник: интелигентен будилник, направен с Raspberry Pi: 10 стъпки (със снимки)
Интелигентен будилник: интелигентен будилник, направен с Raspberry Pi: Искали ли сте някога интелигентен часовник? Ако е така, това е решението за вас! Направих Smart Alarm Clock, това е часовник, който можете да промените часа на алармата според уебсайта. Когато алармата изгасне, ще се чуе звук (зумер) и 2 светлини ще
Горелка с USB захранване! Този проект може да изгори чрез пластмаса / дърво / хартия (забавният проект също трябва да бъде много фино дърво): 3 стъпки
Горелка с USB захранване! Този проект може да изгори чрез пластмаси / дърво / хартия (забавният проект също трябва да бъде много фин дървен материал): НЕ ПРАВЕТЕ ТОВА С ИЗПОЛЗВАНЕ НА USB !!!! разбрах, че може да повреди компютъра ви от всички коментари. компютъра ми е добре. Използвайте зарядно устройство за телефон 600ma 5v. Използвах това и работи добре и нищо не може да се повреди, ако използвате предпазен щепсел, за да спрете захранването