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

Jam Berlin

Komponen dan persediaan

Arduino UNO
× 1
Maxim Integrated max7219
Hanya IC yang digunakan pada led-matrix breakout...
× 1
Jam Waktu Nyata (RTC)
× 1
LED 5 mm:Kuning
× 13
LED 5 mm:Merah
× 11
Resistor 10k ohm
× 1

Tentang proyek ini

Pertama-tama...

Ini adalah salinan/tempel dari tutorial yang saya tulis di situs web Instructables. Saya masih perlu mencari tahu bagaimana saya berpindah dari satu situs ke situs lainnya. Jadi mungkin ini tidak semulus yang seharusnya... Tapi, mulailah dengan jam yang tidak terlalu harian.

Intro:Jam Berlin

Jam Berlin, BerlinUhr atau Mengenlehreuhr, mungkin adalah jam digital pertama.

Sudah ada sejak tahun 1975...

Banyak info yang bisa Anda temukan di sini:https://en.wikipedia.org/wiki/Mengenlehreuhr

Bagaimana cara pembuatannya, bagaimana cara mengetahui waktu?

Singkatnya, ada empat baris lampu. Baris atas memberikan jam x 5, berikutnya "satu jam" dari 1 hingga 4. Baris ketiga memberi kita "menit x5", baris bawah menit.

Pada gambar yang ditampilkan, (sebenarnya satu lampu rusak...) waktunya adalah:2x5 jam ditambah 3 jam + 6x5 menit + 2 menit.

Jadi 13:32. Oke, saya kira kita orang Eropa lebih terbiasa memberi tahu waktu dalam 24 jam. format, begitu juga jam.

Lampu terbesar di atas berkedip setiap detik.

Saya pikir jam ini mungkin menyenangkan untuk dibuat di Arduino.

Langkah 1:Beberapa Elektronik

Apa yang kita butuhkan untuk proyek ini?

Pertama-tama, (tentu saja), Arduino kami.

Saya menggunakan salah satu Uno saya yang tergeletak di mana-mana di dekat komputer saya.

Karena kita berbicara tentang jam, kita mungkin menggunakan RTC. Saya menggunakan yang murah dengan DS 1307.

Untuk "tampilan", kita membutuhkan beberapa LED. Saya menggunakan 13 yang kuning, 5mm, dan 11 Merah. (Saya sebenarnya menggunakan RGB untuk warna merah, karena saya tidak punya cukup warna merah di sekitar...)

Papan tempat memotong roti, papan cetak dengan hanya lubang dan "pulau solder". Saya baru saja menggunakan bagian dari apa yang disebut "format kartu Euro".

2 resistor yang saya gunakan. Salah satu dari 220Ohm (LED detik), dan lainnya 68K.

Dan satu IC tambahan:MAX7219.

MAX adalah driver tampilan LED 8 digit. Banyak dari kita mengetahuinya karena digunakan dalam matriks LED juga.

Untuk memudahkannya, saya juga menggunakan perpustakaan Arduino "LedControl". Jika Anda masih belum memilikinya, Anda dapat mengunduhnya dari sini:

https://github.com/wayoda/LedControl

Langkah 2:Menyiapkannya.

Anda dapat menemukan lembar data yang sangat bagus untuk MAX 7219 di tempat ini:

https://www.sparkfun.com/datasheets/Components/Gen...

COM-09622-MAX7219-MAX7221.pdf

Saya tidak akan membahas lembar data itu lebih jauh, tetapi ada baiknya menggunakannya, ini semacam IC yang "menyenangkan".

Lompatan ke Arduino.

Pada skema itu Anda melihat konstruksi yang sangat sederhana:Saya menggunakan SDA dan SCL untuk menggunakan jam (breakout A 1307), dan empat output lagi:DataIn, Clock and Chipselect yang menuju ke MAX 7219, dan OUT 13 yang kami gunakan untuk berkedip LED "detik".

Banyak hal yang terjadi di Arduino:ia membaca jam, mengubahnya menjadi berbagai jenis output, dan kemudian mengirimkan data ke 7219.

Ketika Anda membaca kodenya, Anda akan melihat saya hanya menggunakan bahasa saya sendiri, Belanda, untuk itu. Misalnya:int "vijfuren" yang saya gunakan adalah variabel yang menghitung "Lima jam", sama untuk "vijfminuten" dan "vijfminuten1":variabel tersebut memberikan keluaran "Lima menit".

Dalam sketsa saya juga menggunakan tahun, bulan, hari bulan dan hari kerja, dalam sketsa ini saya tidak membutuhkannya, tapi mungkin nanti, saya bisa menambahkan kalender ke dalamnya.

Dalam tata letak Fritzing(c), IC tidak terhubung ke kabel:Saya melakukannya untuk kemudahan, karena memiliki banyak keluaran.

Mari kita simpulkan:

pin 4 dan 9 terhubung ke GND,

19 adalah VCC

18, ISet, terhubung ke VCC dengan resistor:yang satu ini membatasi arus yang mengalir ke output. Pertama, saya mencoba dengan resistor 20K, tetapi setelah 10 menit atau lebih, semuanya menjadi gelap... Sekarang, dengan resistor 68K, jam masih berjalan (setelah lebih dari 24 jam). Tapi ada perbedaan antara kecerahan merah dan kuning, saya pikir itu karena fakta bahwa yang merah sebenarnya adalah RGB Led. Saya harus menyelesaikannya...

pin 1 adalah DataIn, yang ini berasal dari Arduino, pin 12

pin 12 adalah Load, berasal dari pin Arduino 10

pin 13 adalah Clk, berasal dari Arduino 11.

Sejauh ini untuk masukan dari 7219.

Perhatikan outputnya:

7219 memiliki kemungkinan untuk memberi daya pada 8 layar 7 detik.

Keluaran ini, DIG 0 hingga DIG 4 digunakan di sini untuk menggerakkan "garis" LED:karena jalur "lima menit" memiliki 11 LED di dalamnya, saya menggunakan DIG 1 dan DIG 2 untuk menggerakkannya.

Keluaran lainnya:Segmen A hingga G dan DP (tampilan 7Seg normal).

Dalam kasus ini (dengan LedControl), saya mengirim Kata Biner kepada mereka (byteform, seperti B01010100).

Dan di sana saya membuat kesalahan. Beberapa logika mengatakan kepada saya bahwa SEG A akan menjadi MSB, B bit paling signifikan kedua, dan seterusnya, hingga DP, yang saya pikir akan menjadi bit paling tidak signifikan (LSB). Salah... Karena satu dan lain hal, pembuat IC mengira DP adalah MSB. Tidak dapat melihat logika itu...

Itu membuat saya mengubah pengkodean saya, karena saya sudah menyolder LED...

Langkah 3:LED

Pada skema ini, Anda melihat bagaimana LED terhubung bersama. Saya hanya menggambar tiga yang pertama, yang lainnya dengan cara yang sama.

LED detik terhubung langsung ke Pin 13.

Gambar menunjukkan "cara kerjanya". Sekarang jam 17:47...

Oke, baris paling bawah tidak begitu jelas, ada di papan tempat memotong roti. Saya harap Anda percaya bahwa itu benar-benar berhasil. (ya!).

Oh, satu langkah lagi yang akan datang...

Langkah 4:Langkah "terakhir", Kode.

#include  #include const int DS1307 =0x68;// A5 =SCL, A4 =SDA const char* hari[] ={"Sunday", "Monday" , "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};konst char* bulan[] ={"Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"};byte detik =0; byte menit =0; byte jam =0; byte hari kerja =0; byte hari bulan =0; byte bulan =0; byte tahun =0; byte menit terakhir =0; byte lastSecond =0; int LED =13; byte nol =B0000000; byte een =B01000000; byte twee =B01100000; byte kering =B01110000; byte vier =B01111000; byte vijf =B01111100; byte zes =B01111110; byte zeven =B01111111; byte acht =B11111111; byte negen =B01000000; byte tien =B01100000;byte elf =B01110000; Int a=0; int b =0; intc =0; int vijfMinTwee=0;int uitgang =RENDAH; /*pin 12 terhubung ke DataIn pin 11 terhubung ke CLK pin 10 terhubung ke LOAD */LedControl lc=LedControl(12, 11, 10, 1);unsigned long delaytime=100; void setup() { Wire.begin(); Serial.begin(9600);pinMode (Led, OUTPUT);lc.shutdown(0, false); /* Atur kecerahan ke nilai sedang */ lc.setIntensity(0, 8); /* dan hapus tampilan */ lc.clearDisplay(0);}void loop() { readTime(); digitalWrite(Led, uitgang);if (kedua !=lastSecond){ if (uitgang ==RENDAH) uitgang =TINGGI; lain uitgang =RENDAH; digitalWrite (Led, uitgang); lastSecond =kedua; } if (menit !=menit terakhir) { printTime(); lastMinute =menit;}}byte bcdToDec(byte val) {return ((val/16*10) + (val%16));}void printTime() { char buffer[3]; lama menit =menit; panjang uren =jam;int vijfmin =menit/5; int eenminuut =menit -(vijfmin * 5);int vijfuren =ur/5; int eenuren =uren - (vijfuren *5); a =vijfmin; digital(); vijfmin =b; vijfMinTwee =c;a =eenminuut;digitaal(); eenminuut =b; a=vijfuren; digitaal();vijfuren =b;a =eenuren; digitaal();eenuren =b; lc.setRow(0, 4, vijfuren);lc.setRow(0, 3, eenuren); lc.setRow(0, 1, vijfmin);lc.setRow(0, 2, vijfMinTwee); lc.setRow(0, 0, eenminuut);}void readTime() { Wire.beginTransmission(DS1307); Kawat.tulis(byte(0)); Wire.endTransmission();Wire.requestFrom(DS1307, 7); detik =bcdToDec(Wire.read());menit =bcdToDec(Wire.read());jam =bcdToDec(Wire.read()); hari kerja =bcdToDec(Wire.read()); hari bulan =bcdToDec(Wire.read());bulan =bcdToDec(Wire.read()); tahun =bcdToDec(Wire.read()); }void digitaal(){switch (a){ case 0:b=nul; c =nol; merusak; kasus 1:b =een; c =nol; merusak; kasus 2:b =twee; c =nol; merusak; kasus 3:b =kering; c =nol; merusak; kasus 4:b =vier; c =nol; break;kasus 5:b =vijf; c =nol; merusak; kasus 6:b =zes; c =nol; merusak; kasus 7:b =zeven; c =nol; merusak; kasus 8:b =acht; c =nol; merusak; kasus 9:b =acht; c =negen; merusak; kasus 10:b=acht; c =ikat; merusak; kasus 11:b=acht; c =peri; merusak; } } 

Cukup mudah, saya percaya.

Manfaat lain dari sketsa ini:sekarang Anda belajar cara menghitung dalam bahasa Belanda... Dari 0 hingga 11...;-)

Semoga Anda menikmati ini!

Marc

Kode

Github
https://github.com/wayoda/LedControlhttps://github.com/wayoda/LedControl

Proses manufaktur

  1. Persamaan Konstanta Waktu
  2. Jam Kuku
  3. Jam pasir
  4. Tonton
  5. Python tidur()
  6. Rpibot – Tentang Belajar Robotika
  7. Arduino pov vision clock
  8. Generator Jam Verilog
  9. Python - Tanggal &Waktu
  10. Jam cermin tak terbatas