Proyek ini adalah tentang membuat Matriks LED Scrolling 48x8 yang Dapat Diprogram menggunakan register geser Arduino UNO dan 74HC595.
Ini adalah proyek pertama saya dengan papan pengembangan Arduino. Itu adalah tantangan yang diberikan kepada saya oleh guru saya untuk mencoba membangunnya. Jadi pada saat menerima tantangan ini, saya bahkan tidak tahu cara mengedipkan LED menggunakan arduino. Jadi, saya pikir bahkan seorang pemula dapat melakukan ini dengan sedikit kesabaran dan pengertian. Saya menemukan diagram sirkuit online dan itu adalah satu-satunya referensi saya untuk membangun proyek ini. Saya memulai dengan sedikit riset tentang register geser dan multiplexing di arduino.
Saya mengumpulkan semua komponen dari sumber yang berbeda. Saya mendapatkan tampilan matriks LED katoda umum 5mm 8x8 ini dari situs online.
Ini ditunjukkan di sirkuit bahwa register geser tunggal digunakan untuk mengontrol 8 baris dan untuk mengontrol kolom, kami menggunakan satu register geser untuk setiap 8 kolom.
Jadi, jika Anda dapat membuat matriks 8x8 sederhana, Anda cukup mereplikasi bagian rangkaian untuk kontrol kolom dan memperluas matriks ke sejumlah kolom. Anda hanya perlu menambahkan satu 74hc595 untuk setiap 8 kolom ( satu modul 8x8) yang Anda tambahkan ke sirkuit. Mengingat hal itu, saya membuat prototipe 8x8 saya.
Saya mengambil papan titik terpisah untuk membuat kontrol baris dan kolom serta kabel dan header yang diperluas untuk menghubungkannya bersama.
Setelah Anda berhasil membuat matriks 8x8, Anda hanya perlu melakukan daisy-chain lebih banyak register geser dengan jam umum untuk menggerakkan kolom. hanya perlu satu 74hc595 untuk menggerakkan semua baris. Jadi berdasarkan jumlah kolom, lebih banyak register geser dapat ditambahkan, tidak ada batasan untuk jumlah kolom yang dapat Anda tambahkan.
Karena saya tidak memiliki akses ke pencetakan 3D pada waktu itu, saya mendekati seorang tukang kayu lokal untuk membuat sebuah kasus.
Kasing yang dia buat jauh lebih besar dari yang saya harapkan, lebih baik mendesain kasing yang lebih kecil menggunakan Fusion 360 atau perangkat lunak desain lainnya dan mencetak kasing 3D. Lubang dibuat untuk menghubungkan kabel daya dan usb.
Kode dapat ditemukan di lampiran proyek ini.
Di sini kita akan memindai baris dan memberi makan baris kolom dengan tingkat logika yang sesuai. Kode akan menentukan kecepatan scrolling pesan serta pesan yang akan kita tampilkan. Arah gulir dari kanan ke kiri secara default dalam kode, tetapi dengan sedikit modifikasi, itu dapat diterapkan ke arah lain juga.
Kode
- Kode Arduino untuk Matriks LED 48x8
Kode Arduino untuk Matriks LED 48x8C/C++
Kode Aduino untuk Matriks LED 48x8. Sambungan dan kode dijelaskan sebagai komentar dalam kode itu sendiri./*/////////////////////////////////////////// ///////////////////////////////////////////////////////////////// * Kode Arduino untuk menampilkan karakter bergulir pada 6 atau lebih matriks LED 8x8. * * Jumlah matriks dapat ditingkatkan dengan sedikit perubahan kode. * * Komentar diberikan di setiap pernyataan untuk diedit. * * Dikodekan oleh Prasanth KS * * Hubungi :[email protected] */*////////////////////////////////////////////// //////////////////////////////////////////////char msg [] ="WELCOME WIZ";//Ubah teks di sini.int scrollspeed=5;//Setel kecepatan scroll ( lebih rendah=lebih cepat)int x;int y;//Columnsint clockPin1 =2; // Pin Arduino terhubung ke Pin Jam 11 dari 74HC595int latchPin1 =3; //Pin Arduino terhubung ke Pin Latch 12 dari 74HC595int dataPin1 =4; //Pin Arduino terhubung ke Pin Data 14 dari 74HC595//Rowsint clockPin2 =5; // Pin Arduino terhubung ke Pin Jam 11 dari 74HC595int latchPin2 =6; //Pin Arduino terhubung ke Pin Latch 12 dari 74HC595int dataPin2 =7; //Pin Arduino terhubung ke Data Pin 14 dari 74HC595//BITMAP//Bit dalam array ini mewakili satu LED dari matriks// 8 adalah # baris, 6 adalah # bitmap matriks bit LED[8][7]; int numZones =ukuran(bitmap) / 8; // Satu Zona mengacu pada satu Matriks 8 x 8 ( Kelompok 8 kolom)int maxZoneIndex =numZones-1;int numCols =numZones * 8;//FONT DEFENITIONbyte alfabet[][8] ={ {0,0,0, 0,0},//@ sebagai SPACE //{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};pengaturan batal() { 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++) { for (int zona =0; zona <=maxZoneIndex; zona++) { bitmap[baris][zona] =0; } }}//FUNCTIONS// Menampilkan larik bitmap dalam matriksvoid RefreshDisplay(){ for (int baris =0; baris <8; baris++) { int rowbit =1 <=0; zone--) { shiftOut (dataPin1, clockPin1, MSBFIRST, bitmap[baris][zona]); } //balik kedua kait sekaligus untuk menghilangkan kedipan digitalWrite(latchPin1, HIGH);//Mengembalikan pin kait 1 tinggi ke chip sinyal digitalWrite(latchPin2, HIGH);//Mengembalikan pin kait 2 tinggi ke chip sinyal //Menunggu delayMicroseconds(300); }}// Mengonversi baris dan kolom ke bit bitmap dan mematikannya/onvoid Plot(int col, int baris, bool isOn){ int zone =col / 8; int colBitIndex =x % 8; byte colBit =1 <> 1; // Menggeser bit terendah dari zona berikutnya sebagai bit tertinggi dari zona ini. if (zona Skema
Untuk tujuan Referensi saja. Untuk koneksi pin, lihat komentar di kode.