Isi kandungan:
- Langkah 1: Arahan Hookup
- Langkah 2:
- Langkah 3:
- Langkah 4:
- Langkah 5:
- Langkah 6:
- Langkah 7:
- Langkah 8:
- Langkah 9: Arahan Pengaturcaraan
- Langkah 10:
- Langkah 11:
- Langkah 12:
- Langkah 13:
- Langkah 14:
Video: Projek Jam Penggera Arduino: 14 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Dalam projek ini, kami akan menggunakan Arduino Uno untuk mengendalikan skrin LCD untuk menunjukkan waktu dan waktu semasa penggera ditetapkan. Kami akan menggunakan butang untuk menetapkan setiap masa.
Bahan:
- Arduino Uno -
- Papan Roti -
- Jumper Wires (x13 +) -
- 10 perintang kohm (x4) -
- Skrin LCD -
- 7 Butang -
- Piezo Speaker -
Langkah 1: Arahan Hookup
1. Sambungkan wayar pelompat dari pin 5V di Arduino ke salah satu rel + di papan roti.
Langkah 2:
2. Sambungkan wayar pelompat dari pin GND di Arduino ke - rel di sebelah rel + yang anda pilih di papan roti.
Langkah 3:
3. Sambungkan skrin LCD ke kuasa, arde, dan pin TX (pin 1).
Langkah 4:
4. Letakkan 7 butang di papan roti dengan kaki melintasi celah di papan roti.
Langkah 5:
5. Letakkan perintang 10 kohm dari - rel dengan pin GND disambungkan ke pin kiri bawah butang.
Langkah 6:
6. Letakkan wayar pelompat di antara pin kanan bawah butang dan rel 5V di papan roti anda.
Langkah 7:
7. Letakkan wayar pelompat antara pin 6, kemudian 8-13, dan pin pada butang yang dihubungkan oleh perintang.
Langkah 8:
8. Seterusnya, letakkan pembesar suara Piezo anda di papan roti dan sambungkan pin 7 ke pin kuasa, kemudian perintang 100 ohm ke tanah.
Langkah 9: Arahan Pengaturcaraan
1. Gambaran Keseluruhan: Projek ini akan meminta pengguna untuk menetapkan waktu semasa pada daya awal pada paparan waktu semasa dan waktu penggera ditetapkan. Butang yang disambungkan di atas akan digunakan untuk mengatur setiap kali. Dari kiri ke kanan, mereka mengatur jam semasa, menetapkan minit semasa, menetapkan AM atau PM semasa, menetapkan jam penggera, menetapkan minit penggera, menetapkan penggera AM atau PM. Butang terakhir digunakan untuk membunyikan penggera ketika berbunyi.
Langkah 10:
2. Perkara pertama yang perlu kita lakukan adalah menginisialisasi pemboleh ubah yang akan kita gunakan.
// Memulakan pemboleh ubah yang akan digunakan dalam jam = 0; // Jam untuk waktu semasa int minit = 0; //
Minit untuk masa semasa int kedua = 0; // Kedua untuk masa sekarang
int hour_a = 0; int // Jam untuk waktu penggera
minit_a = 0; // Minit untuk waktu penggera
bool am_pm = salah; // Bendera togol AM / PM. Salah adalah AM, Betul adalah PM
bool am_pm_a = salah; // AM / PM togol bendera untuk penggera. Salah adalah AM, Betul adalah PM
int set_hr = 13; // Gunakan pin 13 untuk menetapkan jam
int set_min = 12; // Gunakan pin 12 untuk menetapkan minit int
set_am_pm = 11; // Gunakan pin 11 untuk menetapkan am / pm
int set_hr_a = 10; // Gunakan pin 10 untuk menetapkan jam untuk penggera int set_min_a = 9; // Gunakan pin 9 untuk menetapkan minit untuk penggera int set_am_pm_a = 8; // Gunakan pin 8 untuk menetapkan am / pm untuk penggera
pembesar suara int = 7; // Pin untuk digunakan untuk speakerint diam = 6; // Pin untuk menghentikan pembesar suara
penggera bool = salah; // Tandakan untuk beralih agar sentiasa membimbangkan
bool diam = salah; // Bendera yang menunjukkan senyap belum ditekan
int cur_time = 0; // Boleh berubah untuk masa sekarang
int etime = 0; // Boleh berubah untuk masa berlalu
Langkah 11:
3. Seterusnya, kita perlu mengatur skrin LCD dan memberitahu pengguna untuk menetapkan waktu semasa. Oleh kerana ini hanya perlu dilakukan sekali, kami akan melakukannya dalam rutin persediaan.
batal persediaan () {
// Sediakan skrin LCD
Serial.begin (9600); // Memulakan Serial pada 9600 baud
Serial.write (17); // Hidupkan lampu belakang
Serial.write (24); // Hidupkan paparan, dengan kursor dan tidak berkedip
Serial.write (12); // Kosongkan skrin
Serial.write (128); // Gerakkan kursor ke sudut kiri atas // Tetapkan pinMode 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 (pembesar suara, OUTPUT);
pinMode (senyap, INPUT);
// Pada kuasa awal, tetapkan pengguna menetapkan waktu semasa. Serial.print ("Tetapkan masa semasa"); kelewatan (2000);
Serial.write (12);
printTimes ();
cur_time = milis (); // Simpan masa semasa}
Langkah 12:
4. Kemudian, dalam rutin gelung, kami melacak waktu dan membaca status butang untuk melihat apakah pengguna menetapkan salah satu masa.
gelung kosong () {
// Jaga masa
jaga masa();
// Periksa untuk mengetahui apakah sudah tiba masanya untuk membimbangkan!
jika ((jam == jam_a && minit == minit_a &&! senyap) || penggera) {nada (pembesar suara, 2000, 500); // Keluarkan suara 2000 Hz ke pembesar suara selama 500 ms
kelewatan (500); // Kelewatan 500 ms jika (! Alarm) {// Sekiranya penggera dimatikan, hidupkan
}
}
// Sekiranya pengguna membunyikan penggera dengan menekan butang senyap, berhenti membimbangkan jika (penggera &&! Senyap && digitalRead (senyap)) {
penggera = salah;
sepi = benar; }
// Tetapkan semula penggera jika (! Alarm && diam && minute! = Minute_a) {silented = false;
}
// Periksa untuk mengetahui apakah pin set naik, dan jika ya, tambah nilai yang sesuai (digitalRead (set_hr) && hour <12) {
jam ++;
printTimes ();
lantunan ();
}
lain jika (digitalRead (set_hr) && hour == 12) {hour = 1;
printTimes ();
lantunan ();
}
lain {}
jika (digitalRead (set_min) && minit <59) {
minit ++; printTimes ();
lantunan ();
}
lain jika (digitalRead (set_min) && minute == 59) {minit = 0;
printTimes ();
lantunan ();
}
lain {} jika (digitalRead (set_am_pm) && am_pm) {
am_pm = salah;
printTimes ();
lantunan ();
}
lain jika (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();
lantunan ();
}
lain {} jika (digitalRead (set_hr_a) && hour_a <12) {
jam_a ++;
printTimes ();
lantunan ();
}
lain jika (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;
printTimes ();
lantunan ();
}
lain {} jika (digitalRead (set_min_a) && minute_a <59) {
minit_a ++;
printTimes ();
lantunan ();
}
lain jika (digitalRead (set_min) && minute_a == 59) {minit_a = 0;
printTimes ();
lantunan ();
}
lain {} jika (digitalRead (set_am_pm_a) && am_pm_a) {
am_pm_a = salah;
printTimes ();
lantunan ();
}
lain jika (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;
printTimes ();
lantunan ();
}
lain {}
}
Langkah 13:
5. Di sini, anda akan melihat beberapa subrutin yang saya buat - debounce () dan printTimes (). Debounce () digunakan untuk memastikan kita hanya membaca butang sekali. Oleh kerana Arduino mengimbas beribu-ribu kali sesaat, mungkin butang itu ditekan beberapa kali apabila anda hanya mahu sekali dibaca. Debounce () akan membekukan program sehingga butang dilepaskan. printTimes () mengemas kini layar LCD, tetapi kerana itu adalah beberapa perintah, saya mengetiknya sekali dan kemudian dapat memanggil subrutin setiap kali nilai waktu berubah.
// Semasa mana-mana butang ditekan, tetap dalam fungsi ini kemudian tunda 250 ms.
batal menolak () {
sementara (digitalRead (set_hr) || digitalRead (set_min) ||
digitalRead (set_am_pm) || digitalRead (set_hr_a) ||
digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} kelewatan (250);
}
// Mencetak masa yang dikemas kini jika ada perubahan
batal printTimes () {
Serial.write (12);
Serial.print ("Masa Semasa:");
Serial.write (148);
jika (jam <10) {
Cetakan bersiri ("0");
}
Cetakan bersiri (jam);
Serial.print (":");
jika (minit <10) {
Cetakan bersiri ("0");
}
Serial.print (minit); Serial.print (":");
jika (kedua <10) {
Cetakan bersiri ("0");
}
Cetakan bersiri (kedua);
jika (am_pm) {
Cetakan bersiri ("PM");
}
lain {
Cetakan bersiri ("AM");
}
Serial.write (168);
Serial.print ("Set Penggera untuk:");
Serial.write (188);
jika (jam_a <10) {
Cetakan bersiri ("0");
}
Serial.print (hour_a);
Serial.print (":");
jika (minit_a <10) {
Cetakan bersiri ("0");
}
Cetakan bersiri (minit_a);
jika (am_pm_a) {
Cetakan bersiri ("PM");
}
lain {
Cetakan bersiri ("AM");
}
}
// Kenaikan parameter masa tidak sah
jaga masa(){
etime = millis () - cur_time;
jika (etime> = 1000 && kedua <59) {
kedua ++;
cur_time = milis ();
printTimes ();
}
lain jika (etime> = 1000 && detik == 59 && minit <59) {kedua = 0;
minit ++;
cur_time = milis ();
printTimes ();
}
lain jika (etime> = 1000 && detik == 59 && minit == 59 && jam <12) {
kedua = 0; minit =
0; jam ++; cur_time =
milis (); printTimes ();
}
lain jika (etime> = 1000 && detik == 59 && minit == 59 && jam == 12) {
kedua = 0; minit =
0; jam = 1; am_pm =
!pagi petang;
cur_time = milis ();
printTimes ();
}
lain {}
}
Langkah 14:
6. Itu sahaja!
Susun dan muat naik dan anda sudah selesai!
Disyorkan:
Jam Penggera Pintar: Jam Penggera Pintar Dibuat Dengan Raspberry Pi: 10 Langkah (dengan Gambar)
Jam Penggera Pintar: Jam Penggera Pintar Dibuat Dengan Raspberry Pi: Adakah anda pernah mahukan jam pintar? Jika ya, ini adalah penyelesaian untuk anda! Saya membuat Jam Penggera Pintar, ini adalah jam yang boleh anda ubah waktu penggera mengikut laman web. Apabila penggera berbunyi, akan ada bunyi (bel) dan 2 lampu akan
Jam Rangkaian ESP8266 Tanpa RTC - Jam NTP Nodemcu Tiada RTC - PROJEK JAM INTERNET: 4 Langkah
Jam Rangkaian ESP8266 Tanpa RTC | Jam NTP Nodemcu Tiada RTC | PROJEK JAM INTERNET: Dalam projek ini akan membuat projek jam tanpa RTC, akan memakan masa dari internet menggunakan wifi dan akan memaparkannya pada paparan st7735
Jam Penggera Jalan Sesame DIY (dengan Penggera Kebakaran!): 6 Langkah (dengan Gambar)
Jam Penggera Jalan Sesame DIY (dengan Fire Alarm!): Hai semua! Projek ini adalah yang pertama saya. Sejak hari lahir pertama sepupu saya akan datang, saya ingin membuat hadiah khas untuknya. Saya mendengar dari bapa saudara dan ibu saudara bahawa dia ke Sesame Street, jadi saya memutuskan dengan adik-beradik saya untuk membuat jam penggera berdasarkan
Jam Penggera Sunrise LED Dengan Penggera Lagu yang Disesuaikan: 7 Langkah (dengan Gambar)
Jam Penggera Matahari LED Dengan Penggera Lagu yang Dapat Disesuaikan: Motivasi Saya Musim sejuk ini teman wanita saya menghadapi banyak masalah untuk bangun pada waktu pagi dan kelihatannya menderita SAD (Gangguan Afektif Musim). Saya bahkan menyedari betapa sukarnya bangun pada musim sejuk kerana matahari belum datang
Memasang "Jam Bijaksana 2" (Jam Penggera Berasaskan Arduino Dengan Banyak Ciri Tambahan): 6 Langkah
Memasang "Wise Clock 2" (Jam Penggera Berbasis Arduino Dengan Banyak Ciri Tambahan): Tutorial ini menunjukkan cara memasang kit untuk Wise Clock 2, sebuah projek sumber terbuka (perkakasan dan perisian). Kit Wise Clock 2 yang lengkap boleh dibeli di sini. Ringkasnya, inilah yang dapat dilakukan oleh Wise Clock 2 (dengan perisian sumber terbuka semasa