Мазмуну:
- 1 -кадам: Байланыш боюнча нускамалар
- 2-кадам:
- 3 -кадам:
- 4 -кадам:
- 5 -кадам:
- 6 -кадам:
- 7 -кадам:
- 8 -кадам:
- 9 -кадам: Программалоо көрсөтмөлөрү
- 10 -кадам:
- 11 -кадам:
- 12 -кадам:
- 13 -кадам:
- 14 -кадам:
Video: Arduino Ойготкуч саат долбоору: 14 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Бул долбоордо биз Arduino Uno менен ЖК экранды башкарып, ойготкуч коюлган учурду жана убакытты көрсөтөбүз. Биз ар бир убакытты белгилөө үчүн баскычтарды колдонобуз.
Материалдар:
- Arduino Uno -
- Нан тактасы -
- Jumper Wires (x13+) -
- 10 кох резисторлор (x4) -
- ЖК экран -
- 7 баскычтар-https://vilros.com/collections/raspberry-pi-acces…
- Пьезо спикери -
1 -кадам: Байланыш боюнча нускамалар
1. Arduinoдогу 5V пинден секиргич зымды нан тактасындагы + рельстердин бирине туташтырыңыз.
2-кадам:
2. Ардуинодогу GND пининен секиргич зымды туташтырылган + темир жолдун жанындагы темирге туташтырыңыз.
3 -кадам:
3. ЖК экранды электрге, жерге жана TX пинине туташтырыңыз (1 -пин).
4 -кадам:
4. 7 баскычты нандын үстүнө буттары менен бөлүп коюңуз.
5 -кадам:
5. 10 кох резисторлорун темир жолдон GND пини менен туташтыргычтардын төмөнкү сол казыктарына туташтырыңыз.
6 -кадам:
6. Өткөргүч зымдарды кнопкалардын төмөнкү оң жактагы пини менен 5В темир жолунун ортосуна кой.
7 -кадам:
7. Өткөргүч зымдарды 6, андан кийин 8-13 түйрүктөрүнүн ортосуна жана резистор туташтырылган баскычка төөнөгүчтү коюңуз.
8 -кадам:
8. Андан кийин, Piezo спикериңизди панелдин үстүнө коюп, 7 -пинди электр шнуруна туташтырыңыз, андан кийин жерге 100 омдук резистор.
9 -кадам: Программалоо көрсөтмөлөрү
1. Обзор: Бул проект колдонуучудан дисплейдеги учурдагы убакытты жана ойготкуч коюлган убакытты орнотууну суранат. Жогоруда туташкан баскычтар ар бир убакытты коюу үчүн колдонулат. Солдон оңго, алар учурдагы саат, учурдагы мүнөт, учурдагы AM же PM, ойготкуч саат, ойготуу мүнөтү, ойготкуч AM же PM. Акыркы баскыч ойготкучтун үнүн басуу үчүн колдонулат.
10 -кадам:
2. Биз кылышыбыз керек болгон биринчи нерсе, биз колдоно турган өзгөрмөнү баштоо.
// Колдонула турган өзгөрмөлөрдү саат = 0; // Учурдагы убакыт үчүн саат int мүнөт = 0; //
Учурдагы убакыт үчүн мүнөт int second = 0; // Учурдагы убакыт үчүн экинчи
int hour_a = 0; int // Ойготкуч убактысы үчүн саат
minutes_a = 0; // Ойготуу убактысы үчүн мүнөт
bool am_pm = false; // AM/PM желегин которуштуруу. Жалган AM, чындык PM
bool am_pm_a = жалган; // AM/PM сигнал үчүн желекти которуштуруу. Жалган AM, чындык PM
int set_hr = 13; // Саатты коюу үчүн 13 -пинди колдонуңуз
int set_min = 12; // int мүнөтүн коюу үчүн 12 -пинди колдонуңуз
set_am_pm = 11; // Эртең мененки/кечки 11ди орнотуу үчүн пинди колдонуңуз
int set_hr_a = 10; // Ойготкучтун саатын коюу үчүн пин 10ду колдонуңуз int set_min_a = 9; // pin 9ду колдонуу int set_am_pm_a = 8 сигналынын мүнөтүн коюу үчүн; // Ойготкуч үчүн эртең мененки/кечки орнотуу үчүн 8 -пинди колдонуңуз
int баяндамачы = 7; // Speakerint тыныш үчүн колдонула турган пин = 6; // Динамикти токтотуу үчүн кадап коюңуз
bool alarm = false; // Коркунучтуу болуш үчүн которуштуруу үчүн желек
bool басылды = жалган; // Тынчтыкты көрсөткөн желек басылган жок
int cur_time = 0; // Учурдагы убакыт үчүн өзгөрмө
int etime = 0; // Өткөн убакыт үчүн өзгөрмө
11 -кадам:
3. Кийинки, биз ЖК экранды орнотуу жана колдонуучуга учурдагы убакытты коюуну айтуубуз керек. Бул бир гана жолу жасалышы керек болгондуктан, биз муну орнотуу тартибинде жасайбыз.
жараксыз орнотуу () {
// ЖК экранды орнотуу
Serial.begin (9600); // Сериалды 9600 байда баштоо
Serial.write (17); // Арткы жарыкты күйгүзүү
Serial.write (24); // Дисплейин күйгүзүү, курсор менен жана кирпик какпоо
Serial.write (12); // Экранды тазалаңыз
Serial.write (128); // Курсорду жогорку сол бурчка жылдыруу // PinModes pinMode орнотуу (set_hr, INPUT); 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 (динамик, ЧЫГУУ);
pinMode (тынч, INPUT);
// Баштапкы кубаттуулукта, колдонуучу учурдагы убакытты коюңуз. Serial.print ("Учурдагы убакытты коюу"); кечигүү (2000);
Serial.write (12);
printTimes ();
cur_time = миллис (); // Учурдагы убакытты сактоо}
12 -кадам:
4. Андан кийин, цикл тартибинде, биз убакытты көзөмөлдөп турабыз жана баскычтын статусун окуйбуз, колдонуучу убакыттын бирөөсүн да коюп жатат.
void loop () {
// Убакытты сактоо
keepTime ();
// Коркуу убактысы келгенин текшериңиз!
if ((саат == саат_а && мүнөт == мүнөт_а &&! тынч) || ойготкуч) {тон (спикер, 2000, 500); // 500 мс үчүн динамикке 2000 Гц үнүн чыгаруу
кечигүү (500); // 500 м кечиктирүү эгерде (! Ойготкуч) {// Ойготкуч өчүк болсо, аны күйгүзүңүз
}
}
// Эгерде колдонуучу ойготкучту баскычты басуу менен басса, анда ойготкучту токтотуңуз (сигнал &&! Басылды && digitalRead (тынч)) {
сигнал = жалган;
тынчтанып = чындык; }
// Ойготкучту баштапкы абалга келтирүү, эгер (! Сигнал && басылган && мүнөт = = мүнөт_а) {quieted = false;
}
// Орнотулган казыктардын жогору көтөрүлүшүн текшериңиз, эгер андай болсо, тиешелүү маанини көбөйтүңүз (digitalRead (set_hr) && hour <12) {
саат ++;
printTimes ();
алып салуу ();
}
else if (digitalRead (set_hr) && hour == 12) {hour = 1;
printTimes ();
алып салуу ();
}
башка {}
if (digitalRead (set_min) && minutes <59) {
мүнөт ++; printTimes ();
алып салуу ();
}
else if (digitalRead (set_min) && minutes == 59) {minutes = 0;
printTimes ();
алып салуу ();
}
else {} if (digitalRead (set_am_pm) && am_pm) {
am_pm = жалган;
printTimes ();
алып салуу ();
}
else if (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
алып салуу ();
}
else {} if (digitalRead (set_hr_a) && hour_a <12) {
hour_a ++;
printTimes ();
алып салуу ();
}
else if (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
алып салуу ();
}
else {} if (digitalRead (set_min_a) && minutes_a <59) {
minutes_a ++;
printTimes ();
алып салуу ();
}
else if (digitalRead (set_min) && minutes_a == 59) {minutes_a = 0;
printTimes ();
алып салуу ();
}
else {} if (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = жалган;
printTimes ();
алып салуу ();
}
else if (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;
printTimes ();
алып салуу ();
}
башка {}
}
13 -кадам:
5. Бул жерде, мен жараткан бир нече подпрограмманы байкайсыз - debounce () жана printTimes (). Debounce () баскычтарды бир гана жолу окуубуз үчүн колдонулат. Arduino секундасына миңдеген жолу сканерлегендиктен, бул баскыч бир жолу окулат деп ойлогондо бир нече жолу басылган деп ойлошу мүмкүн. Debounce () баскыч бошотулмайынча программаны тоңдурат. printTimes () ЖК экранды жаңыртат, бирок бул бир нече буйрук болгондуктан, мен аларды бир жолу тердим, андан кийин убакыт программасы каалаган убакта чакан программаны чакыра алам.
// Кандайдыр бир баскыч басылып жатканда, бул функцияда калыңыз, андан кийин 250 мс кечиктириңиз.
жокко чыгаруу () {
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);
}
// Эгерде кандайдыр бир өзгөрүүлөр болсо, жаңыртылган убакытты басып чыгарат
жараксыз 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 (":");
эгер (экинчи <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 (hour_a);
Serial.print (":");
эгер (мүнөт_а <10) {
Serial.print ("0");
}
Serial.print (minutes_a);
эгер (am_pm_a) {
Serial.print ("PM");
}
башка {
Serial.print ("AM");
}
}
// Жараксыз убакыт параметрлерин көбөйтүү
keepTime () {
etime = millis () - cur_time;
if (etime> = 1000 && second <59) {
экинчи ++;
cur_time = миллис ();
printTimes ();
}
else if (etime> = 1000 && second == 59 && minutes <59) {second = 0;
мүнөт ++;
cur_time = миллис ();
printTimes ();
}
башка болсо (etime> = 1000 && second == 59 && minutes == 59 && hour <12) {
second = 0; мүнөт =
0; саат ++; cur_time =
миллис (); printTimes ();
}
башка болсо (etime> = 1000 && second == 59 && minutes == 59 && hour == 12) {
second = 0; мүнөт =
0; саат = 1; am_pm =
! am_pm;
cur_time = миллис ();
printTimes ();
}
башка {}
}
14 -кадам:
6. Болду!
Компиляция жана жүктөө, баары бүттү!
Сунушталууда:
Magicbit (Arduino) колдонуу менен акылдуу ойготкуч саат: 10 кадам
Magicbit (Arduino) колдонулган акылдуу ойготкуч саат: Бул окуу куралы RTC модулун колдонбостон Magicbit dev тактасындагы OLED дисплейди колдонуу менен акылдуу ойготкуч жасоону көрсөтөт
Температура сенсору бар Arduino ойготкуч саат: 5 кадам
Температура сенсору менен Arduino Ойготкуч Сааты: Arduino абдан оңой жана арзан микро контроллер. жана аны башкарууга оңой өзгөрөт. Демек, сиз бул долбоордо эмнени күтөсүз … биз видео кликти көргүңүз келсе, RTC ушунчалык так убакыт сигналынын орнотууларын колдонобуз, ал сиздин температураңызды ойготот
Акылдуу ойготкуч саат: Raspberry Pi менен жасалган акылдуу ойготкуч саат: 10 кадам (сүрөттөр менен)
Smart Alarm Clock: Raspberry Pi менен жасалган акылдуу ойготкуч: Сиз качандыр бир убакта акылдуу саатты кааладыңыз беле? Андай болсо, бул сиз үчүн чечим! Мен Smart Alarm Clock жасадым, бул веб -сайтка ылайык ойготкуч убактысын өзгөртө турган саат. Ойготкуч өчкөндө, үн чыгат (зумбул) жана 2 жарык күйөт
DIY Arduino бинардык ойготкуч саат: 14 кадам (сүрөттөр менен)
DIY Arduino бинардык ойготкуч саат: Бул дагы классикалык бинардык саат! Бирок бул жолу дагы кошумча функция менен! Бул көрсөтмөдө мен сизге Arduino менен экилик ойготкучту кантип курууну көрсөтөм, ал сизге убакытты гана көрсөтпөйт, бирок датаны, айды, таймер жана ойготкучтун көңүл ачуусу менен да
Ойготкуч саат менен DIY Smart Scale (Wi-Fi, ESP8266, Arduino IDE жана Adafruit.io менен): 10 кадам (Сүрөттөр менен)
Ойготкуч саат менен DIY Smart Scale (Wi-Fi, ESP8266, Arduino IDE жана Adafruit.io менен): Мурунку долбоорумда мен Wi-Fi менен акылдуу ванна таразасын иштеп чыккам. Ал колдонуучунун салмагын өлчөй алат, жергиликтүү түрдө көрсөтөт жана булутка жөнөтөт. Бул тууралуу кененирээк маалыматты төмөнкү шилтемеден ала аласыз: https: //www.instructables.com/id/Wi-Fi-Smart-Scale-wi