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

Arduino Nano Clock dengan 4x64 LED Matrix (versi baru)

Komponen dan persediaan

Arduino Nano R3
× 1
matriks LED
× 1
Resistor foto
× 1
Breadboard (generik)
× 1
DS3231
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini


Membaca tampilan jam di sebuah ruangan pada jarak beberapa meter memerlukan tampilan matriks LED seperti itu.

Setelah membeli layar 4 sel dengan harga bagus, saya mencari di Hackster untuk proyek yang tersedia:ada beberapa proyek, untuk Arduino Nano. Jika Anda ingin melihat jam, menit, dan detik secara bersamaan:hanya beberapa proyek yang berfungsi, karena Anda memerlukan digit yang lebih kecil daripada yang tersedia secara luas dengan 5x7 piksel per digit. Pilihannya adalah menggunakan pustaka MD_Parola, tetapi ukuran kodenya terlalu besar untuk jam sederhana. Opsi lain yang diuji adalah pustaka Max72xxPanel, tetapi ini terlalu tua dan memanggil pustaka lain. Terakhir, proyek ini didasarkan pada pustaka antarmuka dasar MD_MAX722XX, yang disertakan dalam semua yang lain.

Komentar dari situs ini, membuat saya meninjau aspek perangkat keras dan kode.

- Ada banyak perpustakaan yang disebut DS3231. Saya menggunakan yang ini:http://www.rinkydinkelectronics.com/library.php?id=73

Dukungan perpustakaan Arduino/chipKit untuk DS3231 I2C Real-Time ClockCopyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. Semua hak dilindungi undang-undang

- Pertama:tampilan matriks LED. Ada beberapa model di pasaran, jadi kemungkinan besar tampilan akan menunjukkan hal-hal aneh setelah Anda mengunggah kode ini. Solusi:unggah contoh ini dari pustaka "MD_MAX72xx_lib.h":"MD_MAX72xx_HW_Mapper.ino" dan temukan model perangkat keras Anda. Dalam kode saya, model didefinisikan:#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW, tetapi ini mungkin tidak berfungsi sampai Anda menyetel model yang tepat!

- Detik kecil yang bagus tidak muncul akhir-akhir ini? Sekarang (v2), font untuk detik ini disertakan dalam kode, jadi tidak perlu mengubah pustaka lainnya.

- Daftar peringatan kompilasi yang panjang terjadi karena pembaruan Arduino. Sekarang, bulan berada dalam array char dua dimensi dan tidak lagi menggunakan pointer. Peringatan lainnya berasal dari perpustakaan DS3231.h, tetapi dapat diabaikan.

- Titik kedip sekarang tinggal 2 titik! Detik akurat ditampilkan, menggunakan font 3x5 saya, setelah "hh:mm". Selain itu, titik kolom ":" berkedip hampir dua kali per detik, hanya untuk menunjukkan bahwa itu hidup!

- Menjawab permintaan :waktu ditampilkan selama 53 detik setiap menit dan selama 7 detik terakhir ditampilkan tanggal dan suhu.

- Hari dalam seminggu juga dapat ditampilkan, jika Anda membatalkan komentar dua baris di loop(). Dalam hal ini, Anda mungkin lebih suka mengurangi interval dari 53 detik menjadi 51.

- Jika Anda lebih suka format 12 jam, lihat salah satu jawaban lama saya.

- Waktu RTC dapat diatur di Arduino Serial Monitor dengan menulis di area input DD/MM/YYYY jj:mm:ss (jangan lupa spasi antara) dan tekan Enter/Kirim. Ini dapat dilakukan setiap kali kabel USB terhubung dan Serial Monitor berfungsi (COM dan baud rate yang benar).

Kode baru menggunakan 13558 byte (44%) dan 372 byte (18%) untuk variabel, jadi sedikit lebih pendek!

Tanggal ditampilkan sebagai "dd Mon" dan suhu ruangan dalam derajat. Celcius (diperkirakan menggunakan sensor internal RTC) ditampilkan pada halaman terpisah. Kecerahan dikendalikan oleh resistor foto. Namun kode ini berfungsi, bahkan tanpa sensor cahaya.

Terima kasih atas minat Anda, ditunjukkan dengan tombol "hormat"!

Kode

  • Versi LAMA - Jam Arduino Nano Dot Matrix
  • Versi baru (v2) - jam Arduino Nano Dot Matrix
Versi LAMA - Jam Arduino Nano Dot MatrixArduino
Karena banyak perpustakaan berubah sejak rilis awal, kode ini sudah usang. Gunakan versi baruSemua koneksi dijelaskan dalam kode. Untuk font kecil, ubah beberapa baris di MD_MAX72xx_font.cpp, seperti yang dijelaskan dalam kode.
/* PERINGATAN:Kode awal sekarang sudah usang. Gunakan yang baru (versi 2) * Jam Arduino Nano DS3231 dengan LED Matrix 4x(8x8) SPI * * Logika Arduino Nano 5V - prog 32kB. ruang * Alat:Papan:Arduino Nano; Prosesor:ATmega328P (Bootloader Lama)!!* LED Matrix 4x(8x8) SPI dengan konektor di sisi kanan (modul terakhir)* https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html?rmmds=myorder&cur_warehouse=CN* * KONEKSI:*>> LCD 4x64 -> Arduino Nano:(menggunakan Hardware SPI):* 5V -> 5V pin* GND -> GND pin* CLK_PIN -> 13 // atau SCK* DATA_PIN -> 11 // atau MOSI* CS_PIN -> 10 // atau SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4* SCL ( CLK) -> A5 * Terinspirasi oleh:1) Jam Arduino oleh AnthoTRONICS Terakhir diedit:22 Maret 2019* tetapi tanpa MD_parola karena footprint yang besar! Fungsi getdate baru.* 2) Jam Digital UNO paling sederhana yang pernah ada oleh plouc68000:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino oleh Leonardo Sposina, tetapi di sini tanpa "Max72xxPanel.h"* https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Tidak menggunakan Max72xxPanel.h, tetapi digit ukuran kecil masih digunakan. Kode footprint kecil di sini.* Ganti di library MD_MAX72XX/src/MD_MAX72xx_font.cpp :* 1) #define USE_NEW_FONT 1* 2) font #148 ... 158 harus diganti dengan font 3x5:3, 248, 136, 248, / / 48 0 3, 144, 248, 128, // 49 1 3, 200, 168, 184, // 50 2 3, 136, 168, 248, // 51 3 3, 112, 72, 224, // 52 4 3, 184, 168, 232, // 53 5 3, 248, 168, 232, // 54 6 3, 8, 232, 24, // 55 7 3, 248, 168, 248, // 56 8 3 , 184, 168, 248, // 57 9 1, 80, // 58 :* * proyek:13790 byte (44%); variabel 361 byte (17%)* Penulis:MVP https://www.hackster.io/MVP*/#include #include "DS3231.h"#include "MD_MAX72xx_lib.h"//#include " Font_Data.h"DS3231 rtc(SDA, SCL); // Waktu nyata clockconst byte LDR_PIN =A2; // LDR pin Sensor#define MAX_DEVICES 4// Tentukan pin#define CLK_PIN 13 // atau SCK#define DATA_PIN 11 // atau MOSI#define CS_PIN 10 // atau SS#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW#define_NEW_NEW BUF_SIZE 20 // ukuran buffer teks#define CHAR_SPACING 1 // piksel antara karakterchar buf[BUF_SIZE], secs[4];uint8_t dots;// Antarmuka perangkat keras SPI// Max72xxPanel matrix =Max72xxPanel(CS_PIN, H_DISPLAYS, V_DISPLAYS);MD_MAX72XX matrix =MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);const byte WAIT =100;const byte SPACER =1;byte FONT_WIDTH;bool timeset=false;void adjustClock(String data) { byte _day =data.substring(0,2).toInt (); byte _month =data.substring(3,5).toInt(); int _tahun =data.substring(6,10).toInt(); byte _hour =data.substring(11,13).toInt(); byte _min =data.substring(14,16).toInt(); byte _sec =data.substring(17,19).toInt(); rtc.setTime(_hour, _min, _sec); rtc.setDate(_day, _month, _year); Serial.println(F(">> Datetime berhasil disetel!")); timeset=true;}byte ledintensitySelect(int light) { byte _value =0; if (cahaya>=0 &&cahaya <=127) { _nilai =12; } else if (cahaya>=128 &&cahaya <=319) { _nilai =3; } else if (cahaya>=320 &&cahaya <=512) { _nilai =0; } return _value;};void printText(uint8_t modStart, uint8_t modEnd, char *pMsg)// Cetak string teks ke modul matriks LED yang ditentukan.// Area pesan diisi dengan kolom kosong setelah pencetakan.{ uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf[FONT_WIDTH]; int16_t col =((modEnd + 1) * COL_SIZE) - 1; matrix.control(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::OFF); lakukan // mesin keadaan terbatas untuk mencetak karakter di ruang yang tersedia { switch(state) { case 0:// Muat karakter berikutnya dari tabel font // jika kita mencapai akhir pesan, reset pointer pesan if (*pMsg =='\0') { showLen =col - (modEnd * COL_SIZE); // status karakter pengisi =2; merusak; } // mengambil karakter berikutnya dari file font showLen =matrix.getChar(*pMsg++, sizeof(cBuf)/sizeof(cBuf[0]), cBuf); curLen =0; keadaan++; // !! sengaja jatuh ke status berikutnya untuk mulai menampilkan kasus 1:// menampilkan bagian selanjutnya dari karakter matrix.setColumn(col--, cBuf[curLen++]); // selesai dengan karakter font, sekarang tampilkan spasi di antara karakter if (curLen ==showLen) { showLen =CHAR_SPACING; keadaan =2; } merusak; case 2:// inisialisasi status untuk menampilkan kolom kosong curLen =0; keadaan++; // jatuh melalui kasus 3:// menampilkan spasi antar-karakter atau akhir padding pesan (kolom kosong) matrix.setColumn(col--, 0); curLen++; if (curLen ==showLen) status =0; merusak; default:col =-1; // ini pasti mengakhiri perulangan do } } while (col>=(modStart * COL_SIZE)); matrix.control(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::ON);}pengaturan batal() { pinMode(LDR_PIN, INPUT_PULLUP); Serial.begin(9600); Serial.println(F(">> Jam Dot Matrix LED Arduino 32x8!")); Serial.println(F(">> Gunakan format 
untuk mengatur tanggal dan jam jam!")); rtc.mulai(); matriks.mulai(); matriks.clear(); FONT_WIDTH=5 + SPACER; // Lebar font adalah 5 piksel matrix.control(MD_MAX72XX::INTENSITY, 2);; // Gunakan nilai antara 0 dan 15 untuk kecerahan}void getDate()// Pengaturan Tanggal:Kode untuk membaca tanggal jam{ char* bulan[]={"Jan","Feb","Mar","Apr", "Mei", "Jun", "Jul", "Agustus", "Sep", "Okt", "Nov", "Des"}; String dts =rtc.getDateStr(); // Dapatkan string dd/mm/yyyy String dds=dts.substring(0,2); // Ekstrak tanggal String mms=dts.substring(3,5); // Ekstrak bulan int mm=mms.toInt(); // Konversikan ke nomor bulan dds.concat(" "); dds.concat(String(bulan[mm-1])); // Membangun kembali string tanggal sebagai "dd Mmm" dds.toCharArray(buf,sizeof(buf)); // return buffer}void getHour()// Pengaturan Tanggal:Kode untuk membaca tanggal jam{ String dts =rtc.getTimeStr(); // Dapatkan jj:mm:ss string String hhs=dts.substring(0,2); // Ekstrak jam int hh=hhs.toInt(); // Konversikan ke angka jika (hh <10) titik=7; if(hh> 19 &&jj <24) titik=13; if ((jj> 9 &&jj <20) || (jj ==21)) titik=11; jika (hh ==1) titik=5; jika (hh ==11) titik =10; //String outmsg=dts.substring(0,5); // Ekstrak jj:mm (opsional) String outmsg=String(hh); // Ekstrak h jika h<10 outmsg.concat(":"); // tambahkan :outmsg.concat(dts.substring(3,5)); // tambahkan mm outmsg.toCharArray(buf,BUF_SIZE);}void showec(){ String dts =rtc.getTimeStr(); // Dapatkan jj:mm:ss string String scs1=dts.substring(6,7); String scs2=dts.substring(7); char sc1=148+scs1.toInt(); // Konversi ke indeks char char sc2=148+scs2.toInt(); // Konversi ke indeks char matrix.setChar(6,sc1); matrix.setChar(2,sc2);}void loop() { byte ledIntensity =ledintensitySelect(analogRead(LDR_PIN)); matrix.control(MD_MAX72XX::INTENSITY, ledIntensity);; // Gunakan nilai antara 0 dan 15 untuk kecerahan // Tampilkan jj:mm dari buf getHour(); printText(0,MAX_DEVICES-1,buf); tunda (TUNGGU); // Mengedipkan dua titik:for (uint8_t i=0; i<8; i++){ matrix.setColumn(MAX_DEVICES*8-dots,36); showec(); penundaan (250); matrix.setColumn(MAX_DEVICES*8-titik,0); showec(); penundaan (250); } // Keluar dengan menggulir ke atas:for (uint8_t i=0; i<8; i++){ matrix.transform(MD_MAX72XX::TSU); penundaan (2 * TUNGGU); tunda (TUNGGU); } getDate(); printText(0,MAX_DEVICES-1,buf); tunda (20 * TUNGGU); int suhu =rtc.getTemp(); suhu =suhu-1; // Offset -1 C String outmsg=String(temp); outmsg.concat("C"); outmsg.toCharArray(buf,BUF_SIZE); printText(0,MAX_DEVICES-1,buf); tunda (20 * TUNGGU); // Pengaturan waktu di RTC:if (Serial.available()> 0 &×et==false) { adjustClock(Serial.readString()); }}
Versi baru (v2) - Jam Arduino Nano Dot MatrixArduino
Diperbarui sesuai dengan perpustakaan baru.
/* Jam Arduino Nano DS3231 dengan LED Matrix 4x(8x8) SPI * Versi 2 - diperbarui 15/05/2-21 * Logika Arduino Nano 5V - prog 32kB. ruang * Alat:Papan:Arduino Nano; Prosesor:ATmega328P (Bootloader Lama)!!* LED Matrix 4x(8x8) SPI dengan konektor di sisi kanan (modul terakhir)* https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in- 1-Display-For-Arduino-p-1072083.html?rmmds=myorder&cur_warehouse=CN* * KONEKSI:*>> LCD 4x64 -> Arduino Nano:(menggunakan Hardware SPI):* 5V -> 5V pin* GND -> GND pin* CLK_PIN -> 13 // atau SCK* DATA_PIN -> 11 // atau MOSI* CS_PIN -> 10 // atau SS * *>> DS3231 RTC -> Arduino Nano:* SDA (DAT) -> A4* SCL ( CLK) -> A5 * Terinspirasi oleh:1) Jam Arduino oleh AnthoTRONICS Terakhir diedit:22 Maret 2019* tetapi tanpa MD_parola karena footprint yang besar! Fungsi getdate baru.* 2) Jam Digital UNO paling sederhana yang pernah ada oleh plouc68000:* https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1* 3) LEDDotMatrixClock.ino oleh Leonardo Sposina, tetapi di sini tanpa "Max72xxPanel.h"* https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino* Tidak menggunakan Max72xxPanel.h, tetapi digit ukuran kecil masih digunakan. Kode footprint kecil di sini.* * proyek:113558 byte (44%); variabel 372 byte (17%)* Penulis:MVP https://www.hackster.io/MVP*/#include #include "DS3231.h"#include "MD_MAX72xx_lib.h"//#include " Font_Data.h"DS3231 rtc(SDA, SCL); // Waktu nyata clockconst byte LDR_PIN =A2; // LDR Sensor pin#define MAX_DEVICES 4// Tentukan pin#define CLK_PIN 13 // atau SCK#define DATA_PIN 11 // atau MOSI#define CS_PIN 10 // atau SS// Tentukan di bawah model perangkat keras matriks LED Anda://# define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW#define HARDWARE_TYPE MD_MAX72XX::FC16_HW#define USE_NEW_FONT 1#define BUF_SIZE 20 // ukuran buffer teks#define CHAR_SPACING 1 // piksel antar karakterchar buf[BUF_Shh] ss, titik;// Definisi font kecil:uint8_t Font3x5 [ 10 ][ 3 ]={ { 248, 136, 248}, // 48 0 {144, 248, 128}, // 49 1 {200, 168 , 184}, // 50 2 {136, 168, 248}, // 51 3 {112, 72, 224}, // 52 4 {184, 168, 232}, // 53 5 {248, 168, 232 }, // 54 6 {8, 232, 24}, // 55 7 {248, 168, 248}, // 56 8 {184, 168, 248}}; // 57 9char bulan[12][4]={"Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agustus","Sep"," Okt","Nov","Des"};char* wday;// Antarmuka perangkat keras SPI// Max72xxPanel matrix =Max72xxPanel(CS_PIN, H_DISPLAYS, V_DISPLAYS);MD_MAX72XX matrix =MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);const byte TUNGGU =100;const byte SPACER =1;byte FONT_WIDTH;bool timeset=false;void adjustClock(String data) { byte _day =data.substring(0,2).toInt(); byte _month =data.substring(3,5).toInt(); int _tahun =data.substring(6,10).toInt(); byte _hour =data.substring(11,13).toInt(); byte _min =data.substring(14,16).toInt(); byte _sec =data.substring(17,19).toInt(); rtc.setTime(_hour, _min, _sec); rtc.setDate(_day, _month, _year); Serial.println(F(">> Datetime berhasil disetel!")); timeset=true;}byte ledintensitySelect(int light) { byte _value =0; if (cahaya>=0 &&cahaya <=127) { _nilai =12; } else if (cahaya>=128 &&cahaya <=319) { _nilai =3; } else if (cahaya>=320 &&cahaya <=512) { _nilai =0; } return _value;};void printText(uint8_t modStart, uint8_t modEnd, char *pMsg)// Cetak string teks ke modul matriks LED yang ditentukan.// Area pesan diisi dengan kolom kosong setelah pencetakan.{ uint8_t state =0; uint8_t curLen; uint16_t showLen; uint8_t cBuf[FONT_WIDTH]; int16_t col =((modEnd + 1) * COL_SIZE) - 1; matrix.control(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::OFF); lakukan // mesin keadaan terbatas untuk mencetak karakter di ruang yang tersedia { switch(state) { case 0:// Muat karakter berikutnya dari tabel font // jika kita mencapai akhir pesan, reset pointer pesan if (*pMsg =='\0') { showLen =col - (modEnd * COL_SIZE); // status karakter pengisi =2; merusak; } // mengambil karakter berikutnya dari file font showLen =matrix.getChar(*pMsg++, sizeof(cBuf)/sizeof(cBuf[0]), cBuf); curLen =0; keadaan++; // !! sengaja jatuh ke status berikutnya untuk mulai menampilkan kasus 1:// menampilkan bagian selanjutnya dari karakter matrix.setColumn(col--, cBuf[curLen++]); // selesai dengan karakter font, sekarang tampilkan spasi di antara karakter if (curLen ==showLen) { showLen =CHAR_SPACING; keadaan =2; } merusak; case 2:// inisialisasi status untuk menampilkan kolom kosong curLen =0; keadaan++; // jatuh melalui kasus 3:// menampilkan spasi antar-karakter atau akhir padding pesan (kolom kosong) matrix.setColumn(col--, 0); curLen++; if (curLen ==showLen) status =0; merusak; default:col =-1; // ini pasti mengakhiri perulangan do } } while (col>=(modStart * COL_SIZE)); matrix.control(modStart, modEnd, MD_MAX72XX::UPDATE, MD_MAX72XX::ON);}pengaturan batal() { pinMode(LDR_PIN, INPUT_PULLUP); Serial.begin(9600); Serial.println(F(">> Jam Dot Matrix LED Arduino 32x8!")); Serial.println(F(">> Gunakan format 
untuk mengatur tanggal dan jam jam!")); rtc.mulai(); matriks.mulai(); matriks.clear(); FONT_WIDTH=5 + SPACER; // Lebar font adalah 5 piksel matrix.control(MD_MAX72XX::INTENSITY, 2);; // Gunakan nilai antara 0 dan 15 untuk kecerahan rtc.setDOW(); // Diperlukan untuk RTC baru}void getDate()// Pengaturan Tanggal:Kode untuk membaca tanggal jam{ String dts =rtc.getDateStr(); // Dapatkan string dd/mm/yyyy String dds=dts.substring(0,2); // Ekstrak tanggal String mms=dts.substring(3,5); // Ekstrak bulan int mm=mms.toInt(); // Konversikan ke nomor bulan dds.concat(" "); dds.concat(String(bulan[mm-1])); // Membangun kembali string tanggal sebagai "dd Mmm" dds.toCharArray(buf,sizeof(buf)); // mengembalikan buffer wday =rtc.getDOWStr(2);}void getHour()// Pengaturan Tanggal:Kode untuk membaca tanggal jam{ String dts =rtc.getTimeStr(); // Dapatkan jj:mm:ss string String hhs=dts.substring(0,2); // Ekstrak jam String mms=dts.substring(3,5); // Ekstrak menit hh=hhs.toInt(); // Konversikan ke angka mm=mms.toInt(); // Konversikan ke angka mm ss=(dts.substring(6,8)).toInt(); // Ekstrak detik sebagai angka jika (jj>=0 &&jj <10) titik=7; if (jj> 9 &&jj <20) titik=11; if (jj> 19 &&jj <25) titik=13; if (hh%10 ==1) titik-=2; //String outmsg=dts.substring(0,5); // Ekstrak jj:mm (opsional) String outmsg=String(hh); // Ekstrak h jika h<10 // outmsg.concat(":"); // tambahkan :tetapi pada 2 kolom!! outmsg.concat(char(124)); // tambahkan 1 kolom penuh di antara angka outmsg.concat(dts.substring(3,5)); // tambahkan mm outmsg.toCharArray(buf,BUF_SIZE);}// Versi fungsi baru, menggunakan font kecil yang disematkan,void showec(uint8_t secs){ uint8_t secs1=secs%10; uint8_t detik2=detik/10; for (uint8_t k=0; k<3; k++){ matrix.setColumn(MAX_DEVICES*8-26-k,Font3x5 [dtk2][k]); matrix.setColumn(MAX_DEVICES*8-30-k,Font3x5 [dtk1][k]); }}void loop() { byte ledIntensity =ledintensitySelect(analogRead(LDR_PIN)); matrix.control(MD_MAX72XX::INTENSITY, ledIntensity);; // Gunakan nilai antara 0 dan 15 untuk kecerahan getHour(); // Baca waktu dari RTC printText(0,MAX_DEVICES-1,buf); // Tampilkan jj|mm dari buf matrix.setColumn(MAX_DEVICES*8-titik,0); // Hapus | unsigned long inst =millis(); // tandai momen ini while (ss <53){ // 53 detik pertama setiap menit tunjukkan waktu while (millis() - inst> 1000){ inst =millis(); ss++; // Tambah detik showec(ss); // Tampilkan detik untuk (uint8_t i =0; i <2; i++){ matrix.setColumn(MAX_DEVICES*8-dots,36); // Berkedip dua titik:delay(240); matrix.setColumn(MAX_DEVICES*8-titik,0); penundaan (240); } } } // Kemudian "waktu" bergulir ke atas:for (uint8_t i=0; i<8; i++){ matrix.transform(MD_MAX72XX::TSU); tunda (3 * TUNGGU); } // Tulis tanggal sekarang:getDate(); printText(0,MAX_DEVICES-1,buf); tunda (20 * TUNGGU); // Tulis hari minggu (jika tidak dikomentari)://printText(0,MAX_DEVICES-1,wday); //tunda(20*TUNGGU); // Tulis perkiraan suhu ruangan dari sensor RTC int temp =rtc.getTemp(); suhu =suhu-1; // Offset -1 C String outmsg=String(temp); outmsg.concat("C"); outmsg.toCharArray(buf,BUF_SIZE); printText(0,MAX_DEVICES-1,buf); tunda (20 * TUNGGU); // Pengaturan waktu di RTC jika Serial monitor diaktifkan di Arduino IDE:if (Serial.available()> 0 &×et==false) { adjustClock(Serial.readString()); }}

Skema

Terinspirasi oleh Leonardo Sposina, tapi #define CS_PIN(Matrix)<--> 10(Nano)
Skemanya HAMPIR sama untuk semua proyek Matrix. Di sini foto-resistor asli. Seperti yang disebutkan dalam kode:#define CS_PIN(Matrix)<--> 10(Nano) https://github.com/leonardosposina/arduino-led-dot-matrix-clock

Proses manufaktur

  1. Jam Arduino dengan waktu sholat Islam
  2. Suhu Arduino. Monitor Dan Jam Waktu Nyata Dengan Tampilan 3.2
  3. Arduino dengan Bluetooth untuk Mengontrol LED!
  4. Bermain Dengan Tampilan Berikutnya
  5. Matriks LED + Tampilan Pintu Sensor Gerak [Arduino Holiday]
  6. Arduino Nano:Kontrol 2 Motor Stepper Dengan Joystick
  7. Matriks LED Tunggal Arduino Flip Clock
  8. Mengontrol Matriks LED dengan Arduino Uno
  9. Penghitung Geiger Genggam dengan Arduino Nano
  10. Multiplekser Pengisi Daya Baterai Cerdas dengan Layar Cerdas