Mündəricat:
- Addım 1: Fikrin Beyin Fırtınası
- Addım 2: Eskiz və Materiallar
- Addım 3: Çıxış korpusunun yaradılması
- Addım 4: Xarici Kassanı Lazerlə Kəsmə
- Addım 5: Bir yerdə qoyun
- Addım 6: Kod
- Addım 7: Elektronika
- Addım 8: Final
Video: Səhər Dostum: 8 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bəzi insanların çox məşğul proqramları var, bu da bir və ya iki şeyi unutmağı asanlaşdırır. Bu zəngli saatla sizi qrafikə uyğun saxlamaq üçün birdən çox zəngli saat qura bilərsiniz. Saat 24 saat işləyir və etməniz lazım olan şey, cədvəlinizə uyğun günün fərqli vaxtlarında söndürmək üçün proqramlaşdırmaqdır. Bunu edərkən, təyin etdiyiniz vaxtlar LCD ekranda görünəcək, beləliklə onların doğru olub olmadığını yoxlaya və əlavə bir xatırlatma olaraq xidmət edə bilərsiniz.
Addım 1: Fikrin Beyin Fırtınası
Məsələni həll etməyə çalışarkən bir fikir ortaya çıxarmaq üçün balıq sümüyü metodundan istifadə etdik və zəngli saatımızla nəticələndik.
Addım 2: Eskiz və Materiallar
Bu addım zamanı elektronika və xarici korpus üçün ehtiyac duyduğumuz bütün şeylərin siyahısını hazırlamağa çalışdıq. Sonra zəngli saatın necə görünməsini istədiyimizin və xarici korpusunu necə yığacağımızın eskizini hazırladıq.
Addım 3: Çıxış korpusunun yaradılması
İlk prototip üçün barmaq oynaqlarının bir -birinə necə uyğun olacağını görmək istədim, buna görə də ayaqqabı qutusu istifadə etdim və dəqiq ölçüləri istifadə etmədim.
Addım 4: Xarici Kassanı Lazerlə Kəsmə
İkinci prototip üçün dəqiq ölçülər əldə etmək istədim və lazer kəsiciyə göndərmək üçün bir pdf yaratmalı oldum. Bunu etmək üçün https://boxdesigner.connectionlab.org bir qutu istehsalçısı veb saytından istifadə etdim. Həmin veb saytında qutunun 3-D ölçülərini, materialımızın qalınlığını, ölçü vahidlərini və hansı növ fayl yaratmaq istədiyimi daxil etdim. Qutunun ölçüləri 7,5 x 3 x 5 düym idi və 1/8 qalın akril materialdan istifadə etdim. Barmaq oynaqlarının ölçüləri avtomatik olaraq 0.46875 düym olaraq konfiqurasiya edildi. Pdf versiyasını seçdim, çünki bu, lazer kəsicinin oxuduğu fayl növüdür və Adobe -də bu faylda bəzi dəyişikliklər etmək istədim. Lazer kəsicinin şəkli oymaq əvəzinə onları kəsməyi bilməsi üçün xətlərin rənglərini qırmızıya dəyişdim və ön hissəsinin üstünə 3,92 ilə 1,56 düym arasında olan düzbucaqlı bir qutu əlavə etdim. Qutu. Zəngli saata bağlı şnurun açılması kimi xidmət etmək üçün altındakı sağ tərəfdə 1in ilə 0,5in ölçüləri olan bir düzbucaq da əlavə etdim. Son olaraq iki buzzer və düymə üçün yuxarıda üç dairəvi açılış əlavə etdim. Zil çuxurlarının diametri 0,5 düym və düymənin açılması 0,375 düym idi.
Addım 5: Bir yerdə qoyun
Bütün parçalar kəsildikdə bir -birinə bağlamaq üçün bir şpris və akril yapışqan istifadə etdim. Parçaları bir araya gətirdim və tərəfləri bir -birinə bağlamaq üçün çentiklərin arasına yapışqan damlatdım, amma üstü yapışdırılmadı.
Addım 6: Kod
Giriş:
Bu layihə Arduino IDE proqramında c ++ dilindən istifadə edərək kodlaşdırılmışdır. İstifadə olunan mikro nəzarətçi ESP8266 ilə NodeMCU idi. Bu layihə üçün vaxtı dəqiq saxlamağın bir yoluna, səs siqnalının səslənməsinə, siqnalın səs -küy salmasına səbəb olan bir siqnalizasiya sisteminə və bütün vaxtı və həyəcan vaxtlarını göstərən bir ekrana ehtiyacımız olacaq. Tam kod üçün bu linkə baxın
Kitabxanaların idxalı
İlk növbədə lazım olan kitabxanaları idxal etməliyik.
#"RTClib.h" daxil edin
#"Wire.h" daxil edin #daxil edin #daxil edin #daxil edin #daxil edin
Dəyişənlərin işə salınması
Sonra dəyişənləri daha sonra başlatmalıyıq, səs siqnalı düymələri üçün pin düzeni təyin etməliyik, RTC qurmalı və LCD ekranın I2C ünvanını təyin etməliyik.
LiquidCrystal_I2C lcd (0x27, 20, 4);
const int buzzer1 = 12; const int buzzer2 = 0; const int düyməsi = 2; RTC_DS3231 rtc; char daysOfTheWeek [7] [12] = {"Bazar", "Bazar ertəsi", "Çərşənbə axşamı", "Çərşənbə", "Cümə axşamı", "Cümə", "Şənbə"} int başlanğıc vaxtı; int aktiv vaxt; int prevoustime = 0; char ahours1 [3]; char amins1 [3]; int saat1 = 0; int min1 = 0; char ahours2 [3]; char amins2 [3]; int saat2 = 0; int min2 = 0; char ahours3 [3]; char amins3 [3]; int saat3 = 0; int min3 = 0; int siqnalı = 0; int ByteReceived; char alındıChar; const bayt numChars = 32; char aldıChars [numChars];
Qurmaq
Sonra, bütün lazımi prosesləri başlatan bir funksiyaya sahib olmalıyıq. Bu funksiyada, LCD -ni işə salmalı və ilk vaxtları çap etməli, RTC -də yoxdursa real vaxt verən daha kiçik bir funksiya düzəltməliyik və serial monitoru işə salmalıyıq.
boş quraşdırma () {
#ifndef ESP8266 isə (! Serial); #endif if (! rtc.begin ()) {Serial.println ("RTC tapıla bilmədi"); isə (1); } if (rtc.lostPower ()) {Serial.println ("RTC gücünü itirdi, vaxtı təyin edək!"); rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_)))}} lcd.init (); lcd.lightlight (); // Baklight -ı AÇIQ edir. lcd.clear (); // LCD lcd.printini təmizləyir ("00:00"); // kod yükləndikdən sonra LCD -də göstər lcd.setCursor (10, 0); lcd.print ("00:00"); lcd.setCursor (0, 1); lcd.print ("Zaman"); lcd.setCursor (10, 1); lcd.print ("Siqnal 1"); lcd.setCursor (0, 3); lcd.print ("Alarm 2"); lcd.setCursor (0, 2); lcd.print ("00:00"); lcd.setCursor (10, 3); lcd.print ("Alarm 3"); lcd.setCursor (10, 2); lcd.print ("00:00"); rtc.begin (); pinMode (düymə, GİRİŞ); // Səssizlik düyməsi üçün pin təyin edin pinMode (buzzer1, ÇIXIŞ); // səs siqnalı üçün pin təyin edin pinMode (buzzer2, Çıxış); // səs siqnalı çıxışı üçün bir pin təyin edin Serial.begin (9600); Serial.println ("Siqnallar arasında boşluq olmayan HHMM formatında həyəcan siqnallarının daxil olma vaxtı"); başlanğıc vaxtı = milis ()/1000; }
Məlumatların qəbulu
İndi həyəcan vaxtlarını qəbul etməliyik. Bunu etmək üçün serial monitordan məlumatları almaq və bir sıra saxlamaq üçün bir funksiya yaratdıq.
void recvWithEndMarker () {
statik int ndx = 0; String timein = Serial.readString (); for (ndx = 0; timein [ndx]; ndx ++) {takenChars [ndx] = timein [ndx]; } alınanChars [ndx] = '\ 0'; Serial.print (alınanChars); }
Siqnalların qurulması
Növbəti addım həyəcan siqnalları qurmaqdır. Siqnal 1 -in kodu budur. 2 və 3 -cü həyəcan üçün eyni proses bir neçə ədəd dəyişikliyi ilə təkrarlandı.
/* Siqnal 1*/
recvWithEndMarker (); int h, m; üçün (h = 0; h <2; h ++) {ahours1 [h] = alınanChars [h]; } üçün (m = 2; m <4; m ++) {amins1 [m-2] = alınanChars [m]; } ahours1 [h] = '\ 0'; amins1 [m-2] = '\ 0'; Serial.print (ahours1); Serial. çap (amins1); hour1 = atoi (ahours1); min1 = atoi (amins1); Serial. çap (saat1); Serial.çap (min1);
Buzzer/Düymə
Bununla, real vaxt və həyəcan vaxtı bərabər olduqda səs siqnalını söndürməliyik. Həm də bu addımda səs siqnalı tutarkən onu dayandıran bir mürgüləmə düyməsinə bənzəyirik.
/ * Səssizlik düyməsi */
int sükut; int b; b = digitalRead (2); əgər (b == DÜŞÜK) {səssizlik = 1; } başqa {səssizlik = 0; } / * Alarmı Başlat * / if (saat == saat1 && dəqiqə == min1) {həyəcan = 1; } if if (hours == hour2 && mins == min2) {alarm = 1; } if if (hours == hour3 && mins == min3) {alarm = 1; } başqa {həyəcan = 0; səssizlik = 0; } if (həyəcan == 1 && susma == 0) {ton (buzzer1, 4000, 1000); ton (buzzer2, 4000, 1000); gecikmə (1000); noTone (buzzer1); noTone (buzzer2); gecikmə (1000); }
Çap vaxtları
Nəhayət, həyəcan vaxtlarını və real vaxtını LCD ekrana yazdırmalıyıq.
DateTime indi = rtc.now ();
int saat = (indi.hour ()); int mins = (indi.dəqiqə ()); / * Alarm vaxtı 00:00 formatında */ lcd.setCursor (10, 0); lcd.print (ahours1); lcd.setCursor (13, 0); lcd.print (amins1); lcd.setCursor (0, 2); lcd.print (ahours2); lcd.setCursor (3, 2); lcd çap (aminlər 2); lcd.setCursor (10, 2); lcd.print (ahours3); lcd.setCursor (13, 2); lcd çap (amins3); / * RTC -dən Ekran müddəti */ lcd.setCursor (0, 0); lcd çap (saat); lcd.print (":"); lcd çap (dəqiqə);
Addım 7: Elektronika
Material layihəsində göründüyü kimi bu layihənin elektronikasında çoxlu parçalar var. İlk görüntü, layihələrin son elektronikasının sxemidir. İkinci görüntü, son elektron dizaynımızdır. Üçüncü görüntü, ikinci prototipin ortasındakı layihəmizdir.
Başlamaq üçün NodeMCU'nuzu çörək lövhənizin ən ucuna yapışdırın. Daha sonra bütün digər elektronikalarınızı NodeMCU və çörək taxtasına bağlamalı olacaqsınız. LCD ekranınızı SCL üçün D1 və SDA üçün D2 pinlərinə bağlayaraq başlayın. LCD istifadəçiyə cari vaxtı və təyin olunmuş həyəcan vaxtlarını görməyə imkan verəcək. İndi səs siqnallarınızı D3 və D6 sancaqlarına bağlayın. Siqnallar, təyin olunmuş vaxta çatdıqda həyəcanı istifadəçini xəbərdar etməyə imkan verəcəkdir. Siqnalın dayandırılmasına icazə vermək üçün düyməni əlavə etməlisiniz. Bu düyməni D4 pininə bağlayın. İndi Real-time saatınızı çörək taxtasına bağlayacaqsınız. LCD ekranı üçün istifadə olunan eyni SDA və SCL sancaqlarından istifadə etmək üçün Real vaxt saatını bağlayın.
Addım 8: Final
Verilən məlumatlara əməl etsəniz, layihəniz yuxarıdakı şəklə bənzəyə bilər. Bu layihəni yenidən yaratmaq cəhdlərinizdə sizə uğurlar arzulayırıq və layihənizi bitirdikdən sonra şərhlərdə bizimlə şəkillər və fikirlər paylaşmağınızı tövsiyə edirik. Təşəkkürlər və uğurlar yaradıcı yoldaşlar.
Tövsiyə:
Səhər Yuma Rutini (Uşaqlar üçün): 7 addım
Üzün Səhər Yuyulması Rutini (Uşaqlar üçün): Həftə sonu balaca əmim oğlu, valideynləri evdə olmadığı üçün evimizdə qaldı, onunla iki gün yaşadıqdan sonra, yuyarkən hər addımını xatırlamaqda bir az çətinlik çəkdiyini gördüm. oyandıqdan sonra üzü. Ona görə də onu qurmağa qərar verdim
Yeni Taipei Şəhər Turist xəritəsi !!!: 6 addım
Yeni Taipei Şəhər Turist Xəritəsi !!!: Bu layihədə bir qutu hazırlayacağam və üstündə Yeni Taipei Şəhərinin xəritəsi olacaq. Bu layihənin məqsədi uşaqlara və böyüklərə Yeni Taipei şəhərindəki 3 əsas böyük ərazini bildirməkdir. Qutunun kənarında yerləşdirilmiş 3 düymə var
10 Gündə Beynəlxalq Ağıllı Şəhər necə qurulacaq: 12 addım
10 Gündə Beynəlxalq Ağıllı Şəhər Necə Qurulur: Çin, Filippin və ABŞ -dan olan tələbələri Kaliforniya ştatının Long Beach şəhərində keçiriləcək Dünya Robot Olimpiadasında yarışacaq komandalarla bir araya gətirən bir proqram üzərində işləyirəm. Bu ilin mövzusu Ağıllı Şəhərlərdir, buna görə Ju -dən Ağıllı Şəhər qururuq
Yaşıl Şəhər - İnteraktiv Divar: 6 addım
Yaşıl Şəhər - İnteraktiv Divar: Yaşıl Şəhər layihəsi, bu mövzuda bir şəkildə məlumatlılığı artırmaq üçün enerji kontekstində və təbii sərvətlərin tükənməsinin qarşısının alınmasında çox vacib olan bərpa olunan enerji məsələlərini araşdırmağı hədəfləyir. . Biz də istəyirik
Gündoğumu Zəngli Saat (Səhər oyanışını yaxşılaşdırın): 13 addım
Gündoğumu Alarm Saatı (Səhər oyanışını yaxşılaşdırın): Şəxsi günəşin doğuşunu planlaşdırın, səhər oyanışınızı artırın Ən son təsadüfi ixtira, öz doğuşunuzu planlaşdırın! Gün ərzində günəş işığında mavi işıq diqqətimizi, yaddaşımızı, enerji səviyyələrimizi, reaksiya müddətlərimizi və ümumi əhvalımızı artırır. . Mavi işıq