Mündəricat:

Səhər Dostum: 8 addım
Səhər Dostum: 8 addım

Video: Səhər Dostum: 8 addım

Video: Səhər Dostum: 8 addım
Video: Mehdi Sadiq × Noton - Səncə Nədən? (SƏS OST) 2024, Noyabr
Anonim
Image
Image

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ı

Eskiz və Materiallar
Eskiz və Materiallar

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

Eskiz və Materiallar
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ı

Çıxış korpusunun yaradılması
Çıxış korpusunun yaradılması
Çıxış korpusunun yaradılması
Çı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ə

Xarici Kassanı Lazerlə Kəsmə
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

Birlikdə qoyulması
Birlikdə qoyulması

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

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
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

Final
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ə: