Daftar Isi:

Jam Musim Panas Mudah: 7 Langkah
Jam Musim Panas Mudah: 7 Langkah

Video: Jam Musim Panas Mudah: 7 Langkah

Video: Jam Musim Panas Mudah: 7 Langkah
Video: 5 HAL YANG WAJIB HINDARI SAAT MUSIM PANAS KEMARAU | El Nino | Tanah & Tanaman Subur & Sehat 2024, Juli
Anonim
Jam Musim Panas Mudah
Jam Musim Panas Mudah
Jam Musim Panas Mudah
Jam Musim Panas Mudah

Cerita

Proyek ini dimulai sebagai tantangan bagi saya untuk belajar pemrograman (coding) dengan Arduino Uno dan satu layar LCD 1602A, pertama-tama saya ingin mendorong Arduino hingga batas akurasinya. Ini adalah proyek untuk membangun jam tanpa menggunakan modul RTC (Modul Jam Waktu Nyata) dan selanjutnya tidak menggunakan penundaan (); perintah karena delay(); perintah menghentikan kode untuk jangka waktu yang ditentukan. Ketika saya mengerjakan kode penyimpanan waktu dasar, saya pikir ini mungkin sedikit biasa jadi saya memutuskan untuk menambahkan fitur waktu musim panas sebagai tambahan baru untuk membumbui segalanya dan mungkin membuat sedikit lebih banyak minat dalam proyek ini. Pada awalnya ide itu murni baru tetapi semakin saya bekerja dengannya dan melihat jam fisik yang saya jalankan di meja saya, semakin praktis ide itu. Dengan menambahkan modul RTC dan menyesuaikan kode jam ini akan akurat untuk tahun-tahun mendatang dan dengan biaya yang sangat rendah bagi produsen dan masyarakat yang membeli jam seperti itu.

Waktu Musim Panas atau (DST) telah ada selama 100+ tahun (Google, ini memiliki sejarah yang cukup berwarna). Saya tidak ingin masuk ke dalam politik tetapi ini adalah latihan yang kasar dan menyakitkan yang tidak membuat hidup menjadi mudah bagi orang-orang biasa (Anda dan saya). Sebagian besar kita menikmati jam tambahan siang hari tetapi cara penerapannya brutal. Saatnya untuk upgrade besar ke ide yang sangat lama.

Contoh ini mudah untuk hidup dengan dan dengan era digital dan kemajuan teknologi mudah diterapkan pada semua bentuk jam digital, tetapi bisa membantu matinya jam analog. Daripada melompat 1 jam dari waktu standar ke waktu DST maka waktu DST ke waktu standar jam ini didasarkan pada perkembangan bertahap waktu dari titik balik matahari musim dingin ke titik balik matahari musim panas kemudian kembali ke waktu standar pada titik balik matahari musim dingin berikutnya tahun demi tahun. Transisi ini berlangsung selama 180 hari dari setiap periode 6 bulan, penyesuaiannya adalah 20 detik sehari selama 360 hari dengan sisa 5 atau 6 hari ditambahkan ke panjang titik balik matahari. Contoh saya di sini bertambah 1 menit sekali setiap tiga hari dalam siklus 180 hari. Pada atau sekitar tanggal 21 Juni setiap tahun, jam tersebut 1 jam penuh ke depan dan pada atau sekitar tanggal 21 Desember setiap tahun jam telah kembali ke waktu standar. Tahun kabisat mudah dihitung terutama jika menggunakan RTC. Belahan Bumi Selatan mudah disesuaikan dengan jam ini juga, skala geser hanya berjarak 6 bulan dari fase dari belahan bumi utara.

Ada tiga tempat di dunia yang DST akan cukup banyak kecuali, wilayah khatulistiwa, dan kutub. Saya rasa siang hari tidak banyak berubah di khatulistiwa, saya tidak tahu apakah ada daerah tropis yang bahkan menggunakan DST dan kutub adalah cerita yang berbeda lagi, hanya 'APA' waktu itu di kutub?

Langkah 1: Tentang Jam

Tentang Jam
Tentang Jam
Tentang Jam
Tentang Jam

Jam yang saya buat didasarkan pada waktu standar yang tidak pernah berbeda dari jam dunia yang diterima secara internasional, ini ditampilkan pada baris pertama LCD 1602. Baris kedua adalah skala waktu yang sama tetapi menunjukkan selisih menit dari satu titik balik matahari ke titik balik matahari berikutnya. Dari titik balik matahari musim dingin ke titik balik matahari musim panas, offset meningkat satu menit setiap tiga hari hingga maksimum enam puluh menit. Dari titik balik matahari musim panas ke titik balik matahari musim dingin, offset berkurang satu menit setiap tiga hari hingga waktu standar dan waktu DST sama.

Untuk contoh ini saya telah menggunakan waktu militer (24 jam) dan waktu standar (12 jam) AM dan PM untuk membantu orang-orang yang tidak terbiasa dengan skala waktu 24 jam, juga memberi kamar saya untuk menampilkan nomor hari DST adalah ditetapkan dari. Kode dapat diubah untuk menampilkan jam 12 jam. Saya telah menambahkan tiga tombol tekan yang terhubung ke pin digital 2, 3 dan 4 untuk menyesuaikan waktu. Tombol-tombol ini hanya akan bertambah detik, menit atau jam saja. Tombol bersifat opsional, jam akan tetap berfungsi dengan baik jika Anda tidak memasang tombol dan tidak perlu mengubah kode. Saya akan merekomendasikan setidaknya menggunakan tombol untuk menyesuaikan detik dan jika akurasi lengkap tidak dapat dicapai menjaga jam di sisi yang lambat, tombol memajukan waktu 1 detik per detik.

Jika Anda memulai jam dari Arduino IDE, itu akan memakan waktu sekitar 5,5 hingga 6 detik untuk memuat dan mem-boot sketsa, jika Anda telah memuat sketsa ke Arduino, lalu tancapkan ke kutil dinding atau catu daya, itu akan memakan waktu sekitar 2,5 hingga 3 detik untuk boot dan menjalankan.

Ada beberapa pengaturan manual yang diperlukan ketika Anda akhirnya menyiapkan jam untuk dioperasikan.

Jam ini tidak menggunakan modul RTC dan juga tidak menggunakan "delay();" perintah.

Jika Anda suka menggunakan RTC dengan Arduino, konsep ini masih dapat digunakan. RTC akan memberi Anda semua informasi yang Anda butuhkan untuk menambahkan waktu EDSC. Kodenya mungkin sangat berbeda dengan modul RTC, saya belum memeriksanya. Anda cukup mandiri jika melakukannya, tetapi ini adalah cara yang bagus untuk melatih otak Anda.

Langkah 2: Apa yang Anda Butuhkan

Apa yang Anda Butuhkan
Apa yang Anda Butuhkan
Apa yang Anda Butuhkan
Apa yang Anda Butuhkan
Apa yang Anda Butuhkan
Apa yang Anda Butuhkan

DAFTAR BELANJA

1 Arduino Uno atau Mega2569 (pin I2C adalah A4 dan A5 pada UNO dan 20 dan 21 pada 2560 Mega)

Hampir semua Arduino lain harus berfungsi, pin yang digunakan mungkin berbeda. Dalam hal ini, papan pengontrol apa pun akan berfungsi. Anda harus menulis ulang kode untuk papan atau pabrikan itu.

1 1602 layar LCD (warna pilihan Anda)

Saya menggunakan paket belakang I2C dengan LCD, saya merasa lebih mudah dan lebih cepat untuk mengaturnya.

Kabel jumper

PERSEDIAAN OPSIONAL

1 papan roti ukuran sedang

1-3 tombol tekan kontak sesaat

1-3 10 K ohm resistor

Instruksi ini panjang, jadi saya tidak akan masuk ke dudukan atau kabinet yang saya gunakan untuk menampilkan jam. Jika Anda menyukai proyek ini dan ingin membuat versi permanen, desainlah sesuai keinginan Anda. Desain ini sangat cocok untuk saya karena saya memiliki semua yang saya butuhkan di kotak sampah saya dan saya suka tampilannya.

CATATAN:

Untuk menghindari jurang pemadaman listrik, jam terakhir saya ditenagai oleh panel surya yang saya miliki di luar. Panel surya menyimpan baterai 12 volt yang diisi dengan regulator di atasnya untuk mencegah pengisian yang berlebihan. Baterai ini terhubung ke Arduino melalui colokan listrik di sebelah port USB. Saya menjaga port USB tetap terhubung ke jaringan untuk mengurangi penggunaan baterai. Kedua sumber daya dapat digunakan secara bersamaan tanpa merusak Arduino. Baterai 12 volt dapat diisi hingga 14,5 volt maks yang terlalu tinggi untuk Arduino jadi saya menggunakan konverter buck untuk mengurangi tegangan suplai dari baterai ke kisaran 9 hingga 12 volt. Baterai 12 volt yang saya isi akan bertahan 3 atau 4 hari jika hari mendung. Regulator yang saya gunakan akan memutus aliran listrik ke Arduino jika tegangan baterai turun menjadi 11 volt. Baterai yang saya miliki berasal dari sistem lampu darurat untuk bangunan komersial, ukurannya sekitar seperempat ukuran baterai mobil kecil. Jika Anda bermaksud menggunakan aki mobil, pastikan untuk menyimpannya di tempat yang berventilasi baik (di luar), aki mobil mengeluarkan gas hidrogen dan oksigen saat pengisian dan pelepasannya, ini adalah kombinasi yang eksplosif.

PERINGATAN

TETAPKAN BATERAI DALAM SUMUR

AREA berventilasi, DI LUAR

Langkah 3: Pengkabelan

Pengkabelan
Pengkabelan

Saya telah menyediakan skema untuk semua koneksi dalam proyek ini, jika Anda menggunakan papan tempat memotong roti, Anda memerlukan papan ukuran sedang, sakelar akan membutuhkan ruang untuk disebar sehingga rangkaian tidak membingungkan.

Layar LCD 1602 memiliki paket belakang I2C untuk kesederhanaan, jika Anda menggunakan koneksi SPI, Anda perlu mencari cara menggunakannya dan mengubah kode di dekat awal sketsa. Saya tidak pernah menggunakan koneksi SPI sehingga pin 2, 3 dan 4 mungkin tidak tersedia untuk tiga tombol tekan.

Tiga tombol push digunakan untuk mengatur waktu pada jam. Mereka hanya memajukan waktu (AHEAD). Dalam penyesuaian terakhir, simpan jam dalam kode di sisi yang lambat (sekitar 1 hingga 2 detik per hari atau beberapa hari) dengan cara ini Anda dapat memajukan waktu jika perlu. Setiap tombol memajukan waktu satu kenaikan per detik, tombol bawah 2 detik per detik, tombol tengah 1 menit per detik dan tombol atas 1 jam per detik. Tingkat akurasi yang cukup tinggi seharusnya bisa dilakukan sehingga Anda tidak perlu terlalu sering menyesuaikannya.

Jika Anda menyesuaikan detik, menit atau jam (misalnya jika menit dimajukan 58, 59, 00) jam akan maju ke jam berikutnya.

Ketiga tombol ini adalah tambahan menit terakhir untuk jam, mereka berfungsi dengan baik tetapi mungkin ada cara yang lebih baik. Ingatlah bahwa jika Anda mengacaukan bagian kode ini, "delay();" perintah tidak dapat digunakan. Saya menggunakan metode ini karena saya tidak perlu khawatir tentang switch bouncing dan lompatan aneh seiring berjalannya waktu.

Langkah 4: Apa yang Ditampilkan Layar

Apa yang Ditampilkan Layar
Apa yang Ditampilkan Layar

Saya telah menaruh banyak informasi pada layar LCD 1602 yang memerlukan beberapa penjelasan:

Baris 1 Atau baris nol '0' saat berbicara dalam kode, menunjukkan waktu standar. Di sebelah kiri adalah 'STD', ini adalah singkatan dari waktu 'STandarD'.

Berikutnya pada baris pertama di tengah adalah waktu standar lokal Anda. Jangan mulai dengan waktu musim panas, jam akan menampilkan ini pada baris kedua.

Skala waktu ini adalah jam 12 jam jadi di sisi kanan adalah 'AM atau 'PM' untuk menunjukkan pagi atau sore hari.

Baris 2 Atau baris satu '1' ketika berbicara dalam kode, menunjukkan waktu musim panas yang bervariasi menurut hari dalam setahun. 'DST' di sebelah kiri berarti 'Waktu Musim Panas'

Di tengah baris kedua adalah waktu militer lokal Anda yang merupakan jam 24 jam. Anda akan mendengarnya disebut sebagai 'oh enam ratus jam' misalnya.

Di sebelah kanan adalah hari dalam setahun seperti yang dirujuk dari titik balik matahari musim dingin, di Belahan Bumi Utara 21 Desember (kurang-lebih) adalah hari nol '0' dan di Belahan Bumi Selatan 21 Juni (kurang-lebih) adalah hari nol '0'.

Saya telah menyediakan dua file.pdf untuk referensi saat pertama kali mengatur jam. Pilih file yang mengacu pada belahan bumi tempat Anda tinggal.

Tiga tombol di sebelah kanan menambah detik, menit dan jam dari bawah ke atas.

Langkah 5: Pengaturan Sketsa

Pengaturan Sketsa
Pengaturan Sketsa

Ada beberapa baris kode yang perlu disiapkan untuk start up awal. Beberapa baris ini perlu diubah setiap kali Anda memutuskan jam dan mengubah nilai variabel dalam sketsa. Jika Anda memulai jam untuk IDE, dibutuhkan sekitar 6 detik untuk memuat dan memulai. Jika Anda memuat sketsa dari IDE kemudian lepaskan jam dan mulai ulang dari kutil dinding atau catu daya, sketsa akan boot dalam waktu sekitar 2,5 detik.

Baris 11 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Baris ini membahas layar LCD dan menetapkan alamat yang benar dari paket belakang I2C. 0x27 adalah alamat dari setiap paket belakang yang saya beli. Jika Anda menyalakan jam tetapi tidak ada data yang ditampilkan tetapi menyala, alamatnya mungkin berbeda pada LCD Anda. Saya akan meletakkan tautan di bawah ini untuk penjelasan tentang cara mengubah alamat back pack LCD Anda atau menemukan alamatnya.

Baris 24 int menitSt = 35;

Setel menit mulai untuk jam standar, biasanya setel 5 menit sebelum Anda memulai jam untuk memungkinkan waktu penyetelan.

Baris 25 int hourSt = 18;

Atur jam ke waktu STD (jam 24 jam) mulai masuk. 18:00 akan menjadi jam 18.

Baris 26 int DSTdays = 339;

Unduh dan lihat file pdf "Easy DST Clock Time Scale" (Belahan Bumi Utara atau Selatan) tempat Anda tinggal, cari tanggal dan masukkan Hari # ke dalam baris ini. (Kolom kiri). Contoh (24 November adalah hari ke-339 di Belahan Bumi Utara dan hari ke-156 di Belahan Bumi Selatan)

Baris 27 int DSTtahun = 2019;

Masukkan tahun berjalan.

Baris 92 if ((masterTime - sebelumnyaMasterTimeSt >=1000) && (microTime - sebelumnyaMicroTimeSt >= 500)){

"MasterTimeSt sebelumnya" perlu dibandingkan dengan jumlah milidetik sehingga '1000' ini mungkin perlu diubah menjadi 999 tergantung pada jam internal papan Arduino kemudian sesuaikan MicroTime sebelumnya untuk menyempurnakan jam. Jam internal meskipun 16MH memiliki variasi dari satu papan ke papan berikutnya.

The "previousMicroTimeSt" menyempurnakan jam internal untuk membantu menghitung 1 detik yang akurat. Jika jam terlalu cepat menambah mikrodetik dan jika jam terlalu lambat kurangi mikrodetik dan jika perlu turunkan milidetik menjadi 999 dan kemudian mulai mikrodetik sekitar 999, 990 atau tingkatkan kecepatan jam.

Setiap board Arduino memiliki kecepatan yang sedikit berbeda oleh karena itu angka-angka ini akan berubah dengan setiap board yang Anda gunakan. Bagian dari kode belum diuji, ini adalah baris 248 untuk memperhitungkan setiap tahun kabisat. Dalam beberapa minggu ke depan saya akan mengujinya dan memposting perubahan apa pun jika perlu.

Langkah 6: Catatan Akhir

Catatan Akhir
Catatan Akhir

Proyek ini mudah dibuat tetapi konsep dan penyesuaian yang diperlukan dalam kode mungkin merupakan tugas, luangkan waktu Anda dan pikirkan matang-matang, jamnya tidak kedaluwarsa hingga akhir 2037. Saya akan terus mengawasi proyek saya. email untuk pertanyaan karena saya yakin akan ada beberapa, saya bukan seorang jenius sastra sehingga beberapa deskripsi saya mungkin sedikit berlumpur.

Ada dua file.pdf yang disertakan, unduh file untuk belahan bumi tempat Anda tinggal, file ini akan memberi Anda informasi yang diperlukan untuk memulai jam secara akurat.

Dengan informasi yang dimanipulasi dalam sketsa, akan mudah untuk menampilkan tidak hanya waktu standar dan waktu DST tetapi juga hari dan tanggal pada LCD 2004A. Jika Anda menyukai tantangan yang disediakan proyek ini, coba hubungkan layar LCD 2004A lalu tambahkan kode untuk menampilkan informasi tambahan atau jika minat yang ditampilkan cukup, saya akan melakukan variasi lain dari proyek ini termasuk informasi tambahan ini.

Saya sudah mencoba untuk menjadi semua-inklusif dalam proyek ini tetapi saya menemukan tiga area di dunia yang dimaksud. Kutub Utara, Kutub Selatan dan Khatulistiwa.

Apakah DST diperlukan atau bahkan mungkin di Kutub Utara atau Selatan?

Jam berapa di Kutub Utara atau Selatan?

Arah apa yang akan Anda tempuh untuk meninggalkan Kutub Utara atau Kutub Selatan?

Dari Kutub Selatan, arah mana yang akan Anda tempuh untuk mencapai Austrailia, Amerika Utara, Eropa, atau Asia?

Di zona waktu apa Santa tinggal?

Apakah dia membutuhkan DST?

Jam berapa sekarang di Kutub Utara?

Ke arah mana Santa melakukan perjalanan untuk mengirimkan semua hadiahnya?

Pada garis lintang berapa DST efektif?

Sekarang untuk Khatulistiwa;

Apakah jam ini bisa digunakan di Khatulistiwa?

Apakah mereka akan menggunakan skala Belahan Bumi Utara atau Selatan?

Apa tanggal untuk titik balik matahari musim dingin dan titik balik matahari musim panas?

Pada garis lintang berapa DST efektif?

Apakah penguin membutuhkan DST?

Apakah Anda pikir saya aneh karena memikirkan pertanyaan-pertanyaan ini?

Selamat membangun semuanya!

philmnut

Langkah 7: Tautan Lain

Ini adalah link untuk menentukan atau mengubah alamat pada back pack I2C:

www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/

PiotrS telah menulis instruksi yang sangat baik untuk alamat perangkat keras I2C

playground.arduino.cc/Main/I2cScanner

Tautan ini akan memindai perangkat I2C Anda dan mengembalikan alamatnya

Direkomendasikan: