Arduino part 12. Animasi Emoji Dot Matriks modul MAX7219 (16x16)
Pada kali ini kita akan membuat gambar emoji menggunakan dot matriks led 16X16 dan arduino uno. Display dot matrik LED 16x16 merupakan gabungan dari 4 buah display dot matrik LED 8x8.
Hasil pemograman dengan arduino bisa menampilkan gambar emoji seperti ini.Vcc dihubungkan ke 5 Volt
GND dihubungkan ke ground
DIN dihubungkan ke pin I/O Arduino
CS dihubungkan ke pin pemilih data atau instruksi
CLK dihubungkan ke clock.
Penambahan
Library LedKontrol
Untuk menjalankan modul MAX7219 maka program
Arduino IDE harus ditambah librarynya. Library untuk MAX7219 bisa di unduh di https://github.com/wayoda.LedContol.
Lalu unduhlah file zipnya dan tambahkan ke dalam aplikasi Arduino IDE melalui
menu sketch>> include library>>add.ZIP Library, lalu pilihlah file
zip yang sudah anda download tadi.
Kalau sudah dirakit rangkaiannya dan librarynya sudah ditambah maka program pertama yang kita lakukan adalah menguji coba setiap lampu dot matrik LEDnya bisa menyala semua dan tidak ada kerusakan atau mati. Sketch Programnya dibawah ini:
Pada sketch program ini maka setiap LED akan menyala satu demi satu lalu nanti akan mati dengan satu demi satu. Hasil videonya seperti ini :
Skecth awal di tandai dengan : #include "LedControl.h"
Artinya kita memasukkan library LedControl yang
sudah kita tambahkan sebelumnya. Jika library ini tidak ada maka saat verify
atau upload akan terjadi error.
Ada beberapa konstanta yang didefenisikan di sketch program yaitu :
JUMLAH_LED menyatakan banyaknya jumlah dot matriknya, dalam praktik ini kita menggunakan 4 buah.
const int PIN_CLK menyatakan Pin-CLK pada modul MAX7219 terhubung ke pin arduino uno
const int PIN_DIN menyatakan Pin-DIN pada modul MAX7219 terhubung ke pin arduino uno
Untuk menyederhanakan perintah mengoprasikan dot matrik LED, maka kita mendeklarasikan objek lc melalui :
LedControl lc = LedControl(PIN_DIN, PIN_CLK, PIN_CS, JUMLAH_LED);
Di setup (), dilakukan beberapa hal. Pertama-tama,
matrix LED nomor 0,1,2,3 kita hidupkan terlebih dahulu melalui perintah:
lc.shutdown(1, false);
lc.shutdown(2, false);
lc.shutdown(3, false);
Setelah selesai menghidupkan lalu kita atur tingkat intensitas kecerahan display. Tingkat kecerahan nilainya bisa di isi dari 0 – 15. Perintahnya adalah :
lc.setIntensity(1,8);
lc.setIntensity(2,8);
lc.setIntensity(3,8);
Proses berikutnya kita mematikan semua lampu LED atau menghapus layar. Perintahnya adalah:
lc.clearDisplay(1);
lc.clearDisplay(2);
lc.clearDisplay(3);
Jika sudah berhasil sekarang kita kita membuat suatu animasi emoji yang bisa tersenyum. Sketch programnya seperti berikut :
// menggunakan MAX7219
// oleh : Hendry Kurniawan
int CS = 10;
int CLK = 13;
lc.shutdown(0,false); //The MAX72XX is in power-saving mode on startup
lc.shutdown(1,false);
lc.shutdown(2,false);
lc.shutdown(3,false);
lc.setIntensity(1,15);
lc.setIntensity(2,15);
lc.setIntensity(3,15);
lc.clearDisplay(1);
lc.clearDisplay(2);
lc.clearDisplay(3);
}
byte normal0[] = {B01000001,B10000001,B00000010,B00000010,B11100100,B00001000,B00110000,B11000000};
byte normal1[] = {B10000010,B10000001,B01000000,B01000000,B00100111,B00010000,B00001100,B00000011};
byte normal2[] = {B11000000,B00110000,B00011000,B00000100,B00110010,B00110010,B00000001,B00000001};
byte normal3[] = {B00000011,B00001100,B00011000,B00100000,B01001100,B01001100,B10000000,B10000000};
byte senyum1[] = {B10000010,B10000001,B01001000,B01000100,B00100011,B00010000,B00001100,B00000011};
byte senyum2[] = {B11000000,B00110000,B00011000,B00000100,B00110010,B01001010,B00000001,B00000001};
byte senyum3[] = {B00000011,B00001100,B00011000,B00100000,B01001100,B01010010,B10000000,B10000000};
printByte1(normal1);
printByte2(normal2);
printByte3(normal3);
delay(1000);
printByte1(senyum1);
printByte2(senyum2);
printByte3(senyum3);
delay(1000);
}
{
int i = 0;
for(i=0;i<8;i++)
{
lc.setRow(0,i,character[i]);
}
}
{
int i = 0;
for(i=0;i<8;i++)
{
lc.setRow(1,i,character[i]);
}
}
{
int i = 0;
for(i=0;i<8;i++)
{
lc.setRow(2,i,character[i]);
}
}
{
int i = 0;
for(i=0;i<8;i++)
{
lc.setRow(3,i,character[i]);
}
}
Untuk penulisan data Byte bisa menggunakan angka biner atau heksadesimal. Pada contoh di atas menggunakan angka biner, jika anda ingin menggunakan data hexsadesimal maka silahkan ganti datanya dengan angka berikut ini :
byte normal1[] = {0x82,0x81,0x40,0x40,0x27,0x10,0x0C,0x03};
byte normal2[] = {0xC0,0x30,0x18,0x04,0x32,0x32,0x01,0x01};
byte normal3[] = {0x03,0x0C,0x18,0x20,0x4C,0x4C,0x80,0x80};
byte senyum1[] = {0x82,0x81,0x48,0x44,0x23,0x10,0x0C,0x03};
byte senyum2[] = {0xC0,0x30,0x18,0x04,0x32,0x4A,0x01,0x01};
byte senyum3[] = {0x03,0x0C,0x18,0x20,0x4C,0x52,0x80,0x80};
Demikianlah cara untuk menampilkan animasi emoji menggunakan dot matrix 16 X 16.
kalau Led 16x16 ini dijadikan running text bagaimana kode dan wiringnya pak?
BalasHapus