Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Jam Kata Italia

Komponen dan persediaan

Arduino Nano R3
× 1
strip NeoPixel
144
× 1
Adafruit LCD Standar - 16x2 Putih di Atas Biru
dengan modul I2C
× 1
Jam Waktu Nyata (RTC)
× 1
Sakelar Tombol Tekan SparkFun 12mm
× 4
Resistor 10k ohm
× 3
Resistor 475 ohm
× 1
1N4007 – Tegangan Tinggi, Dioda Nilai Arus Tinggi
× 3
Konverter DC DC Langkah Turun yang Dapat Disesuaikan
× 1
Bingkai dinding RIBBA (Ikea)
× 1
Sampul kotak Gewiss 150 x 110
× 1
strip aluminium 230 mm x 10 mm x 1 mm
× 1

Tentang proyek ini

Kecintaan saya pada jam tangan Arduino, membuat saya membuat "Word Clock", karena saya tinggal di Italia, saya berbicara dalam bahasa Italia. Untuk realisasi proyek, saya terinspirasi oleh tutorial "Word Clock Javelin", saya membuat beberapa perubahan kecil ... dan di sini untuk Anda "Word Clock of Italy"!

Selain "beri tahu jamnya" dalam bahasa Italia, saya ingin menambahkan hari ulang tahun keluarga saya (termasuk kucing). Untuk konstruksi "kerangka" saya menggunakan yang sudah dibuat oleh IKEA, dan perubahan internal saya menggunakan bahan yang saya miliki di rumah:

Untuk realisasinya di layar akan ditampilkan pola yang digambar dengan Inkscape.

Panel saya berukuran 12 x 12 huruf dengan tapak 200 mm. Karena saya tidak memiliki printer 3D, saya membuat kisi-kisi dengan strip aluminium, dan telah mengisolasi kontak LED dengan spons perekat, ini juga berfungsi untuk mengisolasi cahaya.

Sirkuit elektronik

Untuk menghemat waktu, saya menggunakan RTC .

Untuk dapat menyesuaikan waktu, saya menambahkan tombol (P1, P2, P3) dan layar 16 x 2. (Lihat juga proyek "Jam Mengatur Tanggal Waktu "). Seperti yang terlihat dari diagram pengkabelan, tombol terhubung ke Arduino melalui pull-down sirkuit.

Karena tampilan hanya berfungsi untuk mengatur waktu, saya mengganti jumper dengan tombol , dengan demikian, itu hanya menerangi penggunaannya. Dioda D1 berfungsi sebagai perlindungan polaritas terbalik.

Dioda D2 berfungsi untuk tidak memberi makan strip neopiksel, ketika, karena alasan apa pun, kita harus mengubah sketsa Arduino (terlalu banyak arus dapat merusaknya). Dioda D3 berfungsi untuk membawa tegangan sebesar 5 volt, tegangan sebesar Neopiksel.

Saya melampirkan diagram sirkuit, skema Fritzing, tata letak PCB.

Matriks

Untuk mewujudkan matriks saya menghubungkan berbagai strip seperti gambar. Zig-zag dari kiri atas ke bawah.

Perpustakaan Arduino

  • RTC
  • LiquidCrystal_I2C
  • Adafruit_NeoPixel

Penjelasan kode

Kode ini dibagi menjadi 5 bagian utama:

  • "DisplayDateTime":menampilkan tanggal dan waktu di layar lcd
  • "HourClock":menampilkan jam di panel
  • "MinuteClock":menampilkan menit di panel
  • "Auguri":Selamat ulang tahun
  • "Void paintWord (arrWord int [], uint32_t intColor)" adalah inti dari kode untuk mengaktifkan neopixel, "arrWord int []" adalah LED harus menyala, "uint32_t intColor" adalah warnanya

Untuk mendapatkan jam yang lebih akurat, saya menambahkan angka 1, 2, 3, 4 sesuai dengan menit progresif.

Contoh :“SONO LE ORE DIECI E VENTI 4” berarti 10:24 (10:20 + 00:04), “SONO LE DIECI MENO QUINDICI 2” berarti 09:47 (09:45 + 00:02)

Perakitan

  • Buka bingkai dan bersihkan kaca dengan baik
  • Memasukkan pencetakan dalam Asetat
  • Masukkan kertas cetak
  • Memasukkan kisi
  • Memasukkan panel dengan LED
  • Tempel sepotong kayu lapis, sedikit 'lebih besar dari kotak kontrol
  • Amankan dengan sekrup self-tapping kotak kontrol

Perhatikan baik-baik perataan kedua cetakan

Lokasi

Taruh di ruang tamu lalu dia terlihat bagus.

Kode

  • Jam Kata Italia
Jam Kata ItaliaArduino
/*:Proyek:WordClock:Penulis:Tiziano Bianchettin:Tanggal:25/09/2016:Revisi:1:Lisensi:Domain PublikTerima kasih kepada:http://www.instructables.com/id/Javelins-Word-Clock / http://arduinoenonsolo.blogspot.it/2012/12/orologio-con-arduino-e-il-ds1307.html http://www.mauroalfieri.it/ http://www.danielealberti.it/ http://www.maffucci.it/ Profesor laboratorium elektronik saya "Perito Carli" *///************libraries**************//# include #include #include #include //***********neopixel********* *******//#define PIN 9 // pin neopixel#define NUM_LEDS 144 // 12 x 12#define GIORNO 255 ​​// full on#define SERA 25 // sepersepuluh onAdafruit_NeoPixel strip =Adafruit_NeoPixel(NUM_LEDS, PIN , NEO_GRB + NEO_KHZ800); // 144 led, pin 9int intBrightness;//****************WARNA**********//uint32_t Merah =strip.Warna(255, 0, 0); uint32_t Hijau =strip.Warna( 0, 255, 0);uint32_t Biru =strip.Warna( 0, 0, 255);uint32_t Putih =strip.Warna( 255, 255, 255);uint32_t Kuning =strip.Warna( 255 , 255, 0);uint32_t Ungu =strip.Warna( 60, 0, 255);uint32_t Mati =strip.Warna( 0, 0, 0);LiquidCrystal_I2C lcd(0x27,16,2); // Menampilkan I2C 16 x 2RTC_DS1307 RTC;int P1=6; // Tombol SET MENU'int P2=7; // Tombol +int P3=8; // Tombol -int oraagg;int minagg;int annoagg;int meseagg;int dayagg;int menu =0;int ora;//*********Presentasi*********//int txtSONO[] ={1,2,3,4,6,7,9,10,11,-1};//*********Jam*********//int txtUNA[] ={20,21,22,-1};int txtDUE[] ={17,18,19,-1};int txtTRE[] ={57,58,59,-1};int txtQUATTRO[ ] ={96,97,98,99,100,101,102,-1};int txtCINQUE[] ={30,31,32,33,34,35,-1};int txtSEI[] ={103,104,105,-1};int txtSETTE[] ={48,49,50,51,52,-1};int txtOTTO[] ={72,73,74,75,-1};int txtNOVE[] ={60,61,62,63 ,-1};int txtDIECI[] ={12,13,14,15,16,-1};int txtUNDICI[] ={84,85,86,87,88,89,-1};int txtDODOCI[ ] ={90,91,92,93,94,95,-1};//*********Selamat ulang tahun*********//int txtAUGURI[] ={24, 25,26,27,28,29,-1};int txtSIMONE[] ={36,37,38,39,40,41,-1};int txtJACOPO[] ={42,43,44,45, 46,47,-1};int txtMINU[] ={53,54,55,56,-1};int txtTIZIANO[] ={65,66,67,68,69,70,71,-1}; int txtMARILENA[] ={76,77,78,79,80,81,82,83,-1};//*********Menit*********//int txtE [] ={107,-1};int txtMENO[] ={116.117.118.119,-1};int txtMUN O[] ={5,-1};int txtMDUE[] ={64,-1};int txtMTRE[] ={106,-1};int txtMQUATTRO[] ={125,-1};int txtMCINQUE[ ] ={132.133.134.135.136.137,-1};int txtMDIECI[] ={120.121.122.123.124,-1};int txtQUINDICI[] ={108.109.110.111.112.113.114,115,-1};int txtVENTI[] ={139,140,141,141,142,143, {126.127.128.129.130.131,-1};pengaturan batal(){ strip.begin(); strip.tampilkan(); lcd.mulai(); lcd.lampu latar(); lcd.clear(); pinMode(P1,INPUT); pinMode(P2,INPUT); pinMode(P3,INPUT); Serial.begin(9600); Kawat.mulai(); RTC.mulai(); if (!RTC.isrunning()) { Serial.println("RTC TIDAK berjalan!"); // Atur tanggal dan waktu pada waktu kompilasi RTC.adjust(DateTime(__DATE__, __TIME__)); } // RTC.adjust(DateTime(__DATE__, __TIME__)); //menghapus "//" untuk menyesuaikan waktu // Tampilan default menunjukkan tanggal dan waktu int menu=0;} void loop(){ // periksa apakah Anda menekan tombol SET dan meningkatkan indeks menu if(digitalRead( P1)) { menu=menu+1; }// di subrutin mana kita harus pergi? if (menu==0) { DisplayDateTime(); // void DisplayDateTime DateTime now =RTC.now(); if((now.hour()>=19) || (now.hour() <7 )){ // sesuaikan kecerahan siang - malam intBrightness =SERA; } else{ intBrightness =GIORNO; } strip.setBrightness(intBrightness); strip.tampilkan(); int waktuMin =sekarang.menit(); int modMin =waktuMin % 5; // https://www.arduino.cc/en/Reference/Modulo if ( modMin ==0){ // setiap menit LED berubah warna dan menyala angka yang sesuai paintWord(txtSONO, White); paintWord(txtMQUATTRO, OFF); } else if ( modMin ==1){ paintWord(txtSONO, Yellow); paintWord(txtMUNO, Merah); } else if ( modMin ==2){ paintWord(txtSONO, Green); paintWord(txtMUNO, Mati); paintWord(txtMDUE, Biru); } else if ( modMin ==3){ paintWord(txtSONO, Biru); paintWord(txtMDUE, Mati); paintWord(txtMTRE, Hijau); } else if ( modMin ==4){ paintWord(txtSONO, Red); paintWord(txtMTRE, Mati); paintWord(txtMQUATTRO, Kuning); } Jam Jam(); //kosongkan HourClock MinuteClock(); // void Jam Menit Auguri(); // batal Auguri strip.show(); } if (menu==1) { DisplaySetHour(); } if (menu==2) { DisplaySetMinute(); } if (menu==3) { DisplaySetYear(); } if (menu==4) { DisplaySetMonth(); } if (menu==5) { DisplaySetDay(); } if (menu==6) { StoreAgg(); penundaan (500); menu=0; } delay(100);}void showStrip() { #ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel strip.show(); #endif #ifndef ADAFRUIT_NEOPIXEL_H // FastLED FastLED.show(); #endif}void setPixel(int Pixel, byte red, byte green, byte blue) { #ifdef ADAFRUIT_NEOPIXEL_H // NeoPixel strip.setPixelColor(Pixel, strip.Color(merah, hijau, biru)); #endif #ifndef ADAFRUIT_NEOPIXEL_H // LED FastLED[Pixel].r =merah; leds[Pixel].g =hijau; leds[Pixel].b =biru; #endif}void setAll(byte merah, byte hijau, byte biru) { for(int i =0; i =40){ // dari 40 menit, tambahkan 1 ke "jam" ora =ora+1; } switch (ora ) { case 0:case 12:case 24:paintWord(txtUNDICI, Off); strip.tampilkan(); if ( modMin ==0){ paintWord(txtDODOCI, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtDODOCI, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtDODOCI, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtDODOCI, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtDODOCI, Red); strip.tampilkan(); } merusak; kasus 1:kasus 13:paintWord(txtDODOCI, Mati); strip.tampilkan(); if ( modMin ==0){ paintWord(txtUNA, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtUNA, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtUNA, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtUNA, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtUNA, Red); strip.tampilkan(); } merusak; kasus 2:kasus 14:paintWord(txtUNA, Mati); strip.tampilkan(); if ( modMin ==0){ paintWord(txtDUE, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtDUE, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtDUE, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtDUE, Blue); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtDUE, Red); strip.tampilkan(); }merusak; kasus 3:kasus 15:paintWord(txtDUE, Off); strip.tampilkan(); if ( modMin ==0){ paintWord(txtTRE, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtTRE, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtTRE, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtTRE, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtTRE, Red); strip.tampilkan(); } merusak; kasus 4:kasus 16:paintWord(txtTRE, Mati); strip.tampilkan(); if ( modMin ==0){ paintWord(txtQUATTRO, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtQUATTRO, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtQUATTRO, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtQUATTRO, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtQUATTRO, Red); strip.tampilkan(); } merusak; kasus 5:kasus 17:paintWord(txtQUATTRO, Mati); strip.tampilkan(); if ( modMin ==0){ paintWord(txtCINQUE, White); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtCINQUE, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtCINQUE, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtCINQUE, Blue); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtCINQUE, Red); strip.tampilkan(); } merusak; kasus 6:kasus 18:paintWord(txtCINQUE, Off); strip.tampilkan(); if ( modMin ==0){ paintWord(txtSEI, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtSEI, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtSEI, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtSEI, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtSEI, Red); strip.tampilkan(); } merusak; kasus 7:kasus 19:paintWord(txtSEI, Mati); strip.tampilkan(); if ( modMin ==0){ paintWord(txtSETTE, White); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtSETTE, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtSETTE, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtSETTE, Blue); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtSETTE, Red); strip.tampilkan(); } merusak; kasus 8:kasus 20:paintWord(txtSETTE, Off); strip.tampilkan(); if ( modMin ==0){ paintWord(txtOTTO, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtOTTO, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtOTTO, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtOTTO, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtOTTO, Red); strip.tampilkan(); } merusak; kasus 9:kasus 21:paintWord(txtOTTO, Mati); strip.tampilkan(); if ( modMin ==0){ paintWord(txtNOVE, White); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtNOVE, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtNOVE, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtNOVE, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtNOVE, Red); strip.tampilkan(); } merusak; kasus 10:kasus 22:paintWord(txtNOVE, Off); strip.tampilkan(); if ( modMin ==0){ paintWord(txtDIECI, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtDIECI, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtDIECI, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtDIECI, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtDIECI, Red); strip.tampilkan(); } merusak; kasus 11:kasus 23:paintWord(txtDIECI, Mati); strip.tampilkan(); if ( modMin ==0){ paintWord(txtUNDICI, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtUNDICI, Yellow); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtUNDICI, Green); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtUNDICI, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtUNDICI, Red); strip.tampilkan(); }merusak; }}void MinuteClock(){ DateTime now =RTC.now(); int waktuMin =sekarang.menit(); int modMin =waktuMin % 5; // https://www.arduino.cc/en/Reference/Modulo switch (now.minute()) { case 5:case 6:case 7:case 8:case 9:if ( modMin ==0){ paintWord (txtE, Putih); paintWord(txtMCINQUE, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtE, Yellow); paintWord(txtMCINQUE, Kuning); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtE, Green); paintWord(txtMCINQUE, Hijau); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtE, Biru); paintWord(txtMCINQUE, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtE, Red); paintWord(txtMCINQUE, Merah); strip.tampilkan(); }merusak; kasus 10:kasus 11:kasus 12:kasus 13:kasus 14:paintWord(txtMCINQUE, Off); strip.tampilkan(); if ( modMin ==0){ paintWord(txtE, Putih); paintWord(txtMDIECI, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtE, Yellow); paintWord(txtMDIECI, Kuning); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtE, Green); paintWord(txtMDIECI, Hijau); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtE, Biru); paintWord(txtMDIECI, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtE, Red); paintWord(txtMDIECI, Merah); strip.tampilkan(); } merusak; kasus 15:kasus 16:kasus 17:kasus 18:kasus 19:paintWord(txtMDIECI, Mati); strip.tampilkan(); if ( modMin ==0){ paintWord(txtE, Putih); paintWord(txtQUINDICI, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtE, Yellow); paintWord(txtQUINDICI, Kuning); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtE, Green); paintWord(txtQUINDICI, Hijau); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtE, Biru); paintWord(txtQUINDICI, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtE, Red); paintWord(txtQUINDICI, Merah); strip.tampilkan(); }merusak; kasus 20:kasus 21:kasus 22:kasus 23:kasus 24:paintWord(txtQUINDICI, Mati); strip.tampilkan(); if ( modMin ==0){ paintWord(txtE, Putih); paintWord(txtVENTI, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtE, Yellow); paintWord(txtVENTI, Kuning); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtE, Green); paintWord(txtVENTI, Hijau); strip.tampilkan(); } else if ( modMin ==3){ paintWord(txtE, Biru); paintWord(txtVENTI, Biru); strip.tampilkan(); } else if ( modMin ==4){ paintWord(txtE, Red); paintWord(txtVENTI, Merah); strip.tampilkan(); }merusak; kasus 25:kasus 26:kasus 27:kasus 28:kasus 29:if ( modMin ==0){ paintWord(txtE, White); paintWord(txtVENTI, Putih); paintWord(txtMCINQUE, Putih); strip.tampilkan(); } else if ( modMin ==1){ paintWord(txtE, Yellow); paintWord(txtVENTI, Kuning); paintWord(txtMCINQUE, Kuning); strip.tampilkan(); } else if ( modMin ==2){ paintWord(txtE, Green); paintWord(txtVENTI, Hijau); paintWord(txtMCINQUE, Green);...File ini telah terpotong, silakan unduh untuk melihat konten lengkapnya.
Jam Kata Italia

Suku cadang dan penutup khusus

wordklock_aWvuaZRw4N.svg

Skema

wordklock_JBoZPYrsYr.fzz

Proses manufaktur

  1. Alarm Tanaman Peringatan Haus
  2. Jam Kata Sederhana (Arduino)
  3. Word Clock dengan Resolusi Menit Waktu dalam Words
  4. Sigfox kWh Meter
  5. Pemantau Suhu Bluetooth
  6. Kunci yang Dikendalikan Gerakan
  7. IC Pendamping
  8. Adaptor MIDI USB
  9. Input Analog Terisolasi untuk Arduino
  10. Ukur waktu reaksi Anda