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

Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah

Komponen dan Perlengkapan

Alat dan Mesin yang Diperlukan

Aplikasi dan Layanan Online

Arduino IDE

Tentang Proyek Ini

Halo semuanya!

Proyek ini tentang membuat Matriks LED Scrolling Programabel 48x8 menggunakan Arduino UNO dan register geser 74HC595.

Ini adalah proyek pertama saya dengan papan pengembangan Arduino. Ini adalah tantangan yang diberikan kepadanya oleh gurunya untuk mencoba membangun satu. Jadi pada saat menerima tantangan ini, saya tidak tahu sama sekali bagaimana menyala­kan LED menggunakan arduino. Jadi, saya pikir bahkan pemula dapat melakukan ini dengan sedikit kesabaran dan pemahaman. Saya menemukan diagram rangkaian online dan itu adalah referensi satu satunya untuk membangun proyek ini. Saya memulai dengan sedikit penelitian tentang register geser dan multiplexing di arduino.

Rangkaian

Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah

Mengumpulkan Komponen

Saya mengumpulkan semua komponen dari berbagai sumber. Saya mendapatkan tampilan matriks LED katoda umum 5mm 8x8 ini dari situs web online.

Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah

Membangun Prototaip

Ditampilkan dalam diagram bahwa satu register geser digunakan untuk mengontrol 8 baris dan untuk mengontrol kolom, kita menggunakan satu register geser untuk setiap 8 kolom.

Jadi jika Anda dapat membuat matriks 8x8 sederhana, Anda dapat dengan mudah mereplikasi bagian rangkaian untuk kontrol kolom dan memperluas matriks ke sejumlah kolom apa pun. Anda hanya perlu menambahkan satu 74hc595 untuk setiap 8 kolom (satu modul 8x8) yang Anda tambahkan ke dalam rangkaian. Dengan hal ini dalam pikiran, saya membuat prototaip 8x8 saya.

Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah

Tahap Pengelasan

Saya mengambil papan titik terpisah untuk membuat kontrol baris dan kolom dan memperpanjang kabel serta header untuk menghubungkannya bersama-sama.

Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah
Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah
Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah
Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah
Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah

Setelah Anda berhasil membuat matriks 8x8, Anda hanya perlu merantai lebih banyak register geser dengan jam umum untuk mengemudikan kolom. Ini hanya memerlukan satu 74hc595 untuk mengemudikan semua baris. Jadi berdasarkan jumlah kolom, lebih banyak register geser dapat ditambahkan, tidak ada batasan untuk jumlah kolom yang dapat Anda tambahkan.

Membangun Bagian Kedua

Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah
Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah
Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah
Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah

Karena saya tidak memiliki akses ke cetak 3D pada saat itu, saya mendekati tukang kayu lokal untuk membuat casing.

Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah

Casing yang dibuatnya jauh lebih besar dari yang saya harapkan, lebih baik untuk merancang casing yang lebih kecil menggunakan Fusion 360 atau perangkat lunak desain lainnya dan mencetak 3D casing. Lubang dibuat di casing untuk menghubungkan kabel daya dan usb.

Kode

Kode dapat ditemukan dalam lampiran dengan proyek ini.

Di sini kita akan memindai di seluruh baris dan memberi baris kolom dengan tingkat logika yang sesuai. Kode akan menentukan kecepatan pesan scrolling serta pesan yang akan kita tampilkan. Arah scrolling adalah kanan ke kiri secara default dalam kode, tetapi dengan sedikit modifikasi, dapat diimplementasikan di arah lain juga.

Hasil

Terima kasih! :)

Kode

Kode Arduino untuk Matriks LED 48x8C/C++

Kode Arduino untuk Matriks LED 48x8. Koneksi dan kode dijelaskan sebagai komentar dalam kode itu sendiri.

/*//////////////////////////////////////////////////////////////////////////////// * Kode Arduino untuk menampilkan karakter scrolling pada 6 atau lebih matriks LED 8x8. * * Jumlah matriks dapat ditambah dengan perubahan kecil dalam kode. * * Komentar diberikan dalam setiap pernyataan untuk diedit. * * Dikodekan oleh Prasanth K S * * Kontak : kksjunior@hotmail.com * /*//////////////////////////////////////////////////////////////////////////////// char msg[] ="WELCOME WIZ";//Ubah teks di sini. int scrollspeed=5;//Atur kecepatan scrolling ( semakin rendah = semakin cepat) int x; int y; //Kolom int clockPin1 = 2; //Pin Arduino terhubung ke Pin Jam 11 dari 74HC595 int latchPin1 = 3; //Pin Arduino terhubung ke Pin Klep 12 dari 74HC595 int dataPin1 = 4; //Pin Arduino terhubung ke Pin Data 14 dari 74HC595 //Baris int clockPin2 = 5; //Pin Arduino terhubung ke Pin Jam 11 dari 74HC595 int latchPin2 = 6; //Pin Arduino terhubung ke Pin Klep 12 dari 74HC595 int dataPin2 = 7; //Pin Arduino terhubung ke Pin Data 14 dari 74HC595 //BITMAP //Bit dalam array ini mewakili satu LED dari matriks // 8 adalah # baris, 6 adalah # matriks LED byte bitmap[8][7]; int numZones = sizeof(bitmap) / 8; // Satu Zona merujuk pada satu Matriks 8 x 8 ( Kelompok 8 kolom) int maxZoneIndex = numZones-1; int numCols = numZones * 8; //DEFINISI FONT byte alphabets[][8] = { {0,0,0,0,0},//@ sebagai SPASI //{8,28,54,99,65},//<< {31, 36, 68, 36, 31},//A {127, 73, 73, 73, 54},//B {62, 65, 65, 65, 34},//C {127, 65, 65, 34, 28},//D {127, 73, 73, 65, 65},//E {127, 72, 72, 72, 64},//F {62, 65, 65, 69, 38},//G {127, 8, 8, 8, 127},//H {0, 65, 127, 65, 0},//I {2, 1, 1, 1, 126},//J {127, 8, 20, 34, 65},//K {127, 1, 1, 1, 1},//L {127, 32, 16, 32, 127},//M {127, 32, 16, 8, 127},//N {62, 65, 65, 65, 62},//O {127, 72, 72, 72, 48},//P {62, 65, 69, 66, 61},//Q {127, 72, 76, 74, 49},//R {50, 73, 73, 73, 38},//S {64, 64, 127, 64, 64},//T {126, 1, 1, 1, 126},//U {124, 2, 1, 2, 124},//V {126, 1, 6, 1, 126},//W {99, 20, 8, 20, 99},//X {96, 16, 15, 16, 96},//Y {67, 69, 73, 81, 97},//Z }; void setup() { pinMode(latchPin1, OUTPUT); pinMode(clockPin1, OUTPUT); pinMode(dataPin1, OUTPUT); pinMode(latchPin2, OUTPUT); pinMode(clockPin2, OUTPUT); pinMode(dataPin2, OUTPUT); //Hapus bitmap untuk (int baris = 0; baris < 8; baris++) { untuk (int zona = 0; zona <= maxZoneIndex; zona++) { bitmap[baris][zona] = 0; } } } //FUNGSI // Menampilkan array bitmap di matriks void RefreshDisplay() { untuk (int baris = 0; baris < 8; baris++) { int rowbit = 1 << baris; digitalWrite(latchPin2, LOW);//Tahan latchPin LOW saat mengirim data shiftOut(dataPin2, clockPin2, MSBFIRST, rowbit); //Kirim data //Mulai mengirim byte kolom digitalWrite(latchPin1, LOW);//Tahan latchPin LOW saat mengirim data //Shift out ke setiap matriks untuk (int zona = maxZoneIndex; zona >= 0; zona--) { shiftOut(dataPin1, clockPin1, MSBFIRST, bitmap[baris][zona]); } //balik kedua klep sekaligus untuk menghilangkan kedip digitalWrite(latchPin1, HIGH);//Kembalikan pin klep 1 tinggi untuk memberi sinyal pada chip digitalWrite(latchPin2, HIGH);//Kembalikan pin klep 2 tinggi untuk memberi sinyal pada chip //Tunggu delayMicroseconds(300); } } // Mengonversi baris dan kolom ke bit bitmap dan menyalakannya/menmatikannya void Plot(int col, int row, bool isOn) { int zone = col / 8; int colBitIndex = x % 8; byte colBit = 1 << colBitIndex; jika (isOn) bitmap[row][zone] = bitmap[y][zone] | colBit; else bitmap[row][zone] = bitmap[y][zone] & (~colBit); } // Plot setiap karakter dari pesan satu kolom pada satu waktu, perbarui tampilan, geser bitmap ke kiri. void XProcess() { untuk (int charIndex=0; charIndex < (sizeof(msg)-1); charIndex++) { int alphabetIndex = msg[charIndex] - '@'; jika (alphabetIndex < 0) alphabetIndex=0; //Gambar satu karakter dari pesan // Setiap karakter lebar 5 kolom, ulangi dua kali lagi untuk membuat ruang 2 piksel di antara karakter untuk (int col = 0; col < 7; col++) { untuk (int row = 0; row < 8; row++) { // Setel piksel sesuai dengan apa yang dikatakan alfabet untuk kolom 0 hingga 4, tetapi selalu biarkan kolom 5 dan 6 kosong. bool isOn = 0; jika (col<5) isOn = bitRead( alphabets[alphabetIndex][col], 7-row ) == 1; Plot( numCols-1, row, isOn); //Gambar di kolom paling kanan, loop geser di bawah akan menggulirnya ke kiri. } untuk (int refreshCount=0; refreshCount < scrollspeed; refreshCount++) RefreshDisplay(); //Geser bitmap satu kolom ke kiri untuk (int row=0; row<8; row++) { untuk (int zona=0; zona < numZones; zona++) { //Pergeseran kanan ini akan terlihat sebagai scroll ke kiri di layar karena kolom paling kiri direpresentasikan oleh bit paling tidak signifikan dari byte. bitmap[row][zone] = bitmap[row][zone] >> 1; // Geser bit terendah dari zona berikutnya sebagai bit tertinggi dari zona ini. jika (zona < maxZoneIndex) bitWrite(bitmap[row][zone], 7, bitRead(bitmap[row][zona+1],0)); } } } } } void loop() { XProcess(); } 

