Daftar Isi:

Proyek Jam Alarm Arduino: 14 Langkah
Proyek Jam Alarm Arduino: 14 Langkah

Video: Proyek Jam Alarm Arduino: 14 Langkah

Video: Proyek Jam Alarm Arduino: 14 Langkah
Video: Arduino RTC DS1307 Clock Alarm Timer Stopwatch | Membuat Jam Digital 3 in 1 Serbaguna 2024, November
Anonim
Proyek Jam Alarm Arduino
Proyek Jam Alarm Arduino

Dalam proyek ini, kita akan menggunakan Arduino Uno untuk mengontrol layar LCD untuk menunjukkan waktu dan waktu saat ini untuk mengatur alarm. Kami akan menggunakan tombol untuk mengatur setiap waktu.

Bahan:

  • Arduino Uno -
  • Papan tempat memotong roti -
  • Kabel Jumper (x13+) -
  • 10 resistor kohm (x4) -
  • Layar LCD -
  • 7 Tombol -
  • Pembicara Piezo -

Langkah 1: Instruksi Hookup

Petunjuk Sambungan
Petunjuk Sambungan

1. Hubungkan kabel jumper dari pin 5V pada Arduino ke salah satu + rel pada breadboard.

Langkah 2:

Gambar
Gambar

2. Hubungkan kabel jumper dari pin GND pada Arduino ke rel - di sebelah rel + yang Anda pilih di papan tempat memotong roti.

Langkah 3:

Gambar
Gambar

3. Hubungkan layar LCD ke power, ground, dan pin TX (pin 1).

Langkah 4:

Gambar
Gambar

4. Tempatkan 7 kancing pada breadboard dengan kaki melewati celah pada breadboard.

Langkah 5:

Gambar
Gambar

5. Tempatkan 10 resistor kohm dari - rel dengan pin GND terhubung ke pin kiri bawah tombol.

Langkah 6:

Gambar
Gambar

6. Tempatkan kabel jumper di antara pin kanan bawah tombol dan rel 5V pada papan tempat memotong roti Anda.

Langkah 7:

Gambar
Gambar

7. Tempatkan kabel jumper di antara pin 6, lalu 8-13, dan pin pada tombol yang dihubungkan dengan resistor.

Langkah 8:

Gambar
Gambar

8. Selanjutnya, letakkan speaker Piezo Anda di papan tempat memotong roti dan sambungkan pin 7 ke pin daya, lalu resistor 100 ohm ke ground.

Langkah 9: Instruksi Pemrograman

1. Tinjauan: Proyek ini akan meminta pengguna untuk menyetel waktu saat ini pada daya awal pada tampilan waktu saat ini dan waktu alarm disetel. Tombol-tombol yang terhubung di atas akan digunakan untuk mengatur setiap waktu. Dari kiri ke kanan, mereka mengatur jam saat ini, mengatur menit saat ini, mengatur AM atau PM saat ini, mengatur jam alarm, mengatur menit alarm, mengatur alarm AM atau PM. Tombol terakhir digunakan untuk membungkam alarm saat berbunyi.

Langkah 10:

2. Hal pertama yang perlu kita lakukan adalah menginisialisasi variabel yang akan kita gunakan.

// Inisialisasi variabel yang akan digunakanint jam = 0; // Jam untuk waktu saat ini int menit = 0; //

Menit untuk waktu saat ini int detik = 0; // Detik untuk waktu sekarang

int jam_a = 0; int // Jam untuk waktu alarm

menit_a = 0; // Menit untuk waktu alarm

bool am_pm = salah; // tanda sakelar AM/PM. Salah adalah AM, Benar adalah PM

bool am_pm_a = salah; // AM/PM beralih bendera untuk alarm. Salah adalah AM, Benar adalah PM

int set_jam = 13; // Gunakan pin 13 untuk mengatur jam

int set_min = 12; // Gunakan pin 12 untuk mengatur menit ke

set_am_pm = 11; // Gunakan pin 11 untuk menyetel am/pm

int set_hr_a = 10; // Gunakan pin 10 untuk menyetel jam alarm int set_min_a = 9; // Gunakan pin 9 untuk menyetel menit untuk alarm int set_am_pm_a = 8; // Gunakan pin 8 untuk menyetel am/pm untuk alarm

int pembicara = 7; // Pin yang akan digunakan untuk speakerint quiet = 6; // Sematkan untuk menghentikan speaker

alarm bool = salah; // Tandai untuk beralih agar tetap mengkhawatirkan

bool ditenangkan = salah; // Bendera yang menunjukkan ketenangan belum ditekan

int saat_waktu = 0; // Variabel untuk waktu sekarang

int waktu = 0; // Variabel untuk waktu yang telah berlalu

Langkah 11:

3. Selanjutnya, kita perlu mengatur layar LCD dan memberitahu pengguna untuk mengatur waktu saat ini. Karena ini hanya perlu dilakukan sekali, kami akan melakukannya dalam rutinitas penyiapan.

batalkan pengaturan() {

// Siapkan layar LCD

Serial.begin(9600); // Inisialisasi Serial pada 9600 baud

Serial.tulis(17); // Nyalakan lampu belakang

Serial.write(24); // Nyalakan layar, dengan kursor dan tanpa berkedip

Serial.tulis(12); // Bersihkan layar

Serial.tulis(128); // Pindahkan kursor ke pojok kiri atas// Setel pinModes pinMode(set_hr, MEMASUKKAN); 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(speaker, OUTPUT);

pinMode(tenang, INPUT);

// Pada daya awal, minta pengguna mengatur waktu saat ini. Serial.print("Atur waktu sekarang"); penundaan(2000);

Serial.tulis(12);

printTime();

cur_time = milis(); // Menyimpan waktu saat ini}

Langkah 12:

4. Kemudian, dalam rutinitas loop, kami melacak waktu dan membaca status tombol untuk melihat apakah pengguna menyetel salah satu waktunya.

lingkaran kosong() {

// Jaga Waktu

keepTime();

// Periksa untuk melihat apakah sudah waktunya untuk alarm!

if((jam == jam_a && menit == menit_a && !diam) || alarm){nada(speaker, 2000, 500); // Keluarkan suara 2000 Hz ke speaker selama 500 ms

penundaan (500); // Tunda 500 ms if(!alarm){ // Jika alarm mati, hidupkan

}

}

// Jika pengguna membungkam alarm dengan menekan tombol senyap, hentikan alarm if(alarm && !quieted && digitalRead(quiet)){

alarm = salah;

diam = benar; }

// Setel ulang alarm if(!alarm && silent && minute != minute_a){ quieted = false;

}

// Periksa untuk melihat apakah pin yang disetel menjadi tinggi, dan jika demikian, tingkatkan nilai yang sesuaiif(digitalRead(set_hr) && jam < 12){

jam++;

printTime();

memantul();

}

else if (digitalRead(set_hr) && jam == 12){ jam = 1;

printTime();

memantul();

}

lain{}

if(digitalRead(set_min) && menit < 59){

menit++;printTimes();

memantul();

}

else if (digitalRead(set_min) && menit == 59){ menit = 0;

printTime();

memantul();

}

else{}if(digitalRead(set_am_pm) && am_pm){

am_pm = salah;

printTime();

memantul();

}

else if (digitalRead(set_am_pm) && !am_pm){ am_pm = true;printTimes();

memantul();

}

else{}if(digitalRead(set_hr_a) && jam_a < 12){

jam_a++;

printTime();

memantul();

}

else if (digitalRead(set_hr_a) && hour_a == 12){hour_a = 1;

printTime();

memantul();

}

else{}if(digitalRead(set_min_a) && menit_a < 59){

menit_a++;

printTime();

memantul();

}

else if (digitalRead(set_min) && menit_a == 59){minute_a = 0;

printTime();

memantul();

}

else{}if(digitalRead(set_am_pm_a) && am_pm_a){

am_pm_a = salah;

printTime();

memantul();

}

else if (digitalRead(set_am_pm_a) && !am_pm_a){am_pm_a = true;

printTime();

memantul();

}

lain{}

}

Langkah 13:

5. Di sini, Anda akan melihat beberapa subrutin yang saya buat - debounce() dan printTimes(). Debounce() digunakan untuk memastikan kita hanya membaca tombol sekali. Karena Arduino memindai ribuan kali per detik, mungkin mengira tombol itu ditekan beberapa kali padahal Anda hanya bermaksud membacanya sekali. Debounce() akan membekukan program sampai tombol dilepaskan. printTimes() memperbarui layar LCD, tetapi karena itu adalah beberapa perintah, saya mengetiknya sekali dan kemudian dapat memanggil subrutin setiap kali nilai waktu berubah.

// Saat salah satu tombol ditekan, tetap dalam fungsi ini lalu tunda 250 ms.

batalkan pantulan (){

while(digitalRead(set_hr) || digitalRead(set_min) ||

digitalRead(set_am_pm) || digitalRead(set_hr_a) ||

digitalRead(set_min_a) || digitalRead(set_am_pm_a)){} delay(250);

}

// Mencetak waktu yang diperbarui jika ada perubahan

batal printTimes(){

Serial.tulis(12);

Serial.print("Waktu Sekarang:");

Serial.tulis(148);

jika(jam < 10){

Serial.print("0");

}

Serial.print(jam);

Serial.print(":");

jika(menit < 10){

Serial.print("0");

}

Serial.print(menit);Serial.print(":");

jika(kedua < 10){

Serial.print("0");

}

Serial.print(kedua);

jika (am_pm){

Serial.print("PM");

}

lain{

Serial.print("AM");

}

Serial.tulis(168);

Serial.print("Alarm Disetel untuk:");

Serial.tulis(188);

if(jam_a < 10){

Serial.print("0");

}

Serial.print(jam_a);

Serial.print(":");

jika(menit_a < 10){

Serial.print("0");

}

Serial.print(menit_a);

jika (am_pm_a){

Serial.print("PM");

}

lain{

Serial.print("AM");

}

}

// Menambah parameter waktu batal

keepTime(){

etime = milis() - cur_time;

if(etime >= 1000 && detik < 59){

kedua++;

cur_time = milis();

printTime();

}

else if(etime >= 1000 && detik == 59 && menit < 59){ detik = 0;

menit++;

cur_time = milis();

printTime();

}

else if(etime >= 1000 && detik == 59 && menit == 59 && jam < 12){

detik = 0; menit =

0; jam++; saat_waktu =

mili(); printTime();

}

else if(etime >= 1000 && detik == 59 && menit == 59 && jam == 12){

detik = 0; menit =

0; jam = 1; am_pm =

!am_pm;

cur_time = milis();

printTime();

}

lain{}

}

Langkah 14:

6. Itu dia!

Kompilasi dan unggah dan Anda sudah selesai!

Direkomendasikan: