Thursday, November 22, 2018

Membuat Tulisan Berjalan dengan Border pada P10 di Arduino Uno

Pendahuluan

kali ini saya akan membuat tutorial pemrograman Arduino, yaitu membuat tulisan berjalan atau scrolling text yang memiliki border. tulisan ini dibuat dalam rangka ketika saya sendiri awalnya cukup kesulitan dalam membuat tulisan teks berjalan dengan border, dengan mengotak atik fungsi yang sudah ada pada lib DMD panel P10 yang dikeluarkan oleh freetronics. namun kenyataannya tidak perlu mengotak atik fungsi yang sudah ada, cukup dengan melakukan algoritma yang sederhana. 

1. Panel P10

Panel P10 merupakan dot matriks yang dapat digunakana secara praktrs. terdiri dari 32 kolom dan 16 baris. sudah terdapat kontroller didalamnya dan berkomunikasi dengan SPI ke Arduino Uno. berikut merupakan interface Arduino ke Panel P10:


2. Algorima Pemrograman

untuk algoritma pemrograman yaitu dengan mengambar border yaitu dengan fungsi drawBox. kemudian jika kita menggunakan fungsi drawMarquee dan stepMarquee, maka border akan hilang. sehingga perlu cara lain untuk membuat teks berjalan. yaitu cukup sederhana dengan menggunakan fungsi drawString untuk menulis array char ke panel p10. 

drawString kita buat dimulai dari koordinat terakhir yaitu X =  63, koordinat Y disesuaikan dengan font, pada kasus saya yang menggunakan system font 5 x7 menggunakan Y = 3 dan gambar border kembali dengan drawBox,  beri delay secukupnya (100ms) kemudian ulangi sebanyak jumlah lebar karakter kali, dengan koordinat X dikurangi satu setiap looping, nilai setiap lebar karakter bisa kita dapatkan dari fungsi charWidth dalam dmd. berikut source lengkapnya:



#include <SPI.h>        
#include <DMD.h>        
#include <TimerOne.h>   
#include "SystemFont5x7.h"
#include "Arial_black_16.h"

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

void ScanDMD()
{ 
 dmd.scanDisplayBySPI();
}


void setup(void)
{  
  Timer1.initialize( 5000 );           
  Timer1.attachInterrupt( ScanDMD );     
  dmd.clearScreen( true );  
}


void loop(void)
{ 
  dmd.clearScreen( true );
 // dmd.selectFont(Arial_Black_16);
  dmd.selectFont(System5x7);

char teks[] = "Scrolling Text";
int lebarTeks = 0;
for (int i = 0; i < sizeof(teks)+1; i++) {
  lebarTeks += dmd.charWidth(teks[i]) + 1;
}
dmd.drawBox(  0,  0, (32*DISPLAYS_ACROSS)-1, (16*DISPLAYS_DOWN)-1, GRAPHICS_NORMAL );
for (int i = 0; i<lebarTeks; i++) {
  dmd.drawString (63-i, 3, teks, sizeof(teks), GRAPHICS_NORMAL);
  dmd.drawBox(  0,  0, (32*DISPLAYS_ACROSS)-1, (16*DISPLAYS_DOWN)-1, GRAPHICS_NORMAL );
  delay(100);
} 
  
}

perlu di ingat library yang digunakan yaitu DMD dan Timerone. dan tempatkan pada folder library di folder Arduino.jika teman teman merasa kesulitan dalam mendapatkan file pendukung library diatas, kamu bisa dapatkan pada link berikut:

http://imamfisika.blogspot.com/2016/12/file-pendukung-pelatihan-smkn-29.html

berikut video hasilnya :


semoga bisa bermanfaat, jika ada pertanyaan bisa tinggalkan komentar dibawah ini. Terima Kasih.