Skematik

Hanya untuk referensi. Untuk koneksi pin, lihat komentar dalam kode.

Buat Matriks LED Scrolling 48x8 dengan Arduino – Panduan Langkah demi Langkah

Proses manufaktur

  1. Buat Sistem Ambilight Monitor Menakjubkan dengan Arduino
  2. Kontrol LED melalui Bluetooth dengan Arduino – Panduan DIY Sederhana
  3. Tampilan Pintu Matriks LED Interaktif dengan Sensor Gerak PIR – Ucapan Liburan Arduino
  4. Membuat Robot Quadruped Arduino Cerdas: Panduan Langkah demi Langkah
  5. Pengendalian Kecerahan LED Lancar Menggunakan Bolt IoT dan Arduino UNO
  6. Jam Flip Arduino dengan Matriks LED 8×8 – Proyek Jam Waktu Nyata DIY
  7. Pencampur Warna LED RGB Arduino – Proyek DIY Untuk Pemula
  8. Menguasai Matriks LED 8×8 dengan Arduino Uno: Panduan Langkah demi Langkah
  9. Membuat Radio FM Kompak dengan Arduino Nano dan RDA8057M
  10. Lampu Pantul LED RGB Outdoor dengan DMX – Terjangkau dan Berkinerja Tinggi