Mündəricat:
- Addım 1: Bağlama Təlimatları
- Addım 2:
- Addım 3:
- Addım 4:
- Addım 5:
- Addım 6:
- Addım 7:
- Addım 8:
- Addım 9: Proqramlaşdırma Təlimatları
- Addım 10:
- Addım 11:
- Addım 12:
- Addım 13:
- Addım 14:
Video: Arduino Zəngli Saat Layihəsi: 14 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Bu layihədə, Arduino Uno -dan istifadə edərək LCD ekranı idarə etmək üçün həyəcan siqnalının hazırkı vaxtını və vaxtını göstərəcəyik. Hər dəfə təyin etmək üçün düymələrdən istifadə edəcəyik.
Materiallar:
- Arduino Uno -
- Çörək lövhəsi -
- Jumper Wires (x13+) -
- 10 kohm rezistor (x4) -
- LCD ekran -
- 7 Düymə-https://vilros.com/collections/raspberry-pi-acces…
- Piezo Dinamik -
Addım 1: Bağlama Təlimatları
1. Arduino üzərindəki 5V pinindən bir keçid telini çörək lövhəsindəki + raylardan birinə bağlayın.
Addım 2:
2. Arduino üzərindəki GND pinindən bir keçid telini çörək taxtasında seçdiyiniz + relsin yanındakı relsə bağlayın.
Addım 3:
3. LCD ekranı gücə, yerə və TX pininə (pin 1) qoşun.
Addım 4:
4. Ayaqları çörək taxtasındakı boşluqdan keçərək çörək taxtasına 7 düymə qoyun.
Addım 5:
5. Düymənin sol alt sancaqlarına bağlı olan GND pinli relsdən 10 kohm rezistoru yerləşdirin.
Addım 6:
6. Keçid tellərini düymələrin sağ alt pimi ilə çörək lövhənizdəki 5V ray arasında yerləşdirin.
Addım 7:
7. Keçid tellərini 6, daha sonra 8-13 pinləri və rezini bağladığı düymənin arasına yerləşdirin.
Addım 8:
8. Sonra, Piezo dinamikinizi çörək taxtasına qoyun və pin 7 -ni elektrik pininə, sonra yerə 100 ohm rezistora bağlayın.
Addım 9: Proqramlaşdırma Təlimatları
1. Baxış: Bu layihə, istifadəçidən ekrandakı cari vaxtı və həyəcan siqnalının təyin olunduğu vaxtı təyin etməsini xahiş edəcək. Hər dəfə təyin etmək üçün yuxarıdakı düymələrdən istifadə olunacaq. Soldan sağa, onlar cari saatı, cari dəqiqəni, cari AM və ya PM -i, zəngli saatı, həyəcan dəqiqəsini, həyəcanı AM və ya PM -i təyin edirlər. Son düymə həyəcan siqnalı çaldıqda onu susdurmaq üçün istifadə olunur.
Addım 10:
2. Etməli olduğumuz ilk şey, istifadə edəcəyimiz dəyişənimizi işə salmaqdır.
// İstifadə ediləcək dəyişənləri işə salın saat = 0; // Cari vaxt üçün saat int dəqiqə = 0; //
Cari vaxt üçün dəqiqə int saniyə = 0; // Cari vaxt üçün ikinci
int hour_a = 0; int // Zəngli saat üçün saat
dəqiqə_a = 0; // Zəngli saat üçün dəqiqə
bool am_pm = yalan; // AM/PM bayrağı dəyişdirin. Yanlış AM, doğru PMdir
bool am_pm_a = yalan; // AM/PM siqnalizasiya üçün bayrağı dəyişir. Yanlış AM, doğru PMdir
int set_hr = 13; // Saatı təyin etmək üçün pin 13 istifadə edin
int set_min = 12; // int int dəqiqəsini təyin etmək üçün pin 12 -dən istifadə edin
set_am_pm = 11; // Səhər/axşamı təyin etmək üçün pin 11 -dən istifadə edin
int set_hr_a = 10; // siqnalizasiya saatını təyin etmək üçün pin 10 istifadə edin int set_min_a = 9; // siqnalizasiya dəqiqəsini təyin etmək üçün pin 9 istifadə edin int set_am_pm_a = 8; // Siqnal üçün səhər/axşamı təyin etmək üçün pin 8 -dən istifadə edin
int dinamik = 7; // Dinamik üçün sakit olmaq üçün istifadə olunan pin = 6; // Dinamiki dayandırmaq üçün bərkidin
bool həyəcanı = yalan; // Narahat olmaq üçün keçmək üçün bayraq çəkin
bool sakitləşdi = yalan; // Sükut göstərən bayraq basılmadı
int cur_time = 0; // Cari vaxt üçün dəyişkəndir
int etime = 0; // Ötən müddət ərzində dəyişkəndir
Addım 11:
3. Sonra, LCD ekranı qurmalı və istifadəçiyə cari vaxtı təyin etməsini söyləməliyik. Bunun yalnız bir dəfə edilməsi lazım olduğundan, bunu quraşdırma qaydasında edəcəyik.
boş quraşdırma () {
// LCD ekran qurun
Serial.begin (9600); // Serialı 9600 baudda başladın
Serial.write (17); // Arxa işığı yandırın
Serial.write (24); // Ekranı kursorla və yanıb -sönmədən açın
Serial.write (12); // Ekranı silin
Serial.write (128); // İmleci sol üst küncə köçürün // PinModes pinMode qurun (set_hr, GİRİŞ); pinMode (set_min, GİRİŞ);
pinMode (set_am_pm, INPUT);
pinMode (set_hr_a, GİRİŞ);
pinMode (set_min_a, GİRİŞ);
pinMode (set_am_pm_a, GİRİŞ);
pinMode (dinamik, Çıxış);
pinMode (səssiz, GİRİŞ);
// İlkin gücdə istifadəçinin cari vaxtı təyin etməsi. Serial.print ("Cari vaxtı təyin et"); gecikmə (2000);
Serial.write (12);
printTimes ();
cur_time = milis (); // Cari vaxtı saxla}
Addım 12:
4. Sonra, dövrə rutinində, vaxtı izləyirik və düymənin vəziyyətini oxuyuruq ki, istifadəçinin vaxtlardan birini təyin edib -etmədiyini öyrənək.
boşluq döngəsi () {
// Vaxt saxla
keepTime ();
// Həyəcan etməyin vaxtı olub olmadığını yoxlayın!
if ((saat == hour_a && dəqiqə == dəqiqə_a &&! sakit) || həyəcan) {ton (dinamik, 2000, 500); // Dinamikə 500 ms üçün 2000 Hz səs çıxarın
gecikmə (500); // 500 ms gecikdirsə (! Həyəcan) {// Siqnal söndürülsə, onu yandırın
}
}
// İstifadəçi səs düyməsini basaraq həyəcanı susdurursa, (həyəcan &&! Sakitləşdirilmiş && digitalRead (səssiz)) {
həyəcan = yalan;
sakitləşdi = doğru; }
// Siqnalı sıfırlayın, əgər (! Siqnal && sakitləşdirilmiş && dəqiqə! = Dəqiqə_a) {sakitləşdirilmiş = yalan;
}
// Quraşdırılmış sancaqların yüksək olub olmadığını yoxlayın və əgər varsa, müvafiq dəyəri artırın (digitalRead (set_hr) && hour <12) {
saat ++;
printTimes ();
çıxarmaq ();
}
başqa halda (digitalRead (set_hr) && hour == 12) {hour = 1;
printTimes ();
çıxarmaq ();
}
başqa {}
if (digitalRead (set_min) && minutes <59) {
dəqiqə ++; printTimes ();
çıxarmaq ();
}
başqa halda (digitalRead (set_min) && minutes == 59) {minutes = 0;
printTimes ();
çıxarmaq ();
}
başqa {} if (digitalRead (set_am_pm) && am_pm) {
am_pm = yalan;
printTimes ();
çıxarmaq ();
}
başqa halda (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
çıxarmaq ();
}
başqa {} if (digitalRead (set_hr_a) && hour_a <12) {
hour_a ++;
printTimes ();
çıxarmaq ();
}
başqa halda (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
çıxarmaq ();
}
başqa {} if (digitalRead (set_min_a) && minutes_a <59) {
dəqiqə_a ++;
printTimes ();
çıxarmaq ();
}
başqa halda (digitalRead (set_min) && minutes_a == 59) {minutes_a = 0;
printTimes ();
çıxarmaq ();
}
başqa {} if (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = yalan;
printTimes ();
çıxarmaq ();
}
else if (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;
printTimes ();
çıxarmaq ();
}
başqa {}
}
Addım 13:
5. Burada yaratdığım bir neçə alt proqram görürsünüz - debounce () və printTimes (). Debounce () düymələri yalnız bir dəfə oxuduğumuzdan əmin olmaq üçün istifadə olunur. Arduino saniyədə min dəfə taradığından, yalnız bir dəfə oxumaq istədiyiniz zaman düymənin bir neçə dəfə basıldığını düşünə bilər. Düymə buraxılana qədər Debounce () proqramı donduracaq. printTimes () LCD ekranı yeniləyir, amma bir neçə əmr olduğu üçün onları bir dəfə yazdım və sonra zaman dəyəri dəyişdikdə alt proqrama zəng edə bilərəm.
// Hər hansı bir düyməyə basılarkən bu funksiyada qalın və 250 ms gecikdirin.
ləğv et () {
isə (digitalRead (set_hr) || digitalRead (set_min) ||
digitalRead (set_am_pm) || digitalRead (set_hr_a) ||
digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} gecikmə (250);
}
// Dəyişiklik olarsa, yenilənmiş vaxtları yazır
void printTimes () {
Serial.write (12);
Serial.print ("Cari Saat:");
Serial.write (148);
əgər (saat <10) {
Serial.print ("0");
}
Serial.çap (saat);
Serial.print (":");
əgər (dəqiqə <10) {
Serial.print ("0");
}
Serial.print (dəqiqə); Serial.print (":");
əgər (ikinci <10) {
Serial.print ("0");
}
Serial. çap (ikinci);
əgər (am_pm) {
Serial.print ("PM");
}
başqa {
Serial.print ("AM");
}
Serial.write (168);
Serial.print ("Siqnal Seti:" üçün);
Serial.write (188);
əgər (saat_a <10) {
Serial.print ("0");
}
Serial.print (hour_a);
Serial.print (":");
əgər (dəqiqə_a <10) {
Serial.print ("0");
}
Serial. çap (dəqiqə_a);
əgər (am_pm_a) {
Serial.print ("PM");
}
başqa {
Serial.print ("AM");
}
}
// Boş vaxt parametrlərini artırın
keepTime () {
etime = millis () - cur_time;
əgər (etime> = 1000 && saniyə <59) {
ikinci ++;
cur_time = milis ();
printTimes ();
}
başqa halda (etime> = 1000 && second == 59 && minutes <59) {second = 0;
dəqiqə ++;
cur_time = milis ();
printTimes ();
}
başqa halda (etime> = 1000 && saniyə == 59 && dəqiqə == 59 && saat <12) {
saniyə = 0; dəqiqə =
0; saat ++; cur_time =
milis (); printTimes ();
}
başqa halda (etime> = 1000 && saniyə == 59 && dəqiqə == 59 && saat == 12) {
saniyə = 0; dəqiqə =
0; saat = 1; am_pm =
! am_pm;
cur_time = milis ();
printTimes ();
}
başqa {}
}
Addım 14:
6. Budur!
Tərtib edin və yükləyin və hər şey bitdi!
Tövsiyə:
Magicbit (Arduino) istifadə edərək ağıllı zəngli saat: 10 addım
Magicbit (Arduino) istifadə edərək Ağıllı Zəngli Saat: Bu dərslik, heç bir RTC modulu istifadə etmədən Magicbit dev lövhəsindəki OLED displeydən istifadə edərək ağıllı zəngli saatın necə hazırlanacağını göstərir
Arduino OLED Zəngli Saat hazırlamaq: 5 addım
Arduino OLED Üzük Saatı hazırlamaq: Kiçik bir OLED ekran aldım, təmizliyi və aydınlığı diqqətimi çəkir. Amma bununla nə edim? Əslində məsələ onu necə göstərə bilərəm … Lol. Ən çox sevdiyim film seriyası olan Üzüklərin Efendisinin afişasına baxanda
Ağıllı Zəngli Saat: Raspberry Pi ilə Ağıllı Zəngli Saat: 10 addım (şəkillərlə)
Ağıllı Zəngli Saat: Raspberry Pi ilə Ağıllı Zəngli Saat: Heç ağıllı bir saat istəmisinizmi? Əgər belədirsə, bu sizin üçün bir həlldir! Ağıllı Zəngli Saat hazırladım, bu veb saytına görə zəngli saatını dəyişə biləcəyiniz bir saatdır. Siqnal çalınanda bir səs (zil) olacaq və 2 işıq yanacaq
Arduino ilə Zəngli Zəngli Saat: 13 Addım (Şəkillərlə)
Arduino ilə Zəngli Zəngli Saat: Səni bilmirəm, amma sadə bir zəngli saat məni oyatmağa qadir deyil. Yuxudan oyanmaq üçün işığa, səsə və hətta yumşaq bir şilləyə ehtiyacım var. Zəngli saat məni cəlb etmir, buna görə də özümü oyatmağa layiq biri olmağa qərar verdim
"Müdrik Saat 2" nin (Bir çox Əlavə Xüsusiyyətləri olan Arduino əsaslı Zəngli Saat) montajı: 6 addım
"Müdrik Saat 2" nin (Bir çox Əlavə Xüsusiyyətə malik Arduino əsaslı Zəngli Saat) Quraşdırılması: Bu dərslik, açıq mənbəli (hardware və proqram) layihə olan Wise Clock 2 üçün dəstin necə yığılacağını göstərir. Tam bir Wise Clock 2 dəsti burada əldə edilə bilər. Xülasə olaraq, bu, Wise Clock 2 -nin edə biləcəyi şeydir (cari açıq mənbə proqramı ilə