Isi kandungan:

Projek Jam Penggera Arduino: 14 Langkah
Projek Jam Penggera Arduino: 14 Langkah

Video: Projek Jam Penggera Arduino: 14 Langkah

Video: Projek Jam Penggera Arduino: 14 Langkah
Video: Membuat Jam Digital dengan Alarm di Arduino - Project Arduino #14 2024, November
Anonim
Projek Jam Penggera Arduino
Projek Jam Penggera Arduino

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

Arahan Hookup
Arahan Hookup

1. Sambungkan wayar pelompat dari pin 5V di Arduino ke salah satu rel + di papan roti.

Langkah 2:

Imej
Imej

2. Sambungkan wayar pelompat dari pin GND di Arduino ke - rel di sebelah rel + yang anda pilih di papan roti.

Langkah 3:

Imej
Imej

3. Sambungkan skrin LCD ke kuasa, arde, dan pin TX (pin 1).

Langkah 4:

Imej
Imej

4. Letakkan 7 butang di papan roti dengan kaki melintasi celah di papan roti.

Langkah 5:

Imej
Imej

5. Letakkan perintang 10 kohm dari - rel dengan pin GND disambungkan ke pin kiri bawah butang.

Langkah 6:

Imej
Imej

6. Letakkan wayar pelompat di antara pin kanan bawah butang dan rel 5V di papan roti anda.

Langkah 7:

Imej
Imej

7. Letakkan wayar pelompat antara pin 6, kemudian 8-13, dan pin pada butang yang dihubungkan oleh perintang.

Langkah 8:

Imej
Imej

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: