Isi kandungan:

Jam Persaraan / Jam Naik / Jam Dn: 4 Langkah (dengan Gambar)
Jam Persaraan / Jam Naik / Jam Dn: 4 Langkah (dengan Gambar)

Video: Jam Persaraan / Jam Naik / Jam Dn: 4 Langkah (dengan Gambar)

Video: Jam Persaraan / Jam Naik / Jam Dn: 4 Langkah (dengan Gambar)
Video: Adakah sebab ini Diana Danielle mahu berpisah... 2024, November
Anonim
Jam Persaraan / Jam Naik / Jam Dn
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 dihitung ke tarikh / masa yang akan datang dan jika masa sasaran berlalu, hitunglah daripadanya. Saya membuat ini sekarang jam persaraan saya duduk di rak.

Idea untuk memasukkannya ke dalam botol lebih merupakan kebetulan ketika memikirkan selongsong. Yang lain memasukkan kapal ke dalam botol, mengapa tidak jam?

Saya juga ingin membuat jam mematuhi waktu menjimatkan waktu siang dan tentu saja mengingati tetapan dan waktu ketika dicabut. Saya menghidupkan jam melalui USB yang menjadikannya dapat diprogram semula jika anda ingin melakukan sesuatu yang berbeza atau hanya menambahkan ciri pada kod. Kodnya cukup mudah dan juga boleh menggunakan banyak pengoptimuman. Saya tidak mengambil berat tentang penggunaan RAM yang harus saya akui. Sekiranya saya mendapat masa dan motivasi, saya akan mengulanginya.

Bekalan

1. Arduino Nano

2. RTC (Saya menggunakan DS3231 biasa yang juga mempunyai EEPROM)

3. Modul matriks 12x 8x8 dot. (Saya mempunyai modul quad yang lebih mudah disusun)

4. LDR untuk menyesuaikan kecerahan paparan

5. Perintang 10 kOhm

6. Kapasitor 5x 100 uF menekan lonjakan dari paparan

7. Untuk meningkatkan kontras modul 8x8, saya menggunakan "Window Film" berwarna gelap. Paparan menunjukkan LED sebagai titik putih jika tidak menyala. Filem tingkap menjadikannya penampilan hitam berkilat.

Langkah 1: Sambungkan Komponen

Sambungkan Komponen
Sambungkan Komponen
Sambungkan Komponen
Sambungkan Komponen

Saya menggunakan tiga paparan quad untuk memasang paparan. Untuk menunjukkan tarikh dengan garis miring dan waktu dengan titik dua, kita memerlukan ruang untuk 8 aksara. Dengan menggunakan fon 5x7 biasa, kami memerlukan enam blok 8x8 setiap baris. Saya memotong salah satu blok quad menjadi dua dan menyusunnya sebagai dua baris dengan enam blok seperti yang ditunjukkan dalam skema papan roti.

Langkah 2: Bahagian Bercetak 3D

Bahagian Bercetak 3D
Bahagian Bercetak 3D
Bahagian Bercetak 3D
Bahagian Bercetak 3D
Bahagian Bercetak 3D
Bahagian Bercetak 3D

Untuk memegang dua baris paparan dan meletakkannya di dalam botol saya mencetak cincin jarak bulat untuk bingkai paparan. Saya menambah fail yang saya gunakan di bawah. Untuk dapat mencetaknya tanpa sokongan, ia dibahagikan kepada beberapa bahagian. Tangkapan skrin menunjukkan dua cincin terpaku pada bingkai paparan. Penutup leher botol menempatkan tiga butang untuk beralih antara mod paparan dan menetapkan masa semasa dan waktu sasaran. Penutup leher botol yang saya cetak dalam TPU memungkinkan memasukkan kabel USB ke penutup tanpa memotong penyambung dan mengikatnya dengan beberapa belitan wayar. Saya lupa untuk menyebut bahawa saya menggunakan sebotol wain 1.5 L yang saya potong di bahagian paling bawah. Semua bahagian yang akan dicetak dipasang di tempat tidur pencetak 20x20 cm (8x8 in).

Langkah 3: Kodnya

Kod Arduino menggunakan beberapa perpustakaan yang biasa digunakan.

MD_MAX72xx

SPI

Kawat

RTClib

Zon masa

MasaLib

Terdapat beberapa baris dalam fail INO yang mungkin perlu diubah:

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

bukannya FC16_HW ia boleh salah satu:

- MD_MAX72XX:: PAROLA_HW

- MD_MAX72XX:: GENERIC_HW

- MD_MAX72XX:: ICSTATION_HW

- MD_MAX72XX:: FC16_HW

Kod tersebut menggunakan tetapan untuk waktu AS Tengah dan perlu disesuaikan untuk zon waktu lain:

Baris 53/54:

TimeChangeRule myDST = {"CDT", Kedua, Matahari, Mac, 2, -300}; // Waktu Siang UTC-5TimeChangeRule mySTD = {"CST", Pertama, Matahari, Nov, 2, -360}; // Waktu standard UTC -6

Ini mudah disesuaikan. Nama CST / CDT hanya untuk mempunyai rujukan. Saya tidak memaparkan singkatan tiga huruf, jadi tidak menjadi masalah. Parameter seterusnya merujuk pada hari mana dalam bulan pertukaran berlaku. Penyesuaian dilakukan dalam beberapa minit, jadi lokasi yang menggunakan penyesuaian +/- 30 minit juga akan berfungsi.

RTC berjalan secara dalaman pada Waktu UTC yang membolehkan perpustakaan zon waktu berfungsi seperti yang diharapkan. Anda mungkin tertanya-tanya mengapa kod tersebut merujuk kepada cip DS1307 yang lebih tua yang bertentangan dengan cip jam yang saya gunakan, tetapi ini tidak menjadi masalah. Perpustakaan berfungsi dengan baik sama ada cip. DS1307 mempunyai kecenderungan untuk melayang lebih jauh daripada DS3132. DS3132 adalah jam pilihan. Bagi mereka yang ingin menambah masa internet, ESP8266 akan melakukan tugas dengan mudah. Ini boleh menjadikan RTC usang. Sekiranya anda membuat perubahan ini, gunakan EEPROM Arduino untuk menyimpan masa sasaran, saya menggunakan EEPROM RTC untuk melakukannya.

Langkah 4: Operasi dan Tetapan

Operasi dan Tetapan
Operasi dan Tetapan
Operasi dan Tetapan
Operasi dan Tetapan
Operasi dan Tetapan
Operasi dan Tetapan

Terdapat tiga butang

1. Menu / tetapan

2. Ke atas

3. Ke bawah

Butang menu membolehkan berpusing melalui tiga jenis paparan: Waktu semasa, Waktu sasaran, Waktu Delta. Waktu Delta menunjukkan bilangan hari, HH / MM / SS antara waktu semasa dan waktu sasaran. Ia akan menunjukkan t- dan menghitung mundur jika sasarannya di masa depan atau t + dan menghitung jika sasaran itu di masa lalu.

Untuk menyesuaikan waktu semasa atau sasaran, pilih paparan waktu semasa atau waktu sasaran. Untuk mengubah waktu, tahan butang menu selama 2 saat dan lepaskan yang akan membawa anda ke mod pengaturan. Jiran "/" atau ":" akan berubah menjadi "" untuk menunjukkan digit yang anda sesuaikan. Gunakan butang atas / bawah untuk menyesuaikan setiap jam / mm / sd dan mm / dd / yy. Saya tidak menambah tetapan untuk menukar antara mm / dd / yy dan dd / mm / yy, ini perlu berubah dalam kod atau mungkin seseorang bersedia menambahkan ciri ini.

Anda akan melihat bahawa jika anda melangkah lebih dari 59 atau di bawah 00, paparan jam juga akan disesuaikan. perkara yang sama berlaku untuk beberapa saat, jam dan hari mengubah nilai lebih tinggi seterusnya jika melintasi di bawah 0 atau di atas maksimum untuk digit ini. Saya melakukan ini untuk mengelakkan pengaturcaraan pelbagai had setiap bulan dan jika Februari memerlukan 29 hari dalam satu tahun lompat. Menyelaraskan waktu sebenarnya dilakukan dalam masa-masa, beberapa saat sejak Jan-1-1970.

Saya menambah video ringkas untuk menunjukkan pengiraan. Saya mahu menjadikannya seperti paparan roda putar. Sekiranya anda ingin menyesuaikan jangka masa perubahan, baris 69 di INO memberi anda beberapa pilihan untuk mempercepat atau memperlahankan perubahan. 120ms akan menjadikan angka digulung cukup perlahan kerana ia akan menjadi roda yang terus berjalan.

Saya harap anda menikmati pengajaran ini.

Patrick Geschwindner

Disyorkan: