Агуулгын хүснэгт:
- Алхам 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:02
Энэхүү төсөлд бид Arduino Uno -г ашиглан LCD дэлгэцийг хянах бөгөөд дохиолол өгч буй цаг, цагийг харуулах болно. Бид товчлууруудыг ашиглан тохируулах болно.
Материал:
- Arduino Uno -
- Breadboard -
- Холбогч утас (x13+) -
- 10 кох эсэргүүцэл (x4) -
- LCD дэлгэц -
- 7 товчлуур-https://vilros.com/collections/raspberry-pi-acces…
- Пьезо чанга яригч -
Алхам 1: Холболтын заавар
1. Arduino дээрх 5V зүү бүхий холбогч утсыг талхны самбар дээрх + төмөр замын аль нэгэнд холбоно уу.
Алхам 2:
2. Arduino дээрх GND зүүгээс холбогч утсыг талхны самбар дээр сонгосон + төмөр замын хажууд байгаа төмөр замд холбоно уу.
Алхам 3:
3. LCD дэлгэцийг тэжээл, газардуулга, TX зүү (зүү 1) руу холбоно уу.
Алхам 4:
4. Талхны тавцан дээрх 7 товчлуурыг талхны тавцангийн завсраар хөлөө байрлуул.
Алхам 5:
5. Төмөр замаас GND зүү холбосон 10 кох резисторыг товчлуурын зүүн доод тээглүүрт холбоно.
Алхам 6:
6. Талхны тавцан дээрх товчлууруудын баруун доод зүү ба 5В төмөр замын хооронд холбогч утас тавь.
Алхам 7:
7. Холбогч утсыг 6, дараа нь 8-13, резинийг холбосон товчлуур дээр байрлуулна.
Алхам 8:
8. Дараа нь Piezo чанга яригчаа талхны тавцан дээр тавиад 7 -р зүүг тэжээлийн зүү, дараа нь 100 ом эсэргүүцэлтэй холбоно.
Алхам 9: Програмчлалын заавар
1. Тойм: Энэхүү төсөл нь хэрэглэгчээс дэлгэц дээрх анхны тэжээл дээр одоогийн цаг болон сэрүүлгийг тохируулах хугацааг тохируулахыг хүсэх болно. Дээр холбосон товчлууруудыг тохируулах бүрт ашиглах болно. Зүүнээс баруун тийш тэд одоогийн цаг, одоогийн минут, одоогийн AM эсвэл PM, сэрүүлгийн цаг, сэрүүлгийн минут, AM эсвэл PM дохиоллыг тохируулна. Сүүлчийн товчлуурыг дохиолол дуугарах үед дуугүй болгоход ашигладаг.
Алхам 10:
2. Бидний хийх ёстой хамгийн эхний зүйл бол ашиглах гэж буй хувьсагчаа эхлүүлэх явдал юм.
// Хэрэглэх хувьсагчдыг эхлүүлэхintint = 0; // Одоогийн цагийн цаг int минут = 0; //
Одоогийн цагийн минут int second = 0; // Одоогийн цагийн хувьд хоёрдугаарт
int hour_a = 0; int // Сэрүүлгийн цаг
минут_а = 0; // Сэрүүлгийн минут
bool am_pm = худал; // AM/PM туг солих. Худал бол AM, үнэн бол PM юм
bool am_pm_a = худал; // AM/PM дохиоллыг асаах. Худал бол AM, үнэн бол PM юм
int set_hr = 13; // Цагийг тохируулахын тулд 13 -р зүү ашиглана уу
int set_min = 12; // 12 -р зүү ашиглан int int -ийг тохируулна уу
set_am_pm = 11; // Өглөө/орой тохируулахын тулд 11 -р зүү ашиглана уу
int set_hr_a = 10; // дохиолол int set_min_a = 9 -ийн цагийг тохируулахын тулд 10 -р зүү ашиглана уу; // дохио int set_am_pm_a = 8 -ийн минутыг тохируулахын тулд зүү 9 -ийг ашиглана уу; // 8 -р зүү ашиглан сэрүүлгийг өглөө/орой болгон тохируулна уу
int чанга яригч = 7; // Чанга яригч ашиглахад ашиглах чимээгүй = 6; // Чанга яригчийг зогсоохын тулд зүү
bool дохиолол = худал; // Санаа зовохын тулд сэлгэх туг
bool чимээгүй болсон = худал; // Чимээгүй харагдаж буй туг дарагдаагүй байна
int cur_time = 0; // Одоогийн цагийн хувьсагч
int etime = 0; // Өнгөрсөн хугацаанд хувьсагч
Алхам 11:
3. Дараа нь бид LCD дэлгэцийг тохируулж, хэрэглэгчид одоогийн цагийг тохируулахыг хэлэх хэрэгтэй. Үүнийг ганцхан удаа хийх шаардлагатай тул бид үүнийг тохиргооны журмаар хийх болно.
хүчингүй тохиргоо () {
// LCD дэлгэцийг тохируулах
Цуваа эхлэх (9600); // Цувралыг 9600 baud дээр эхлүүлнэ үү
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 ();
// Санаа зовох цаг болсон эсэхийг шалгаарай!
if ((цаг == цаг_а && минут == минут_а &&! чимээгүй) || дохиолол) {ая (чанга яригч, 2000, 500); // 2000 Гц давтамжтай чанга яригч руу 500 мс гаргана
саатал (500); // 500 ms -ийг хойшлуул (хэрэв дохиолол) {// Хэрэв дохиолол унтарсан бол түүнийг асаана уу
}
}
// Хэрэв хэрэглэгч чимээгүй товчлуурыг дарж сэрүүлгийг дуугүй болгодог бол (дохиолол && чимээгүй && digitalRead (чимээгүй)) {
дохиолол = худал;
чимээгүй = үнэн; }
// (! Alarm && чимээгүй && минут! = Минут_а) {чимээгүй = худал;
}
// Тогтоосон тээглүүр өндөр байгаа эсэхийг шалгаж, хэрэв тийм бол харгалзах утгыг нэмэгдүүлээрэй (digitalRead (set_hr) && hour <12) {
цаг ++;
printTimes ();
хасах ();
}
өөр бол (digitalRead (set_hr) && hour == 12) {hour = 1;
printTimes ();
хасах ();
}
өөр {}
if (digitalRead (set_min) && minutes <59) {
минут ++; printTimes ();
хасах ();
}
өөр бол (digitalRead (set_min) && minutes == 59) {минут = 0;
printTimes ();
хасах ();
}
өөр {} if (digitalRead (set_am_pm) && am_pm) {
am_pm = худал;
printTimes ();
хасах ();
}
else if (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
хасах ();
}
өөр {} if (digitalRead (set_hr_a) && hour_a <12) {
hour_a ++;
printTimes ();
хасах ();
}
өөр бол (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
хасах ();
}
өөр {} if (digitalRead (set_min_a) && minutes_a <59) {
минут_а ++;
printTimes ();
хасах ();
}
өөр бол (digitalRead (set_min) && minutes_a == 59) {minutes_a = 0;
printTimes ();
хасах ();
}
өөр {} 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 = үнэн;
printTimes ();
хасах ();
}
өөр {}
}
Алхам 13:
5. Эндээс та миний үүсгэсэн хэд хэдэн дэд програмыг анзаарах болно - debounce () ба printTimes (). Debounce () нь товчлууруудыг зөвхөн нэг удаа уншихад ашигладаг. Arduino секундэд хэдэн мянган удаа скан хийдэг тул та үүнийг ганцхан удаа уншихыг хүссэн үедээ товчлуурыг хэд хэдэн удаа дарсан гэж бодож магадгүй юм. Debounce () товчлуурыг суллах хүртэл програмыг царцаах болно. printTimes () нь LCD дэлгэцийг шинэчилдэг боловч энэ нь хэд хэдэн команд байсан тул би тэдгээрийг нэг удаа бичээд цагийн утга өөрчлөгдөх бүрт дэд програм руу залгаж болно.
// Аль ч товчлуурыг дарж байхад энэ функцэд байсны дараа 250 ms -ийг хойшлуулна уу.
хүчингүй болгох () {
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 (":");
хэрэв (минут <10) {
Serial.print ("0");
}
Serial.print (минут); Serial.print (":");
хэрэв (секунд <10) {
Serial.print ("0");
}
Цуваа.хэвлэх (хоёр дахь);
хэрэв (өглөөний_ орой) {
Serial.print ("PM");
}
өөр {
Serial.print ("AM");
}
Serial.write (168);
Serial.print ("Сэрүүлэг тохируулах:");
Serial.write (188);
хэрэв (hour_a <10) {
Serial.print ("0");
}
Цуваа.хэвлэх (hour_a);
Serial.print (":");
хэрэв (минут_а <10) {
Serial.print ("0");
}
Цуваа.хэвлэх (минут_а);
хэрэв (am_pm_a) {
Serial.print ("PM");
}
өөр {
Serial.print ("AM");
}
}
// Хугацааны параметрүүдийг хүчингүй болгох
keepTime () {
etime = millis () - cur_time;
if (etime> = 1000 && second <59) {
хоёр дахь ++;
cur_time = millis ();
printTimes ();
}
өөр бол (etime> = 1000 && second == 59 && minutes <59) {second = 0;
минут ++;
cur_time = millis ();
printTimes ();
}
өөр бол (etime> = 1000 && second == 59 && minutes == 59 && hour <12) {
секунд = 0; минут =
0; цаг ++; cur_time =
миллис (); printTimes ();
}
өөр бол (etime> = 1000 && second == 59 && minutes == 59 && hour == 12) {
секунд = 0; минут =
0; цаг = 1; am_pm =
!үдээс өмнө үдээс хойш;
cur_time = millis ();
printTimes ();
}
өөр {}
}
Алхам 14:
6. Ингээд л боллоо!
Хөрвүүлээд байршуулаарай, тэгвэл бүгд бэлэн боллоо!
Зөвлөмж болгож буй:
Ухаалаг сэрүүлэгтэй цаг: Raspberry Pi -ээр хийсэн ухаалаг сэрүүлэгтэй цаг: 10 алхам (зурагтай)
Ухаалаг сэрүүлэгтэй цаг: Raspberry Pi -ээр хийсэн ухаалаг сэрүүлэг: Та ухаалаг цаг хүсч байсан уу? Хэрэв тийм бол энэ бол таны шийдэл! Би ухаалаг сэрүүлэгтэй цаг хийсэн бөгөөд энэ нь вэбсайтын дагуу сэрүүлгийн цагийг өөрчлөх боломжтой цаг юм. Сэрүүлэг дуугарахад дуугарах (дуугарах), 2 гэрэл асах болно
ESP8266 RTC байхгүй сүлжээний цаг - Nodemcu NTP цаг RTC байхгүй байна - ИНТЕРНЕТ ЦАГИЙН ТӨСӨЛ: 4 алхам
ESP8266 RTC байхгүй сүлжээний цаг | Nodemcu NTP цаг RTC байхгүй | ИНТЕРНЕТ ЦАГИЙН ТӨСӨЛ: Төсөл нь RTC -гүй цагны төсөл хийх бөгөөд wifi ашиглан интернэтээс цаг авч, st7735 дэлгэц дээр харуулах болно
DIY кунжутын гудамжны сэрүүлэгтэй цаг (галын сэрүүлэгтэй!): 6 алхам (зурагтай)
DIY кунжутын гудамжны сэрүүлэгтэй цаг (галын дохиолол бүхий!): Сайн байна уу! Энэ төсөл бол миний анхны төсөл юм. Үеэл дүү нарын маань анхны төрсөн өдөр болох гэж байгаа тул би түүнд онцгой бэлэг барихыг хүссэн юм. Түүнийг Гүнжид гудамжинд байдаг гэж авга ах, нагац эгчээс нь сонссон болохоор би дүү нартайгаа сэрүүлэгтэй цаг гаргахаар шийдсэн юм
Тохируулах дууны сэрүүлэгтэй LED нар мандах сэрүүлэгтэй цаг: 7 алхам (зурагтай)
Тохируулах дууны дохиолол бүхий LED нар мандах сэрүүлэгтэй цаг: Миний сэдэл Энэ өвөл найз охин маань өглөө босоход маш их бэрхшээлтэй байсан бөгөөд SAD (Улирлын хамааралтай эмгэг) өвчтэй байсан бололтой. Нар ч ирээгүй болохоор өвөл сэрэхэд хичнээн хэцүү байдгийг би анзаарч байна
"Ухаалаг цаг 2" угсрах (Ардуинод суурилсан олон тооны нэмэлт функц бүхий сэрүүлэгтэй цаг): 6 алхам
"Ухаалаг цаг 2" угсрах (Ардуинод суурилсан олон тооны нэмэлт функц бүхий сэрүүлэгтэй цаг): Энэхүү заавар нь нээлттэй эх сурвалж (техник хангамж, програм хангамж) төсөл болох Wise Clock 2-ийн иж бүрдлийг хэрхэн угсрахыг харуулав. Wise Clock 2 иж бүрэн хэрэгслийг эндээс худалдаж авах боломжтой. Дүгнэж хэлэхэд, энэ бол Wise Clock 2 -ийн хийж чадах зүйл юм (одоогийн нээлттэй эхийн програм хангамжийн тусламжтайгаар