Daftar Isi:

Jam Pensiun / Jam Hitung / Dn: 4 Langkah (dengan Gambar)
Jam Pensiun / Jam Hitung / Dn: 4 Langkah (dengan Gambar)

Video: Jam Pensiun / Jam Hitung / Dn: 4 Langkah (dengan Gambar)

Video: Jam Pensiun / Jam Hitung / Dn: 4 Langkah (dengan Gambar)
Video: SEMAKIN DIMANJAKAN, Jokowi Ubah Jam Kerja PNS, Durasi Lebih Singkat tapi Gaji Meningkat 2024, November
Anonim
Jam Pensiun / Jam Hitung / Jam Dn
Jam Pensiun / Jam Hitung / Jam Dn

Saya memiliki beberapa tampilan dot-matrix LED 8x8 ini di laci dan sedang memikirkan apa yang harus dilakukan dengannya. Terinspirasi oleh instruksi lain, saya mendapat ide untuk membuat tampilan hitung mundur/naik untuk menghitung mundur ke tanggal/waktu mendatang dan jika waktu target berlalu, hitunglah darinya. Saya membuat ini sekarang jam pensiun saya duduk di rak.

Ide untuk memasukkannya ke dalam botol lebih merupakan kebetulan saat memikirkan casing. Yang lain memasukkan kapal ke dalam botol, mengapa bukan jam?

Saya juga ingin membuat jam mematuhi waktu musim panas dan tentu saja mengingat pengaturan dan waktu ketika dicabut. Saya menyalakan jam melalui USB yang membuatnya dapat diprogram ulang jika Anda ingin melakukan sesuatu yang berbeda atau hanya menambahkan fitur ke kode. Kode ini cukup sederhana dan juga dapat menggunakan banyak pengoptimalan. Saya tidak memperhatikan konsumsi RAM dengan baik harus saya akui. Jika saya punya waktu dan motivasi, saya akan kembali ke sana.

Perlengkapan

1. Arduino Nano

2. RTC (Saya menggunakan DS3231 umum yang juga memiliki EEPROM)

3. Modul dot matrix 12x 8x8. (Saya memiliki modul quad yang lebih mudah untuk berbaris)

4. LDR untuk mengatur kecerahan layar

5. Resistor 10 kOhm

6. Kapasitor 5x 100 uF menekan paku dari layar

7. Untuk meningkatkan kontras modul 8x8, saya menggunakan "Window Film" berwarna gelap. Layar menunjukkan LED sebagai titik putih jika tidak menyala. Kaca film mengubahnya menjadi tampilan hitam mengkilat.

Langkah 1: Hubungkan Komponen

Hubungkan Komponen
Hubungkan Komponen
Hubungkan Komponen
Hubungkan Komponen

Saya menggunakan tiga layar quad untuk merakit layar. Untuk menampilkan tanggal dengan garis miring dan waktu dengan titik dua, kita membutuhkan spasi untuk 8 karakter. Menggunakan font tipikal 5x7, kita membutuhkan enam blok 8x8 per baris. Saya memotong salah satu blok quad menjadi dua dan mengaturnya sebagai dua baris dengan enam blok seperti yang ditunjukkan pada skema papan tempat memotong roti.

Langkah 2: Bagian Cetakan 3D

Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D
Bagian Cetak 3D

Untuk menahan dua baris tampilan dan menempatkannya di dalam botol, saya mencetak cincin jarak bulat untuk bingkai tampilan. Saya menambahkan file yang saya gunakan di bawah ini. Untuk dapat mencetak ini tanpa dukungan, mereka dibagi menjadi beberapa bagian. Tangkapan layar menunjukkan dua cincin yang direkatkan ke bingkai tampilan. Penutup leher botol menampung tiga tombol untuk beralih di antara mode tampilan dan mengatur waktu saat ini dan waktu target. Penutup leher botol yang saya cetak dalam TPU memungkinkan untuk memasukkan kabel USB ke dalam penutup tanpa memotong konektor dan mengikatnya dengan beberapa gulungan kawat. Saya lupa menyebutkan bahwa saya menggunakan botol anggur 1,5 L yang saya potong di bagian paling bawah. Semua bagian yang akan dicetak dipasang di tempat tidur printer berukuran 20x20 cm (8x8 inci).

Langkah 3: Kode

Kode Arduino menggunakan beberapa perpustakaan yang umum digunakan.

MD_MAX72xx

SPI

Kabel

RTClib

Zona waktu

WaktuLib

Ada beberapa baris dalam file INO yang mungkin perlu diubah:

Baris 38: #define HARDWARE_TYPE MD_MAX72XX::FC16_HW <-- bergantung pada modul 8x8 dan orientasinya

alih-alih FC16_HW itu bisa salah satu dari:

- MD_MAX72XX::PAROLA_HW

- MD_MAX72XX::GENERIC_HW

- MD_MAX72XX::ICSTATION_HW

- MD_MAX72XX::FC16_HW

Kode menggunakan pengaturan untuk waktu Tengah AS dan perlu disesuaikan untuk zona waktu lainnya:

Baris 53/54:

TimeChangeRule myDST = {"CDT", Kedua, Minggu, Mar, 2, -300}; // Waktu Siang Hari UTC-5TimeChangeRule mySTD = {"CST", Pertama, Minggu, 2 Nov, -360}; // Waktu standar UTC -6

Ini mudah disesuaikan. Nama CST/CDT hanya untuk referensi. Saya tidak menampilkan singkatan tiga huruf, jadi tidak masalah. Parameter berikutnya mengacu pada hari di bulan mana peralihan itu terjadi. Penyesuaian dilakukan dalam hitungan menit, jadi lokasi yang menggunakan penyesuaian +/- 30 menit juga akan berfungsi.

RTC berjalan secara internal pada UTC-Time yang memungkinkan perpustakaan zona waktu berfungsi sebagaimana dimaksud. Anda mungkin bertanya-tanya mengapa kode tersebut merujuk pada chip DS1307 yang lebih tua yang bertentangan dengan chip jam yang saya gunakan, tetapi ini tidak masalah. Pustaka bekerja dengan baik dengan salah satu chip. DS1307 memiliki kecenderungan untuk hanyut lebih dari DS3132. DS3132 adalah jam yang disukai. Bagi mereka yang ingin menambah waktu internet, ESP8266 akan melakukan pekerjaan dengan cukup mudah. Ini bisa membuat RTC menjadi usang. Jika Anda membuat perubahan ini, gunakan Arduino EEPROM untuk menyimpan waktu target, saya menggunakan RTC EEPROM untuk melakukannya.

Langkah 4: Operasi dan Pengaturan

Operasi dan Pengaturan
Operasi dan Pengaturan
Operasi dan Pengaturan
Operasi dan Pengaturan
Operasi dan Pengaturan
Operasi dan Pengaturan

Ada tiga tombol

1. Menu / pengaturan

2. Naik

3. Bawah

Tombol menu memungkinkan bersepeda melalui tiga jenis tampilan: Waktu saat ini, Waktu target, Waktu Delta. Waktu Delta menunjukkan jumlah hari, HH/MM/SS antara waktu saat ini dan waktu target. Ini akan menunjukkan t- dan menghitung mundur jika target di masa depan atau t+ dan menghitung naik jika target di masa lalu.

Untuk menyesuaikan waktu saat ini atau waktu target, pilih tampilan waktu saat ini atau waktu target. Untuk mengubah waktu, tahan tombol menu selama 2 detik dan lepaskan yang akan membawa Anda ke mode pengaturan. "/" atau ":" tetangga akan berubah menjadi "" untuk menunjukkan digit mana yang Anda sesuaikan. Gunakan tombol atas/bawah untuk menyesuaikan jj/mm/dt dan bb/hh/tt. Saya tidak menambahkan pengaturan untuk beralih antara mm/dd/yy dan dd/mm/yy, ini perlu diubah dalam kode atau mungkin seseorang bersedia menambahkan fitur ini.

Anda akan melihat bahwa jika Anda melangkah menit lebih dari 59 atau di bawah 00, tampilan jam akan menyesuaikan juga. hal yang sama berlaku untuk detik, jam, dan hari yang mengubah nilai yang lebih tinggi berikutnya jika melewati di bawah 0 atau di atas nilai maksimum untuk digit ini. Saya melakukan ini untuk menghindari pemrograman berbagai batasan bulan individual dan jika Februari membutuhkan 29 hari dalam tahun kabisat. Penyesuaian waktu sebenarnya dilakukan dalam epoch-time, detik sejak 1 Januari 1970.

Saya menambahkan video sederhana untuk menunjukkan penghitungan. Saya ingin membuat ini seperti tampilan roda putar. Jika Anda ingin menyesuaikan durasi perubahan, baris 69 di INO memberi Anda beberapa opsi untuk mempercepat atau memperlambat perubahan. 120ms akan membuat digit bergulir cukup lambat karena itu akan menjadi roda yang terus berjalan.

Saya harap Anda menikmati instruksi ini.

Patrick Geschwindner

Direkomendasikan: