Isi kandungan:

Jam Dinding Cryptic: 27 Langkah (dengan Gambar)
Jam Dinding Cryptic: 27 Langkah (dengan Gambar)

Video: Jam Dinding Cryptic: 27 Langkah (dengan Gambar)

Video: Jam Dinding Cryptic: 27 Langkah (dengan Gambar)
Video: 7 Creepypasta TERANEH & TERSERAM di Minecraft Part 27‼️(3 Jumpscare) 2024, November
Anonim
Jam Dinding Cryptic
Jam Dinding Cryptic

Peredaran masa adalah sesuatu yang tidak dapat kita kendalikan. Ia berlaku pada kadar yang sama jika kita tidur, terjaga, bosan, atau bertunang. Dengan peristiwa semasa, penting untuk diingat masa akan berlalu. Sementara kita menunggu masa berlalu, mengapa tidak membuat sesuatu yang menjadikan peredaran masa lebih menarik untuk ditonton.

Jam ini diilhamkan oleh Mengenlehreuhr yang terdapat di Berlin, Jerman dan dapat dibaca dengan cara yang sama. Sama seperti yang asal, ia memberitahu masa dengan ladang berwarna yang diterangi.

Ia mempunyai 96 LED yang menerangi 52 'digit' kawasan. Tidak seperti yang asli, ia mempunyai reka bentuk bulat yang merangkumi cincin sekejap, dan bukannya susun atur bar mendatar. Jalur luar menunjukkan detik bersamaan dengan titik tengah, dua jalur seterusnya menunjukkan minit, dengan jalur dalaman akhir menunjukkan jam.

Sekiranya anda mempunyai sedikit bahan sekerap dan masa tambahan, mengapa tidak menggunakan masa ini untuk membuat sesuatu yang akan menunjukkannya!

Terdapat beberapa perubahan yang akan saya lakukan untuk projek ini sekiranya saya membuatnya lagi. Pertama, saya akan melukis bingkai dan papan LED putih dan bukannya hitam. Ini akan memantulkan lebih banyak cahaya melalui lensa besar di bahagian depan. Saya juga akan menunggu hingga akhir untuk memasukkan LED. Saya memerlukan papan selesai lebih awal sehingga dapat membantu saya menulis kod. Dengan itu, mari kita belajar bagaimana membacanya!

Imej
Imej

Langkah 1: Cara Membaca Jam

Jam dibaca dari bulatan dalam hingga luar. Lingkaran dalam empat medan menunjukkan lima jam penuh masing-masing, di samping cincin kedua, juga empat bidang, yang menunjukkan satu jam penuh setiap satu, menunjukkan nilai jam dalam format 24 jam. Lingkaran ketiga terdiri daripada sebelas bidang, yang masing-masing menunjukkan lima minit penuh, cincin berikutnya mempunyai empat bidang lagi, masing-masing menandakan satu minit penuh. Akhirnya cincin luar 29 medan menunjukkan detik genap dengan cahaya di tengah berkelip untuk menunjukkan detik ganjil (ketika menyala) atau bernombor genap (ketika tidak menyala).

Imej
Imej

Contohnya, gambar di atas mempunyai 1 digit lima jam, 3 digit satu jam, 8 digit lima minit, 4 digit satu minit, dan 23 dari dua digit kedua dan digit kedua tengah menyala.

1x5 + 3x1: 8x5 + 4x1: 23x2 + 1x1 = 8:44:47 = 8:44:47 AM

Imej
Imej

Masa yang ditunjukkan di atas adalah: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 3:17:11 PM

Imej
Imej

Masa yang ditunjukkan di atas adalah: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 5:18:33 PM

Langkah 2: Alat dan Bahan

Alat dan Bahan
Alat dan Bahan
Alat dan Bahan
Alat dan Bahan
Alat dan Bahan
Alat dan Bahan

Bahan Elektronik:

  • Arduino Nano
  • Jam Masa Sebenar
  • LED yang boleh dialamatkan
  • Palam Kuasa
  • Kabel kuasa
  • Palam Kuasa USB
  • Perintang Bergantung Cahaya dan perintang seimbang (jika anda mahu redup pada waktu malam)
  • Kawat

Bahan Kerja Kayu:

  • 3/4 in. Papan lapis
  • Papan lapis nipis
  • Kayu sekerap (saya menggunakan 2x4s tetapi kayu keras juga berfungsi)
  • Cat
  • Lembaran akrilik 30 x 36 in. (Terdapat di kedai pembaikan rumah tempatan)
  • Window Tint (cuba cari sumber secara tempatan. Sekiranya tidak ada, anda boleh menemui helaian yang cukup besar di sini)
  • Cecair Aplikasi Window Tint (Saya menggunakan air yang dicampurkan dengan syampu bayi dalam botol semburan)
  • Windex
  • Kertas daging
  • Skru
  • Pelekat Penyembur
  • Lem
  • Gam pelekat

Alat:

  • Pembaris
  • Pisau Xacto
  • Pita
  • Pita Dua Sisi
  • Kompas
  • Jig Pemotongan Bulatan
  • Jigsaw
  • Gergaji puting
  • Spindle Sander
  • Palm Sander
  • Disc Sander
  • Jadual Penghala
  • Aduh
  • Gerudi dan Gerudi Bit / Pemacu
  • Pengapit
  • Besi pematerian
  • Pateri
  • Pelucut Kawat

Langkah 3: Himpunkan Templat

Himpunkan Templat
Himpunkan Templat
Himpunkan Templat
Himpunkan Templat

Untuk templat besar, cetaklah menggunakan tetapan poster di Adobe Reader. Potong margin untuk setiap kertas dan pita bersama. Garis menegak, mendatar, dan pepenjuru akan membantu menyusun templat. Semua halaman mempunyai bilangan yang kecil untuk membantu menyusunnya teratur jika tidak teratur.

Semua templat dan fail yang diperlukan terdapat di Langkah 26.

Langkah 4: Bulatan Potong Kasar

Bulatan Potong Kasar
Bulatan Potong Kasar
Bulatan Potong Kasar
Bulatan Potong Kasar

Letakkan dua templat pada lembaran papan lapis 3/4 inci, lukis bulatan yang sedikit lebih besar daripada yang diperlukan dengan kompas. Dengan menggunakan jigsaw, potong bentuk kasar.

Langkah 5: Potong mengikut Saiz

Potong mengikut saiz
Potong mengikut saiz
Potong mengikut saiz
Potong mengikut saiz

Menggunakan jig pemotong bulatan di bandsaw, potong bulatan hingga ukuran akhir.

Langkah 6: Terapkan Templat

Terapkan Templat
Terapkan Templat
Terapkan Templat
Terapkan Templat
Terapkan Templat
Terapkan Templat

Dengan menggunakan pelekat semburan, sapukan setiap templat pada bulatan. Masukkan paku di tengah templat untuk memusatkannya pada bulatan.

Langkah 7: Potong Templat

Potong Templat
Potong Templat
Potong Templat
Potong Templat
Potong Templat
Potong Templat

Dengan menggunakan jigsaw, potong setiap tetingkap templat. Sekiranya anda mempunyai akses ke CNC, langkah ini akan lebih mudah! Saya menggerudi lubang di setiap tetingkap untuk membantu proses ini. Semasa anda mula memotong, templat mungkin akan mulai hilang. Sekiranya ini berlaku, anda boleh menyimpannya dengan pita kecil.

Langkah 8: Pengamplasan

Pengamplasan
Pengamplasan
Pengamplasan
Pengamplasan
Pengamplasan
Pengamplasan

Menggunakan kertas pasir yang dilekatkan pada tongkat, spindle sander, dan palm sander, pasir dan ratakan potongan kasar yang ditinggalkan oleh jigsaw.

Langkah 9: Tahan Bor untuk LED

Drill Hold untuk LED
Drill Hold untuk LED
Drill Hold untuk LED
Drill Hold untuk LED
Drill Hold untuk LED
Drill Hold untuk LED
Drill Hold untuk LED
Drill Hold untuk LED

Tandakan bahagian tengah setiap lubang dengan lubang awl dan gerudi untuk LED. Saya menggunakan panduan untuk membantu menjaga gerudi tegak lurus ke benda kerja saya dan papan belakang agar tidak meletupkan kayu di bahagian belakang.

Langkah 10: Gabungkan Papan

Gabungkan Papan
Gabungkan Papan
Gabungkan Papan
Gabungkan Papan
Gabungkan Papan
Gabungkan Papan

Tukar papan depan dan belakang dan jejak bahagian bingkai di bahagian belakang papan LED. Gerakkan bingkai kembali ke bahagian depan papan LED dan gerudi lubang dan pasangkan sekepingnya.

Lihat nota gambar untuk maklumat lebih lanjut.

Langkah 11: Masukkan LED

Masukkan LED
Masukkan LED
Masukkan LED
Masukkan LED

Tolak LED melalui bahagian belakang papan LED. Lubang harus cukup jarak sehingga anda tidak perlu memotong wayar kecuali bergerak dari satu bulatan ke lingkaran yang lain.

Dari belakang, LED bermula di tengah dan kemudian berlari berlawanan arah jam kemudian ke gelang seterusnya.

Langkah 12: Lampirkan Segmen 1

Lampirkan Segmen 1
Lampirkan Segmen 1
Lampirkan Segmen 1
Lampirkan Segmen 1
Lampirkan Segmen 1
Lampirkan Segmen 1

Potong 9 segmen dari templat "Segmen 1" yang dilampirkan pada papan lapis 3/4 inci (terdapat pada langkah 26). Pasang ke papan LED dengan gam dan pengapit. Sekiranya anda tidak sabar, anda juga boleh menggunakan kuku untuk mengetatkannya di tempatnya.

Setelah kering, gosokkan tepinya dengan sander cakera.

Langkah 13: Cat

Cat
Cat
Cat
Cat
Cat
Cat
Cat
Cat

Semburkan cat pada papan LED dan bingkai. Sekiranya saya membuat ini lagi, saya akan memilih untuk menggunakan cat putih dan bukannya hitam kerana akan lebih mencerminkan lensa.

Langkah 14: Segmen 2

Segmen 2
Segmen 2
Segmen 2
Segmen 2
Segmen 2
Segmen 2

Potong 9 segmen dari templat "Segmen 2" yang dilekatkan dari kayu setebal 2 3/8 inci (terdapat pada langkah 26). Saya menggunakan sekerap 2x4 dari sekitar kedai. Keringkan segmen dan pastikan ia sesuai dengan penjepit tali. Sekiranya semuanya sudah selesai, tutup bahagian luar dengan pita pelukis agar lem tidak melekat dan biarkan kering sekurang-kurangnya satu jam sebelum beralih ke langkah seterusnya.

Langkah 15: Segmen 3

Segmen 3
Segmen 3
Segmen 3
Segmen 3
Segmen 3
Segmen 3

Potong 9 segmen dari templat "Segmen 3" yang dilekatkan dari kayu skrap tebal 3/8 in. (Terdapat pada langkah 26). Lekatkannya sehingga jahitan dari Segmen 2 berada di tengah-tengah setiap Segmen 3. Ini akan menguatkan gelang.

Langkah 16: Cincin dan Cat yang licin

Cincin dan Cat yang licin
Cincin dan Cat yang licin
Cincin dan Cat yang licin
Cincin dan Cat yang licin

Saya membuat blok pengamplasan khas dari potongan cincin besar. Pasang bahagian dalam dan luar gelang dan isi celah-celah yang mungkin muncul semasa proses pelekat.

Setelah sebati, sapukan beberapa lapisan cat hitam dan lapisan jernih.

Langkah 17: Potong Akrilik

Potong Akrilik
Potong Akrilik
Potong Akrilik
Potong Akrilik
Potong Akrilik
Potong Akrilik
Potong Akrilik
Potong Akrilik

Potong akrilik menjadi segi empat sama berukuran 30 x 30 inci dan tandakan pusatnya. Pasangkan akrilik dengan pita dua sisi. Dengan menggunakan bit penghala flush trim, keluarkan lebihan akrilik

Langkah 18: Sapukan Tingkap Tetingkap

Sapukan Tingkap Tetingkap
Sapukan Tingkap Tetingkap
Sapukan Tingkap Tetingkap
Sapukan Tingkap Tetingkap
Sapukan Tingkap Tetingkap
Sapukan Tingkap Tetingkap

Dalam persekitaran bebas habuk, keluarkan filem pelindung dari akrilik. Sapukan semburan dan lepaskan punggung dari warna tingkap. Sapukan warna tingkap yang melekit ke bawah. Dengan menggunakan pemeras atau kad kredit, peras semua cecair dari bawah warna tingkap. Setelah semua gelembung dan keriput dikeluarkan, potong lebih banyak warna tingkap menggunakan pisau tajam.

Langkah 19: Lampirkan Defuser

Pasang Defuser
Pasang Defuser
Pasang Defuser
Pasang Defuser

Saya menggunakan sebilangan besar kertas daging untuk bertindak sebagai penyekat. Letakkan kertas di permukaan rata. Tutup muka bingkai dengan gam dari tongkat gam. Sebelum lem kering, letakkan bahagian depan jam menghadap ke bawah di atas kertas dan potong lebihan kasar. Setelah kering, gunakan pisau tajam untuk memangkas siram.

Langkah 20: Sapukan Penebat

Sapukan Penebat
Sapukan Penebat

Saya menggunakan pita elektrik untuk memastikan kuasa dan talian data terpisah.

Langkah 21: Berkumpul

Berkumpul
Berkumpul
Berkumpul
Berkumpul
Berkumpul
Berkumpul

Tanggalkan lapisan pelindung lain dari akrilik. Letakkan akrilik di dalam gelang dengan warna tingkap ke atas. Luncurkan baki jam ke gelang. Gunakan penjepit untuk memberi tekanan ringan semasa lubang dibor melalui cincin dan masuk ke papan LED. Ini kira-kira 1 1/8 inci dari belakang. Berhati-hatilah untuk tidak menyalakan LED. Pasangkan skru kepala kekuda ke dalam lubang. Ulangi sebanyak lapan skru di sekitar perimeter jam.

Langkah 22: Lampirkan Mata Anchor

Lampirkan Mata Anchor
Lampirkan Mata Anchor

Lekatkan gam menunjuk ke bahagian belakang jam agar penutup belakang dipasang. Panjangnya 3/4 inci dan panjang kira-kira 2 inci.

Langkah 23: Lubang Sensor Kuasa Bor dan LDR

Lubang Sensor Kuasa Bor dan LDR
Lubang Sensor Kuasa Bor dan LDR

Bor lubang kuasa melalui bahagian bawah jam untuk plag kuasa dan lubang di bahagian atas untuk sensor perintang bergantung cahaya (LDR).

Langkah 24: Pasang Pemegang Elektronik

Pasang Pemegang Elektronik
Pasang Pemegang Elektronik
Pasang Pemegang Elektronik
Pasang Pemegang Elektronik

Pasang pemegang bercetak 3D untuk RTC dan Arduino Nano. Sambungkan semua elektronik seperti yang ditunjukkan dalam skema.

Langkah 25: Penutup Belakang

Penutup belakang
Penutup belakang
Penutup belakang
Penutup belakang
Penutup belakang
Penutup belakang
Penutup belakang
Penutup belakang

Potong penutup belakang dari papan lapis nipis yang lebih kecil daripada bahagian luar jam. Lubang lubang ke titik sauh. Cari bahagian tengah belakang dan ukuran 8 inci ke arah mana-mana untuk memotong lubang kunci (standard 16 di pusat untuk kancing di AS). Saya menggerudi lubang utama yang hanya lebih besar daripada kepala skru yang akan saya gunakan dan meletakkan lubang yang lebih besar dalam satu arah. Warnakan hitam dan pasangkan penutup di tempatnya.

Langkah 26: Kod dan Fail

Sekali lagi, saya agak baru menggunakan banyak perpustakaan Arduino yang digunakan di sini, jadi saya pasti ada cara yang lebih baik untuk menggunakannya.

Saya menulis kod untuk diperbaharui dengan mudah berdasarkan berapa banyak LED yang anda gunakan jika projek itu ditingkatkan atau turun. Yang perlu anda lakukan ialah mengemas kini kedudukan permulaan dan akhir LED serta berapa banyak LED yang menjadi sebahagian daripada setiap digit.

Saya telah menambahkan beberapa animasi yang dimainkan pada permulaan dan juga jam. Mereka adalah sudo random berdasarkan penjana nombor rawak yang ada di dalamnya.

Anda boleh mengatur jam untuk memutar warna atau tetap statis pada satu. Anda juga boleh menonjolkan digit penunjuk untuk membantu membaca masa seperti yang ditunjukkan dalam pendahuluan.

Jangan ragu untuk mengedit dan menukar kod yang anda mahukan.

#sertakan "RTClib.h"

#include #define NUM_LEDS 96 # tentukan DATA_PIN 3 # tentukan LDR A0 RTC_DS1307 rtc; boolean timeChange = salah; boolean printTime = false; // Tetapkan menjadi benar jika anda ingin melihat output di konsol. Berguna untuk penyahpepijatan. boolean redDown = benar; boolean greenDown = palsu; boolean blueDown = palsu; kitaran boolean = salah; // Tetapkan benar jika anda mahu warna jam mengitar sorotan boolean = true; // Tetapkan benar untuk menyerlahkan 'digit terakhir'. // Lokasi permulaan dan akhir setiap kumpulan waktu tetap SECOND_1_LOCATION = 0; const int HOUR_2_START_LOCATION = 1; const int HOUR_2_END_LOCATION = 8; const int HOUR_1_START_LOCATION = 9; const int HOUR_1_END_LOCATION = 20; const int MINUTE_2_START_LOCATION = 21; const int MINUTE_2_END_LOCATION = 42; const int MINUTE_1_START_LOCATION = 43; const int MINUTE_1_END_LOCATION = 66; const int SECOND_2_START_LOCATION = 67; const int SECOND_2_END_LOCATION = 95; const int LEDS_PER_HOUR_1 = 3; const int LEDS_PER_HOUR_2 = 2; const int LEDS_PER_MINUTE_1 = 6; const int LEDS_PER_MINUTE_2 = 2; // Pengganda digunakan untuk membahagi masa kon MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Ubah ini untuk mempercepat atau melambatkan animasi permulaan tetap int CYCLE_SPEED = 1; // Tukar kadar di sini untuk kitaran perubahan warna (mesti melebihi 1) // Menyatakan pemboleh ubah int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int jam1 = 0; int jam2 = 0; int minit1 = 0; int minit2 = 0; int second1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t terang = 255; int numberOfAnimations = 5; rawak int = 0; // Tetapkan Warna uint8_t merah = 0; uint8_t hijau = 0; uint8_t biru = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // Tentukan susunan LED CRGB led [NUM_LEDS]; persediaan tidak sah () {Serial.begin (19200); FastLED.addLeds (led, NUM_LEDS); LEDS.setBrightness (terang); FastLED.clear (); rtc.begin (); // Garis ketidaksesuaian di bawah untuk menetapkan masa. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Permulaan animasi bernyawa (rawak); } gelung kosong () {// Dapatkan waktu DateTime sekarang = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = sekarang.second (); timeChange = salah; // Gunakan ini untuk menetapkan waktu secara manual tanpa RTC. Berguna untuk penyahpepijatan // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // Tetapkan semula semua bit ke sifar untuk (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: Hitam; } // Tetapkan Jam // Tetapkan jam 1 jam1 = (currentHour% MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Ini akan mengira jumlah LED unit masa untuk menyala (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {untuk (int i = (HOUR_1_START_LOCATION + jam1 - 1); i> = (HOUR_1_START_LOCATION + hour1 - LEDS_PER_HOUR_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Tetapkan jam 2 jam2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Ini akan mengira jumlah LED unit masa untuk menyala (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {untuk (int i = (HOUR_2_START_LOCATION + jam2 - 1); i> = (HOUR_2_START_LOCATION + hour2 - LEDS_PER_HOUR_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Tetapkan Minit // Tetapkan minit 1 minit1 = (currentMinute% MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Ini akan mengira jumlah LED unit masa untuk menyala (int i = MINUTE_1_START_LOCATION; i 0) // && minit1 <24) {untuk (int i = (MINUTE_1_START_LOCATION + minit1 - 1); i> = (MINUTE_1_START_LOCATION + minit1 - LEDS_PER_MINUTE_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Tetapkan minit 2 minit2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // Ini akan mengira jumlah LED unit masa untuk menyala (int i = MINUTE_2_START_LOCATION; i 0) // && minit2 <22) {untuk (int i = (MINUTE_2_START_LOCATION + minit2 - 1); i> = (MINUTE_2_START_LOCATION + minit2 - LEDS_PER_MINUTE_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // Tetapkan Kedua jika (currentSecond! = LastSecond) {timeChange = true; } // Tetapkan detik 1 saat1 = currentSecond% MULTIPLIER_TWO; if (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (merah, hijau, biru); } // Tetapkan detik 2 saat2 = currentSecond / MULTIPLIER_TWO; untuk (int i = SECOND_2_START_LOCATION; i 0) // && second2 <29) {untuk (int i = (SECOND_2_START_LOCATION + second2 - 1); i> = (SECOND_2_START_LOCATION + second2 - 1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} lastSecond = currentSecond; // Hitung kitaran program dan panggil fungsi setColor untuk mengubah warna LED yang pernah CYCLE_SPEED kitaran. sekiranya (cycleCount terang) // {// fadeValue = terang; //} // lain jika (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // Cetak masa semasa ke konsol jika (timeChange == true && printTime == true) {printToConsole (); }} // Fungsi animasi menambah lebih banyak animasi di sini kerana anda mahu membatalkan animasi (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (merah, hijau, biru); FastLED.show (); kelewatan (START_UP_DELAY); } untuk (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Hitam; FastLED.show (); kelewatan (START_UP_DELAY); }} lain jika (pilih == 1) {untuk (int i = 0; i <250; i ++) {int light = rawak (95); leds [cahaya] = CRGB (merah, hijau, biru); FastLED.show (); }} lain jika (pilih == 2) {leds [0] = CRGB (merah, hijau, biru); untuk (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION + i] = CRGB (merah, hijau, biru); jika (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_START_LOCATION + i] = CRGB (merah, hijau, biru); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_START_LOCATION + i] = CRGB (merah, hijau, biru); } jika (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_START_LOCATION + i] = CRGB (merah, hijau, biru); } jika (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_START_LOCATION + i] = CRGB (merah, hijau, biru); } kelewatan (34); FastLED.show (); }} lain jika (pilih == 3) {leds [0] = CRGB (merah, hijau, biru); untuk (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_END_LOCATION - i] = CRGB (merah, hijau, biru); jika (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_END_LOCATION - i] = CRGB (merah, hijau, biru); } jika (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_END_LOCATION - i] = CRGB (merah, hijau, biru); } jika (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_END_LOCATION - i] = CRGB (merah, hijau, biru); } jika (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_END_LOCATION - i] = CRGB (merah, hijau,biru); } kelewatan (34); FastLED.show (); }} lain jika (pilih == 4) {untuk (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Hitam; } FastLED.show (); kelewatan (200); untuk (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (merah, hijau, biru); } FastLED.show (); kelewatan (200); untuk (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Hitam; } FastLED.show (); kelewatan (200); untuk (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (merah, hijau, biru); } FastLED.show (); kelewatan (200); untuk (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: Hitam; } FastLED.show (); kelewatan (200); }} // Fungsi kitaran warna batal setColor (boolean cycleColors) {if (cycleColors == true) {if (redDown == true && greenDown == false) {merah ++; hijau--; jika (hijau <= 0) {merah = 255; redDown = palsu; greenDown = benar; }} lain jika (greenDown == true && blueDown == false) {green ++; biru--; jika (biru <= 0) {hijau = 255; greenDown = palsu; blueDown = benar; }} lain jika (blueDown == true && redDown == false) {blue ++; merah--; jika (merah <= 0) {biru = 255; blueDown = palsu; redDown = benar; }}} lain {merah = 0; hijau = 0; biru = 255; }} // Fungsi Print to Serial Monitor batal printToConsole () {Serial.print ("Masa Semasa:"); Serial.print (currentHour); Cetakan bersiri (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); Serial.println (""); untuk (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (leds ); jika (i% 2 == 0) {Serial.print (""); }} Serial.println (""); untuk (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (leds ); jika (((i - HOUR_1_START_LOCATION + 1)% 3) == 0) {Serial.print (""); }} Serial.println (""); untuk (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (leds ); jika (((i - MINUTE_2_START_LOCATION) + 1)% 2 == 0) {Serial.print (""); }} Serial.println (""); untuk (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (leds ); jika (((i - MINUTE_1_START_LOCATION) + 1)% 6 == 0) {Serial.print (""); }} Serial.println (""); untuk (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (leds ); Cetakan bersiri (""); } Serial.println (""); Serial.println (leds [SECOND_1_LOCATION]); Bersiri.println (); untuk (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Bersiri.println (); Bersiri.println (); }

Langkah 27: Nikmati

Imej
Imej

Kesimpulannya, jam ini sangat bagus untuk ditonton dan setelah anda mengetahui, ia agak mudah dibaca. Sekiranya anda membuat projek jam anda sendiri, beritahu saya!

Disyorkan: