Belajar Display Dot Matrix

Setelah sebelumnya belajar 7-segments tibalah saatnya saya belajar display dot-matrix. Kali ini lebih kompleks dari pada 7-segments karena kita harus mengatur 64 LED (utk 1 panel ukuran 8×8). Pengaturan ke-64 LED ini dilakukan di ke-16 pin-nya.

Seperti biasa, kita harus mencari datasheet-nya. Dot matrix yang saya punya kodenya 1088BS. Setelah googling nemu file datasheet dengan judul ULM-1088AXBX.pdf (sayangnya saya tidak catat URL-nya). Di dalamnya ada spesifikasi beberapa tipe dot matrix dari seri 1088. Termasuk di antaranya 1088BS.

Skema 1088BX

Skema 1088BX

Dari datasheet, 1088BS adalah dot matrix dengan LED tipe HIGH RED yang terbuat dari GaAsP atau GaP (*ini singkatan dari unsur kimia. Saya sih sudah lupa, hehehe*). Dan konfigurasinya common anode.

Saya pun mengetest pin & nyala LED, apakah sesuai dengan datasheet? Dan ternyata cocok, horeee… Pengecekan ini mesti dilakukan karena dot matrix saya tidak diketahui produsennya. Cuma ada tulisan China & kode 1088BS. Beda dengan datasheet yang saya peroleh yang lebih detail informasi produsen, tipe dan seri.

Pengetesan berlangsung dengan baik. Tibalah saatnya wiring (pengkabelan) di breadboard. Seperti halnya saat wiring di 7-segments, saya menambahkan resistor 1K Ohm untuk membatasi arus ke dot matrix. Saya masih mengandalkan Arduino Nano andalan untuk pembelajaran ini.

Untuk pengetesan, saya membuat program sederhana untuk scanning LED. Dan tentu saja mencoba membuat sebuah pola, yaitu panah. Pembuatan pola masih sederhana saja dengan kode 0 dan 1 di posisi LED yang dimaksud.

Berikut foto dari proses belajar dot-matrix. Sayang di foto nyala LED-nya tidak nyata. Mestinya LED menyala merah terang. Mungkin saya yang belum bisa memotret ya? Hehehe… Ini persis dengan foto 7-segment kemarin yang juga tidak nampak warna merahnya. Padahal tertangkap di mata merah terang.

Bentuk panah. Mestinya menyala merah menyala. Di foto nampak putih.

Bentuk panah. Mestinya menyala merah menyala. Di foto nampak putih.

Rencananya saya akan belajar merangkaikan beberapa dot matrix dengan shift register. Kebetulan saya punya beberapa chip 74HC595. Chip shift register ini sering saya pakai untuk mengendalikan display LCD di beberapa proyek sebelumnya. Hanya saja untuk proyek dot-matrix ini bakal dibutuhkan lebih banyak 74HC595 untuk data dan cascading untuk scanning.

Untuk sementara ini kayaknya saya cuma mengandalkan arus output dari Arduino. Jika ternyata hasilnya tidak bagus, mungkin perlu chip darlington/johnson. Atau kalau mau ribet bisa merangkainya dengan transistor. Kebetulan saya punya transistor NPN BC547 dan BC548.

Selain kompleksitas dari rangkaiannya itu sendiri, kesulitan lain yang tidak kalah menantang adalah di pemrogramannya. Karena kita harus mengendalikan lebih banyak LED dan bentuk-bentuk yang bisa ditampilkan bisa lebih variatif dengan animasi seperti scroll, flip, blink, dll. Sangat menantang!

Oh iya, di bawah ini adalah code sederhana saya untuk mengetest dot-matrix. Seperti dalam 7-segment sebelumnya, konfigurasi pin mungkin berbeda dengan yang lain.

/*
Emanuel Setio Dewo, setio.dewo@gmail.com
04 November 2012
Test dot matrix

*/

byte rw[] = { 1, 2, 7, 0, 3, 6, 4, 5 };
byte cl[] = { 8, 9, 10, 11, 12, 13, 14, 15 };
byte panah[] = {
  0,0,0,0,1,0,0,0,
  0,0,0,1,1,1,0,0,
  0,0,1,0,1,0,1,0,
  0,0,0,0,1,0,0,0,
  0,0,0,0,1,0,0,0,
  0,0,0,1,0,1,0,0,
  0,0,1,0,0,0,1,0,
  0,0,0,0,0,0,0,0
};

int idx = 0;

void setup() {
  for (int i=0; i<=16; i++) {
    pinMode(i, OUTPUT);
  }
  matikan();
}

void loop() {
  //scanning1();
  //scanning2();
  //scanning3();
  //blinks();
  bikin_panah();
  //while(1);
}

void scanning1() {
  for (int c = 0; c < 8; c++) {
    digitalWrite(cl[c], LOW);
    for (int r = 0; r < 8; r++) {
      digitalWrite(rw[r], HIGH);
      delay(20);
      digitalWrite(rw[r], LOW);
    }
    digitalWrite(cl[c], HIGH);
  }
  
  for (int c=7; c>=0; c--) {
    digitalWrite(cl[c], LOW);
    for (int r=7; r>=0; r--) {
      digitalWrite(rw[r], HIGH);
      delay(20);
      digitalWrite(rw[r], LOW);
    }
    digitalWrite(cl[c], HIGH);
  }
}

void scanning2() {
  matikan();
  for (int i=0; i<8; i++) digitalWrite(cl[i], LOW);
  for (int i=0; i<8; i++) {
    digitalWrite(rw[i], HIGH);
    delay(50);
    digitalWrite(rw[i], LOW);
  }
  for (int i=7; i>=0; i--) {
    digitalWrite(rw[i], HIGH);
    delay(50);
    digitalWrite(rw[i], LOW);
  }
}

void scanning3() {
  matikan();
  for (int i=0; i<8; i++) digitalWrite(rw[i], HIGH);
  for (int i=0; i<8; i++) {
    digitalWrite(cl[i], LOW);
    delay(50);
    digitalWrite(cl[i], HIGH);
  }
  for (int i=7; i>=0; i--) {
    digitalWrite(cl[i], LOW);
    delay(50);
    digitalWrite(cl[i], HIGH);
  }
  matikan();
}

void blinks() {
  for (int i=0; i<10; i++) {
    nyalakan();
    delay(100);
    matikan();
    delay(100);
  }
}

void bikin_panah() {
  for (int c=0; c<8; c++) {
    digitalWrite(cl[c], LOW);
    for (int i=0; i<8; i++) {
      if (panah[idx] == 0) digitalWrite(rw[i], LOW);
      else {
        digitalWrite(rw[i], HIGH);
        delayMicroseconds(250);
      }
      matikan_baris();
      idx++;
      if (idx >=64) idx = 0;
    }
    digitalWrite(cl[c], HIGH);
  }
}

void matikan_baris() {
  for (int i=0; i<8; i++) {
    digitalWrite(rw[i], LOW);
  }
}

void matikan() {
  for (int i = 0; i<8; i++) {
    digitalWrite(rw[i], LOW);
    digitalWrite(cl[i], HIGH);
  }
}

void nyalakan() {
  for (int i=0; i<8; i++) {
    digitalWrite(rw[i], HIGH);
    digitalWrite(cl[i], LOW);
  }
}
Iklan

Tentang Emanuel Setio Dewo

Tumbuh, Berkembang, Berbuah...
Pos ini dipublikasikan di Arduino, Catatan, Code, Dewo, Elektronika, Foto, Hobi dan tag , , . Tandai permalink.

7 Balasan ke Belajar Display Dot Matrix

  1. G-Cer berkata:

    mantep gan…
    tp ade yang pke bhsa assembly gk gan,,,???
    lengkap sma tutor nya,,,
    lw ade mhon inbox ny gan,,,
    di tunggu,,,

  2. syahril berkata:

    GImana kalo programnya bikin text statis, misal “WELCOME”. Apa shift registernya ditambah sesuai banyaknya dot matrik (8×8) untuk bagian kolomnya? Mohon dibalas ,Please

  3. tikno berkata:

    gan..klo daerah bekasi ada gak ya kursus dot matrix,pingin bangeeet niiih….trm ksh

  4. kaku berkata:

    mas bisa minta schematic atau proteus nya gak mas,,
    buat tugas kuliah ni,
    hehehe..

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s