MASIGNALPHAS2101
6680671983845063762

Tutorial Running Text dengan P10

Tutorial Running Text dengan P10
Add Comments
12/23/2020

Display Panel P10 merupakan sebuah display berisi kumpulan led-led yang disusun secara matrix.

Fungsinya untuk menampilkan informasi berupa teks maupun gambar yang dapat diatur tampilannya sesuai kebutuhan. Tentunya sudah sering kan melihat teks-teks berjalan di sepanjang jalan? Nah itu merupakan salah satunya bisa menggunakan P10 LED Matrix ini.

Bagaimana Cara Menggunakannya pada Arduino?

Sebenarnya cukup mudah dan simple, setelah anda mempunyai P10 selanjutnya hanya menambahkan sebuah komponen yaitu DMD Connector. Konektor ini berfungsi untuk mengghubungkan P10 dan Arduino, lebih lengkapnya kita bahas di bawah ini.

Komponen :
  1. Arduino Uno.
  2. P10 Led Matrix.
  3. Kabel DMD.
Skematik
Susunlah komponen diatas seperti rangkaian berikut:
Rangkaian Komunikasi P10 dengan Arduino
Pemasangan kabel DMD jangan sampai terbalik, silahkan lihat pada gambar di atas terdapat tanda panah. Itu merupakan tanda dari kabel DMD dimaksudkan agar tidak  terbalik. Lihatlah gambar berikut:
Connection Pin DMD
PinOut Kabel DMD
Pin pada Display Panel P10
Library
Library yang dibutuhkan dalam tutorial kali ini adalah sebagai berikut:
Masukan Library diatas di File instalasi Arduino IDE.
Baca :
Program
Setelah memahami Skematik dan sudah memasukan library yang dibutuhkan, langkah selanjutnya adalah memasukkan program dibawah ini:
#include <SPI.h>        //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h>        //
#include <TimerOne.h>   //
#include "SystemFont5x7.h"
#include "Arial_black_16.h"

//Fire up the DMD library as dmd
#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);

/*--------------------------------------------------------------------------------------
  Interrupt handler for Timer1 (TimerOne) driven DMD refresh scanning, this gets
  called at the period set in Timer1.initialize();
--------------------------------------------------------------------------------------*/
void ScanDMD()
{ 
  dmd.scanDisplayBySPI();
}

/*--------------------------------------------------------------------------------------
  setup
  Called by the Arduino architecture before the main loop begins
--------------------------------------------------------------------------------------*/
void setup(void)
{

   //initialize TimerOne's interrupt/CPU usage used to scan and refresh the display
   Timer1.initialize( 5000 );           //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker.
   Timer1.attachInterrupt( ScanDMD );   //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()

   //clear/init the DMD pixels held in RAM
   dmd.clearScreen( true );   //true is normal (all pixels off), false is negative (all pixels on)

}

/*--------------------------------------------------------------------------------------
  loop
  Arduino architecture main loop
--------------------------------------------------------------------------------------*/
void loop(void)
{
   byte b;
   
   // 10 x 14 font clock, including demo of OR and NOR modes for pixels so that the flashing colon can be overlayed
   dmd.clearScreen( true );
   dmd.selectFont(Arial_Black_16);
   dmd.drawChar(  0,  3, '2', GRAPHICS_NORMAL );
   dmd.drawChar(  7,  3, '3', GRAPHICS_NORMAL );
   dmd.drawChar( 17,  3, '4', GRAPHICS_NORMAL );
   dmd.drawChar( 25,  3, '5', GRAPHICS_NORMAL );
   dmd.drawChar( 15,  3, ':', GRAPHICS_OR     );   // clock colon overlay on
   delay( 1000 );
   dmd.drawChar( 15,  3, ':', GRAPHICS_NOR    );   // clock colon overlay off
   delay( 1000 );
   dmd.drawChar( 15,  3, ':', GRAPHICS_OR     );   // clock colon overlay on
   delay( 1000 );
   dmd.drawChar( 15,  3, ':', GRAPHICS_NOR    );   // clock colon overlay off
   delay( 1000 );
   dmd.drawChar( 15,  3, ':', GRAPHICS_OR     );   // clock colon overlay on
   delay( 1000 );

   dmd.drawMarquee("Scrolling Text",14,(32*DISPLAYS_ACROSS)-1,0);
   long start=millis();
   long timer=start;
   boolean ret=false;
   while(!ret){
     if ((timer+30) < millis()) {
       ret=dmd.stepMarquee(-1,0);
       timer=millis();
     }
   }
   // half the pixels on
   dmd.drawTestPattern( PATTERN_ALT_0 );
   delay( 1000 );

   // the other half on
   dmd.drawTestPattern( PATTERN_ALT_1 );
   delay( 1000 );
   
   // display some text
   dmd.clearScreen( true );
   dmd.selectFont(System5x7);
   for (byte x=0;x<DISPLAYS_ACROSS;x++) {
     for (byte y=0;y<DISPLAYS_DOWN;y++) {
       dmd.drawString(  2+(32*x),  1+(16*y), "freet", 5, GRAPHICS_NORMAL );
       dmd.drawString(  2+(32*x),  9+(16*y), "ronic", 5, GRAPHICS_NORMAL );
     }
   }
   delay( 2000 );
   
   // draw a border rectangle around the outside of the display
   dmd.clearScreen( true );
   dmd.drawBox(  0,  0, (32*DISPLAYS_ACROSS)-1, (16*DISPLAYS_DOWN)-1, GRAPHICS_NORMAL );
   delay( 1000 );
   
   for (byte y=0;y<DISPLAYS_DOWN;y++) {
     for (byte x=0;x<DISPLAYS_ACROSS;x++) {
       // draw an X
       int ix=32*x;
       int iy=16*y;
       dmd.drawLine(  0+ix,  0+iy, 11+ix, 15+iy, GRAPHICS_NORMAL );
       dmd.drawLine(  0+ix, 15+iy, 11+ix,  0+iy, GRAPHICS_NORMAL );
       delay( 1000 );
   
       // draw a circle
       dmd.drawCircle( 16+ix,  8+iy,  5, GRAPHICS_NORMAL );
       delay( 1000 );
   
       // draw a filled box
       dmd.drawFilledBox( 24+ix, 3+iy, 29+ix, 13+iy, GRAPHICS_NORMAL );
       delay( 1000 );
     }
   }

   // stripe chaser
   for( b = 0 ; b < 20 ; b++ )
   {
      dmd.drawTestPattern( (b&1)+PATTERN_STRIPE_0 );
      delay( 200 );      
   }
   delay( 200 );      
   }
Program diatas didapat dari Arduino IDE, klik File > Examples > DMD > dmd_demo
Setelah berhasil terupload, makan panel display p10 akan menampilkan Animasi dan Running Text seperti pada gambar berikut:
Hasil Test 1 Panel Display P10 Sukses
Jika kecerahan pada Panel Displaynya kurang karena hanya menggunakan power input dari Arduino, anda bisa menambahkan Power Input 5 Volt DC yang bisa didapat dari adaptor Hp seperti berikut:
Adaptor tambahan

Pastikan sumber tegangan 5 volt DC dan tidak terbalik...!
Jika ingin merubah Text, cari kode berikut:
dmd.drawMarquee("Scrolling Text",14,(32*DISPLAYS_ACROSS)-1,0);
Ubahlah "Scrolling Text" diatas sesuai keinginan...

Untuk Hasil dari tutorial ini bisa juga dilihat pada video berikut:

Demikian pembahasan kali ini, semoga bermanfaat. Silahkan berkomentar jika menemui kendala di bawah ini. Terima kasih.
Hestech Indonesia

Innovasi di bidang Teknologi, Listrik, Teknik Komputer dan gaya Hidup. Info lainnya tentang praktik konservasi berbasis Sains, inovasi, dan kearifan lokal

  1. Link untuk download dmd dan timer one nya mati gan.

    ReplyDelete
    Replies
    1. Kak bagi file library dmd dan timerOne dong,untuk selesaikan project saya,saya ada tugas kuliah🙏

      Delete
  2. Link download Library sudah diperbaharui. silahkan di unduh.

    ReplyDelete
  3. terimakasih atas info dan masukkannya.
    link library sudah dapat di unduh.

    ReplyDelete
  4. Apakah bisa menggunakan Arduino Nano, kak? Adakah coding atau diagram koneksi yg perlu diubah kalau menggunakan Arduino Nano?
    Terima kasih..

    ReplyDelete
    Replies
    1. Tentu saja bisa.
      Tinggal disesukan saja pin yang akan digunakan sesuai dengan tutorial.

      Delete
  5. ini kenapa kok cuma nyala saja kak
    gk ada animasinya

    ReplyDelete
    Replies
    1. Kalau mengikuti tutorial diatas dengan benar akan keluar animasinya. Tinggal menyesuaikan code programnya saja.

      Delete
  6. Klo listrik mati jam kembali ke awal ato otomatis menyesuaikan mas..

    ReplyDelete
    Replies
    1. Jika mengiginkan jam secara real time bisa menambahkan dengan modul RTC boss

      Delete
  7. Cara menghilangkan animasi selain text gimana

    ReplyDelete
  8. permisi kalau pin dmd pakai arduino mega sama ga ya? saya ga bisa masuk

    ReplyDelete