Lompat ke konten Lompat ke sidebar Lompat ke footer

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.

 


Untuk mengendalikan dot matrik LED yang banyak maka kita harus menggunakan driver tambahan untuk membantu dalam penyalaan dot matrik LED yaitu menggunakan modul MAX7219. Tetapi jika hanya menyalakan dot metrix 1 buah maka kita bisa saja langsung menghubungkan pin dot matrix ke Arduino uno tanpa menggunakan driver MAX7219. Pembahasannnya ada di sini : Dasar-dasar dot matrix led.

Jadi kalau kita membuat dot matrix led ukuran 16X16 maka kita membutuhkan 4 buah dot matrik LED 8X8 dan 4 buah modul MAX7219. Untuk PCB modul dot matrik LED  16X16 sudah dibuat dalam satu PCB. Pembeliannya bisa secara belanja online dan didalamnya sudah termasuk PCB  modul + dot matrik LED. Bentuknya seperti ini.

 



Modul MAX7219 ini hanya memiliki 5 buah pin yaitu :

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:


// -----------------------------------------
// Contoh untuk menguji dot matriks LED
//   menggunakan library LedControl
//  Oleh : Hendry Kurniawan
// -----------------------------------------
 
#include "LedControl.h"
 
const int JUMLAH_LED = 4;
const int PIN_CS  = 10;
const int PIN_CLK = 13;
const int PIN_DIN = 11;
LedControl lc = LedControl(PIN_DIN, PIN_CLK, PIN_CS, JUMLAH_LED);
 
void setup()
{
  // Menghidupkan dot matrik nomor 0,1,2,3
  lc.shutdown(0, false);
  lc.shutdown(1, false);
  lc.shutdown(2, false);
  lc.shutdown(3, false);
 
  // Mengatur intensitas kecerahan (0 hingga 15)
  lc.setIntensity(0,8);
  lc.setIntensity(1,8);
  lc.setIntensity(2,8);
  lc.setIntensity(3,8);
 
  // Menghapus layar
  lc.clearDisplay(0);
  lc.clearDisplay(1);
  lc.clearDisplay(2);
  lc.clearDisplay(3);
 
}
void loop()
{
  for (int baris = 0; baris < 8; baris++)
  {
    for (int kolom = 0; kolom < 8; kolom++)
    {
      // Menampilkan LED pada kolom dan baris
      lc.setLed(0, baris, kolom, true);
      lc.setLed(1, baris, kolom, true);
      lc.setLed(2, baris, kolom, true);
      lc.setLed(3, baris, kolom, true);
      delay(100);
    }
  }
 
  delay(1000);
  
  for (int baris = 0; baris < 8; baris++)
  {
    for (int kolom = 0; kolom < 8; kolom++)
    {
      // Mematikan LED pada kolom dan baris
      lc.setLed(0, baris, kolom, false);
      lc.setLed(1, baris, kolom, false);
      lc.setLed(2, baris, kolom, false);
      lc.setLed(3, baris, kolom, false);
      delay(100);
    }
  }
}

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_CS  menyatakan Pin-CS pada modul MAX7219 terhubung ke pin arduino uno
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(0, false);
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(0,8);
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(0);
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 :


// animasi emoji dot matrix LED 16 x 16
// menggunakan MAX7219
// oleh : Hendry Kurniawan
 
#include <LedControl.h>
 
int DIN = 11;
int CS =  10;
int CLK = 13;
 
LedControl lc=LedControl(DIN,CLK,CS,4);
 
void setup(){
 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(0,15);      // Set the brightness to maximum value
 lc.setIntensity(1,15);
 lc.setIntensity(2,15);
 lc.setIntensity(3,15);
 
 lc.clearDisplay(0);         // and clear the display
 lc.clearDisplay(1);
 lc.clearDisplay(2);
 lc.clearDisplay(3);
}
 
void loop(){
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 senyum0[] = {B01000001,B10000001,B00010010,B00100010,B11000100,B00001000,B00110000,B11000000};
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};
 
    printByte0(normal0);
    printByte1(normal1);
    printByte2(normal2);
    printByte3(normal3);
    delay(1000);
 
    printByte0(senyum0);
    printByte1(senyum1);
    printByte2(senyum2);
    printByte3(senyum3);
    delay(1000);
}
 
void printByte0(byte character [])
{
  int i = 0;
  for(i=0;i<8;i++)
  {
    lc.setRow(0,i,character[i]);
  }
}
 
void printByte1(byte character [])
{
  int i = 0;
  for(i=0;i<8;i++)
  {
    lc.setRow(1,i,character[i]);
  }
}
 
void printByte2(byte character [])
{
  int i = 0;
  for(i=0;i<8;i++)
  {
    lc.setRow(2,i,character[i]);
  }
}
 
void printByte3(byte character [])
{
  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 normal0[] = {0x41,0x81,0x02,0x02,0xE4,0x08,0x30,0xC0};
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 senyum0[] = {0x41,0x81,0x12,0x22,0xC4,0x08,0x30,0xC0};
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};

Data untuk penyalaan emoji ini bisa berdasarkan gambar berikut ini :

Hasil dari animasi emoji ini bisa dilihat pada video dibawah ini:


Demikianlah cara untuk menampilkan animasi emoji menggunakan dot matrix 16 X 16.

1 komentar untuk "Arduino part 12. Animasi Emoji Dot Matriks modul MAX7219 (16x16)"

  1. kalau Led 16x16 ini dijadikan running text bagaimana kode dan wiringnya pak?

    BalasHapus