Isi kandungan:

Jam Ketepatan: 3 Langkah
Jam Ketepatan: 3 Langkah

Video: Jam Ketepatan: 3 Langkah

Video: Jam Ketepatan: 3 Langkah
Video: Tutorial Menguji Ketepatan Waktu (IF, OR, AND, dan TIME) pada Ms. Excel 2024, Julai
Anonim
Jam Ketepatan
Jam Ketepatan

Kita semua memerlukan jam jadi mengapa tidak membuat sendiri dalam arahan ini saya akan menunjukkan kepada anda bagaimana membuat jam Precision setelah anda menetapkan secara automatik akan melacak masa semasa di latar belakang semuanya. Walaupun hanya memerlukan sedikit bekalan dan pematerian sifar.

Bekalan

Pertama, anda memerlukan Arduino tetapi Arduino mana pun akan berfungsi

Seterusnya, anda memerlukan pelbagai kabel jumper generik.

2 Suis Tombol Tekan Sparkfun 12mm

Papan Roti tradisional

dan paparan 1660 LCD 1602

Langkah 1: Pendawaian

Pendawaian
Pendawaian

Agar jam ini berfungsi, anda perlu memasukkannya dengan cara yang sangat spesifik, jika tidak, anda akan mendapat sekumpulan nombor rawak di skrin dan bukannya pada waktunya.

Langkah 2: Kodnya

Oleh kerana kami tidak menggunakan RTC, kodnya akan menjadi sedikit panjang tetapi syukurlah saya telah melakukan semua kerja keras untuk anda dan memberikannya di sini.

Cukup Salin dan Tampal ini ke Arduino IDE atau Editor web.

#masuk "LiquidCrystal.h"

// Ini menentukan pendawaian LCD ke DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Tetapan Konstruk LCD Digital int cs = 9; // pin 9 untuk kontras PWM const int kontras = 100; // kontras lalai

// paparan Waktu awal ialah 12:59:45 PM int h = 12; int m = 59; int s = 45; bendera int = 1; // PM

// Butang Tetapan Masa int butang1; butang int2;

// Definisi pin untuk Butang Set Masa int hs = 0; // pin 0 untuk Penetapan Jam int ms = 1; // pin 1 untuk Penetapan Minit

// Backlight Time Out const int Time_light = 150; int bl_TO = Time_light; // Lampu Latar Time-Out int bl = 10; // Lampu latar pin const int backlight = 120; // tidak lebih dari 7mA !!!

// Untuk bacaan Waktu yang tepat, gunakan Arduino Real Time Clock dan jangan hanya melengahkan masa () uint32_t statik_akhir, sekarang = 0; // RTC

persediaan tidak sah () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // elakkan perintang Pullup luaran untuk Butang 1 pinMode (ms, INPUT_PULLUP); // dan Butang 2 analogWrite (cs, kontras); // Laraskan Kontras VO analogWrite (bl, lampu latar); // Putar pada Lampu Latar sekarang = millis (); // baca nilai awal RTC}

gelung void () {lcd.begin (16, 2); // setiap saat // Kemas kini Paparan LCD // Cetak MASA dalam Jam, Min, Sec + AM / PM lcd.setCursor (0, 0); lcd.print ("Masa"); jika (h <10) lcd.print ("0"); // selalu 2 digit lcd.print (h); lcd.print (":"); jika (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); jika (s <10) lcd.print ("0"); lcd.print (s);

jika (bendera == 0) lcd.print ("AM"); jika (bendera == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // untuk Line 2 lcd.print ("Precision clock");

// peningkatan penggantian penundaan (1000) // Ketepatan yang jauh lebih baik, tidak lagi bergantung pada masa pelaksanaan gelung

untuk (int i = 0; i <5; i ++) // buat 5 kali gelung 200ms, untuk tindak balas Butang lebih pantas {

while ((now-last_time) <200) // delay200ms {sekarang = millis (); } // gelung 200ms dalaman last_time = sekarang; // bersiap untuk gelung seterusnya

// baca butang Setting Butang1 = digitalRead (hs); // butang Baca Butang2 = digitalRead (ms);

// Waktu lampu latar habis bl_TO--; jika (bl_TO == 0) {analogWrite (bl, 0); // Lampu latar MATI bl_TO ++; } // Tekan mana-mana untuk mengaktifkan Lampu Latar jika (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, lampu latar); // tunggu sehingga Butang dilepaskan semasa ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Butang Baca butang2 = digitalRead (ms); }} lain // Butang Proses 1 atau Butang 2 ketika dipukul sambil Lampu Latar menyala {if (butang1 == 0) {h = h + 1; bl_TO = Lampu Masa; analogWrite (bl, lampu latar); }

jika (butang2 == 0) {s = 0; m = m + 1; bl_TO = Waktu_Lampu; analogWrite (bl, lampu latar); }

/ * ---- menguruskan detik, minit, jam am / pm limpahan ---- * / jika (s == 60) {s = 0; m = m + 1; } jika (m == 60) {m = 0; h = h + 1; } jika (h == 13) {h = 1; bendera = bendera + 1; jika (bendera == 2) bendera = 0; }

if ((button1 == 0) | (button2 == 0)) // Kemas kini paparan jika butang set masa ditekan {// Kemas kini Paparan LCD // Cetak WAKTU dalam Jam, Min, Sec + AM / PM lcd.setCursor (0, 0); lcd.print ("Masa"); jika (h <10) lcd.print ("0"); // selalu 2 digit lcd.print (h); lcd.print (":"); jika (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); jika (s <10) lcd.print ("0"); lcd.print (s);

jika (bendera == 0) lcd.print ("AM"); jika (bendera == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // untuk Line 2 lcd.print ("Precision clock"); }

} // tamat jika lain} // tamat untuk

// gelung 1000ms luar

s = s + 1; // kenaikan sek. membilang // ---- menguruskan detik, minit, jam am / pm limpahan ---- jika (s == 60) {s = 0; m = m + 1; } jika (m == 60) {m = 0; h = h + 1; } jika (h == 13) {h = 1; bendera = bendera + 1; jika (bendera == 2) bendera = 0; }

// Hujung gelung}

Langkah 3: Skematik (Ini Bukan Sebenarnya Langkah)

Skematik (Ini Bukan Betul Langkah)
Skematik (Ini Bukan Betul Langkah)

Sekiranya ada yang membaca ini adalah nerd teknologi di sini juga skema anda boleh melihatnya menjadi gila.

Nikmati dan bersenang-senang dan yang paling utama tetap segar.

Disyorkan: