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

Jam Analog Panel Meter Arduino

Komponen dan persediaan

Arduino Nano R3
× 1
Maxim Integrated DS3231M - ±5ppm, I2C Real-Time Clock
× 1
ampmeter 1mA
× 3
Resistor 5kOhm
× 3
Resistor 10k ohm
× 2
Sakelar Tombol Tekan SparkFun 12mm
× 2

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Saya membangun jam gaya analog kayu yang tampak bagus ini dengan Arduino Nano dan amperemeter 1mA. Saya mendapat ide dari sini. Untuk menampilkan detik, bagian dari kode telah ditambahkan. Juga ditambahkan adalah bagian yang, saat berlari, melewati seluruh skala dari nol hingga maks. nilai untuk tujuan kalibrasi. Tergantung pada ampermeter yang kita gunakan, nilai resistor 5k bisa berbeda. Karena semua meter sedikit berbeda, nilai PWM perlu disesuaikan berdasarkan desain Anda. Anda harus mengubah beberapa nilai karena disetel untuk bekerja secara khusus dengan pengukur saya.

Kode

  • kode
kodeArduino
/* Pengukur Panel Analog - Mode Jam SAJA Tautan yang Dapat Diinstruksikan:http://www.instructables.com/id/Analog-VU-meter-and-Clock-Arduino-Powered/ Kredit:bildr - DS1307 kode RTC http://bildr.org/2011/03/ds1307-arduino/ _________ Pengkabelan berjalan sebagai berikut:- Kabel merah USB (5v) ke VCC - Kabel hitam USB ke GND - Tombol - Kiri/Bawah ke Digital 2 (ikuti tutorial arduino:http ://arduino.cc/en/uploads/Tutorial/button.png ) - Kanan/Atas Digital 3 - DS1307 RTC - SDA ke Analog 4 - SCL ke Analog 5 - Meter Analog Kiri ke Digital 5 (PWM) - Analog Kanan Meter ke Digital 6 (PWM)_-Detik Pengukur analog ke Digital 9_(PWM)_________ Catatan:Karena semua meter sedikit berbeda, nilai PWM perlu disesuaikan berdasarkan desain Anda. Jangan ragu untuk menggunakan kode saya, tetapi Anda harus mengubah beberapa nilai karena sudah diatur untuk bekerja secara khusus dengan pengukur saya. */#include "Wire.h"#define DS1307_ADDRESS 0x68byte nol =0x00; //solusi untuk masalah #527int downButton =2; // tombol tekan ke bawah untuk mengatur waktu (pin 2)int upButton =3; // tombol tekan ke atas untuk mengatur waktu (pin 3)int jam =0;int menit =0;int detik =0;int lastMinute =0;int lastSecond =0;int leftMeter =5; // meter kiri (jam) terpasang ke pin 5int rightMeter =6; // meter kanan (min) terpasang ke pin 6int secMeter=9; //detik meter (detik) terpasang ke pin 9void setup(){ Wire.begin(); Serial.begin(9600); //melihat waktu di monitor serial pinMode(leftMeter, OUTPUT); // Inisialisasi Output &Input pinMode(rightMeter, OUTPUT); pinMode(secMeter, OUTPUT); digitalWrite(Meter kiri, TINGGI); // Uji meter saat startup digitalWrite(rightMeter, HIGH); digitalWrite(detikMeter, TINGGI); digitalWrite(13, TINGGI); penundaan (1000); digitalWrite(Meter kiri, RENDAH); digitalWrite(rightMeter, RENDAH); digitalWrite(secMeter, RENDAH); digitalWrite(13, RENDAH); delay(1000);}void loop(){ printDate(); penundaan (75); // Mengubah waktu dengan tombol if (digitalRead(downButton) ==HIGH){ byte detik =detik; // Jangan bingung:detik tidak sama dengan detik byte menit =menit; // Jangan bingung:menit tidak sama dengan menit byte jam =jam; // Jangan bingung:hour tidak sama dengan hoursif (minutes> 0){ --minute; }lain{ menit =59; if (jam> 0){ -- jam; }else{ jam =23;}} Wire.beginTransmission(DS1307_ADDRESS); Kawat.tulis(nol); //hentikan Kawat Oscillator.tulis(decToBcd(kedua)); Wire.write(decToBcd(menit)); Wire.write(decToBcd(jam)); Kawat.tulis(nol); //mulai Wire.endTransmission();} if (digitalRead(upButton) ==HIGH){ byte second =0; byte menit =menit; // Jangan bingung:menit tidak sama dengan menit byte jam =jam; // Jangan bingung:hour tidak sama dengan hoursif (minutes <59){ ++minute; }lain{ menit =0; if (jam <23){ ++ jam; }else{ jam =0;}} Wire.beginTransmission(DS1307_ADDRESS); Kawat.tulis(nol); //hentikan Kawat Oscillator.tulis(decToBcd(kedua)); Wire.write(decToBcd(menit)); Wire.write(decToBcd(jam)); Kawat.tulis(nol); //start Wire.endTransmission();} }byte decToBcd(byte val){// Mengonversi angka desimal normal menjadi pengembalian desimal berkode biner ( (val/10*16) + (val%10) );}byte bcdToDec(byte val) {// Konversi desimal berkode biner ke angka desimal normal return ( (val/16*10) + (val%16) );}void printDate(){ // Reset pointer register Wire.beginTransmission(DS1307_ADDRESS); Kawat.tulis(nol); Kawat.endTransmisi(); Wire.requestFrom(DS1307_ADDRESS, 7); detik =bcdToDec(Wire.read()); menit =bcdToDec(Wire.read()); jam =bcdToDec(Wire.read() &0b111111); //waktu 24 jam //cetak tanggal Serial.print(jam); // Batalkan komentar untuk melihat waktu di monitor serial Serial.print(":"); // Serial.println(menit); // Jangan lupa untuk menghapus komentar 'Serial.begin' di 'void setup' di atas // Level meter tertentu untuk setiap jam // Anda mungkin harus menyesuaikan nilai ini.// Bermain-main dengan nilai sampai Anda mendapatkan apa maumu. if (menit terakhir !=menit){ if (jam ==1 || jam ==13){ analogWrite(leftMeter, 0); // sesuaikan level meter kiri (jam) } if (jam ==2 || jam ==14){ analogWrite(leftMeter, 29); // sesuaikan level meter kiri (jam) } if (jam ==3 || jam ==15){ analogWrite(leftMeter, 52); // sesuaikan level meter kiri (jam) } if (jam ==4 || jam ==16){ analogWrite(leftMeter, 75); // sesuaikan level meter kiri (jam) } if (jam ==5 || jam ==17){ analogWrite(leftMeter, 98); // sesuaikan level meter kiri (jam) } if (jam ==6 || jam ==18){ analogWrite(leftMeter, 130); // sesuaikan level meter kiri (jam) } if (jam ==7 || jam ==19){ analogWrite(leftMeter, 152); // sesuaikan level meter kiri (jam) } if (jam ==8 || jam ==20){ analogWrite(leftMeter, 172); // sesuaikan level meter kiri (jam) } if (jam ==9 || jam ==21){ analogWrite(leftMeter, 192); // sesuaikan level meter kiri (jam) } if (jam ==10 || jam ==22){ analogWrite(leftMeter, 213); // sesuaikan level meter kiri (jam) } if (jam ==11 || jam ==23){ analogWrite(leftMeter, 234); // sesuaikan level meter kiri (jam) } if (jam ==0 || jam ==12){ analogWrite(leftMeter, 255); // sesuaikan level meter kiri (jam) } if (menit * 4,75 <255){ // tingkatkan nilai PWM sebesar 4,75 setiap menit analogWrite(rightMeter, menit * 4,75); // Saya harus menggunakan 4.75 pada meteran saya untuk mendapatkan 30 menit untuk menunjuk tepat lurus ke atas }else{ // sempurna akan menjadi 4.25 karena 4.25 * 60 =255 analogWrite(rightMeter, 255); } menit terakhir =menit; if (detik * 4.25 <255){ analogWrite(detikMeter, detik *4.25); }else{ analogWrite(secMeter, 255); } detik terakhir =detik; }}

Skema


Proses manufaktur

  1. Arduino pov vision clock
  2. Jam Kata Sederhana (Arduino)
  3. Jam Arduino dengan waktu sholat Islam
  4. Jam Master
  5. Bunga - Arduino Nano, CrazyCircuits, DFRobot
  6. Jam POV LED Gaya Analog
  7. Roda Tab Trim Analog FlightGear
  8. Pengukur Panel Menyederhanakan Desain
  9. Pilihan Panel Digital vs. Analog
  10. Apa itu Panel Meter?