Isi kandungan:
Video: Jam Ketepatan: 3 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
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
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)
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:
Jam Persaraan / Jam Naik / Jam Dn: 4 Langkah (dengan Gambar)
Jam Persaraan / Jam Naik / Jam Dn: Saya mempunyai beberapa paparan dot-matriks 8x8 LED di dalam laci dan memikirkan apa yang harus dilakukan dengan mereka. Diilhamkan oleh instruksional lain, saya mendapat idea untuk membuat paparan hitung mundur / naik untuk dikira ke tarikh / masa yang akan datang dan jika waktu sasaran
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
Pembalakan Data Jauh dengan Ketepatan Tinggi Menggunakan Multimeter / Arduino / pfodApp: 10 Langkah (dengan Gambar)
Pembalakan Data Jauh Akurasi Tinggi Menggunakan Multimeter / Arduino / pfod Aplikasi: Dikemas kini 26 April 2017 Litar dan papan yang disemak untuk digunakan dengan meter USB 4000ZC. Tidak memerlukan pengekodan Android. Arahan ini menunjukkan kepada anda bagaimana mengakses pelbagai ukuran ketepatan tinggi dari Arduino anda dan juga menghantarnya dari jauh untuk pembalakan dan
Eksperimen Pembetulan Ketepatan: 11 Langkah
Eksperimen Pembetulan Ketepatan: Saya baru-baru ini melakukan eksperimen pada litar pembetulan ketepatan dan mendapat beberapa kesimpulan kasar. Memandangkan bahawa litar penerus ketepatan adalah litar biasa, hasil eksperimen ini dapat memberikan beberapa maklumat rujukan
Pulse Oksimeter dengan Ketepatan yang Lebih Baik: 6 Langkah (dengan Gambar)
Pulse Oksimeter dengan Ketepatan yang Lebih Baik: Sekiranya anda baru-baru ini berjumpa doktor, kemungkinan tanda vital asas anda diperiksa oleh jururawat. Berat, tinggi, tekanan darah, serta degup jantung (HR) dan ketepuan oksigen dalam darah periferal (SpO2). Mungkin, dua yang terakhir diperoleh dari