Professional Documents
Culture Documents
A. TUJUAN
1. Membuat aplikasi system tampilan karakter yang berupa LED Dot Matrik dengan
menggunakan mikrokontroler Arduino
2. Membuat program untuk menampilkan karekter pada media LED Dot Matrik
B. DASAR TEORI
LED Dot Matrix merupakan salah satu aplikasi dari LED yang disusun secara Matrix dan
dapat berfungsi untuk menampilkan berbagai macam karakter. Terdapat berbagai macam
tampilan yang dapat dihasilkan melalui LED Dot Matrix. Pada LED Dot Matrix 5×7 terdapat 5
pin kolom dan 7 pin baris yang digunakan untuk menentukan kondisi masing-masing LED. Jika
salah satu bagian menjadi input maka bagian yang lain harus sebagai output atau sebaliknya.
Maksudnya salah satu bagian akan menjadi tempat masuknya arus dan bagian yang lain akan
menjadi tempat keluarnya arus tergantung pada kondisi posisi Anoda/katoda LED yang
terpasang didalamnya. Jika Anoda dari LED terpasang pada bagian kolom maka semua pin pada
bagian kolom merupakn tempat masuknya arus dan bagian baris merupakan tempat keluarnya
arus. Apabila bagian kolom diberi arus atau diberi data 1 (high) maka kolom tersebut aktif
atau LED pada kolom tersebut siap menyala. LED yang menyala akan tergantung pada bagian
baris yang diberi data 0 (low).
.
Gambar 9.1 LED dot matrik
Dot matrik 5 x7 memilki arti bahwa 1 dot matrik berukuran 5 kolom x 7 baris susunan
LED. Jadi 1 dot matriki terdapat 35 buah LED. Berikut adalah ilustrasi 3 buah dot matrik yang
sudah terpakai untuk menampilkan beberapa karakter. Setiap karakter antar dot matrik
sebaiknya diberi spasi agar karakter yang tampil terlihat jelas dan tidak tampak berdekatan.
Dalam setiap display dotmatrik selalu terdapat istilah baris dan kolom. Jumlah baris selalu sama
dengan 7. Namun jumlah kolom sebanyak jumlah dot matrik dikali dengan 5 kolom/dot matrik.
Pada gambar 1 di atas terdapat 15 kolom.
Prinsip kerja dot matrik sebenarnya menggunakan system Scanning kolom. Scanning
kolom adalah pada satu waktu dari sekian banyak kolom pada gambar 1 hanya satu kolom yang
menyala merah. Karena proses pengulangan penyalaan kolom dari kolom 1 sampai kolom 15
begitu cepat dan berulang-ulang maka huruf ABH tampak nyala bersamaan. Proses scanning
kolom yang cepat menipu mata atau penglihatan manusia sehingga mata menangkap huruf ABH
seolah-olah menyala secara bersamaan. Apabila proses scanning kolom dipelankan sampai mata
dapat melihat, maka pergeseran penyalaan kolom akan terlihat satu persatu.
› Begitu juga untuk kolom kedua, ketika kolom kedua diberi tegangan maka
pada baris bit yg diberikan adalah “1101011”
› Dan seterusnya, ketika kolom nya mencapai ujung maka akan diulang ke
kolom 1 lagi
DRIVER
› IC driver : UDN2981A dan ULN2803A
› UDN2981A : driver ke transistor sekaligus mengatur anoda LED.
› ULN2803A : driver ke transistor sekaligus mengatur katoda LED.
C. LANGKAH PERCOBAAN
› Rangkaian
- Interface Led Dot Matriks dengan Driver
› Hardware
Arduino Uno Board
1x Breadboard
1x LED Dot Matrik 5x7
Kabel jumper
› Program 1
int idx = 0; unsigned long last;
void setup() {
last = millis();
//Kolom
pinMode( 9, OUTPUT );
pinMode( 10, OUTPUT );
pinMode( 11, OUTPUT );
pinMode( 12, OUTPUT );
pinMode( 13, OUTPUT );
//Baris
pinMode( 2, OUTPUT );
pinMode( 3, OUTPUT );
pinMode( 4, OUTPUT );
pinMode( 5, OUTPUT );
pinMode( 6, OUTPUT );
pinMode( 7, OUTPUT );
pinMode( 8, OUTPUT );
for( int r = 0; r < 7; r++) {
digitalWrite( r + 2, LOW );
}
for( int c = 0; c < 5; c++) {
digitalWrite( c + 9, HIGH);
}
}
byte leds[7][5];
void setPattern( byte pattern[20][5], int idx ) {
for( int r =0; r < 7; r++) {
for( int c = 0; c < 5; c++) {
leds[r][c] = pattern[r + idx][c];
}
}
}
void draw() {
for( int r =0; r < 7; r ++ ) {
digitalWrite( r + 2, HIGH );
for( int c=0; c < 5; c ++ ) {
digitalWrite( 13 - c, ( leds[r][c] == 1 ? LOW : HIGH ));
}
delayMicroseconds(900);
digitalWrite( r + 2, LOW );
}
}
void loop() {
if ( millis() - last > 400 ) {
idx = (idx == 0 ? 7 : 0);
last = millis();
}
byte tmp[14][5] = {
{ 0,0,0,0,0},
{ 0,1,0,1,0},
{ 0,0,0,0,0},
{ 0,1,1,1,0},
{ 0,1,0,1,0},
{ 0,1,1,1,0},
{ 0,0,0,0,0},
{ 0,0,0,0,0},
{ 0,1,0,1,0},
{ 0,0,0,0,0},
{ 0,0,0,0,0},
{ 0,1,1,1,0},
{ 0,0,0,0,0},
{ 0,0,0,0,0},
};
setPattern( tmp, idx );
draw();
}
› Program 2
#include <FrequencyTimer2.h>
#define SPACE { \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0} \
}
#define H { \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{1, 1, 1, 1, 1}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1} \
}
#define E { \
{1, 1, 1, 1, 1}, \
{1, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \
{1, 1, 1, 1, 0}, \
{1, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \
{1, 1, 1, 1, 1} \
}
#define small_E { \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \
{0, 1, 1, 1, 0}, \
{1, 0, 0, 0, 1}, \
{1, 1, 1, 1, 0}, \
{1, 0, 0, 0, 0}, \
{0, 1, 1, 1, 0} \
}
#define L { \
{1, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \
{1, 1, 1, 1, 1} \
}
#define small_L { \
{0, 1, 1, 0, 0}, \
{0, 0, 1, 0, 0}, \
{0, 0, 1, 0, 0}, \
{0, 0, 1, 0, 0}, \
{0, 0, 1, 0, 0}, \
{0, 0, 1, 0, 0}, \
{0, 1, 1, 1, 0} \
}
#define O { \
{0, 1, 1, 1, 0}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{0, 1, 1, 1, 0} \
}
#define small_O { \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \
{0, 1, 1, 1, 0}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{0, 1, 1, 1, 0} \
}
#define small_W { \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{1, 0, 1, 0, 1}, \
{1, 0, 1, 0, 1}, \
{0, 1, 0, 1, 0} \
}
#define small_R { \
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \
{0, 1, 0, 1, 1}, \
{0, 1, 1, 0, 0}, \
{0, 1, 0, 0, 0}, \
{0, 1, 0, 0, 0}, \
{0, 1, 0, 0, 0} \
}
#define small_D { \
{0, 0, 0, 0, 1}, \
{0, 0, 0, 0, 1}, \
{0, 1, 1, 0, 1}, \
{1, 0, 0, 1, 1}, \
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \
{0, 1, 1, 1, 1} \
}
byte col = 0;
byte leds[5][7]; // columns x rows
int pins[13]= {-1, 2, 9, 3, 11, 12, 13, 5, 6, 10, 4, 8, 7};
int cols[5] = {pins[1], pins[3], pins[10], pins[7], pins[8]};
int rows[7] = {pins[12], pins[11], pins[2], pins[9], pins[4], pins[5], pins[6]};
const int numPatterns = 12;
byte patterns[numPatterns][7][5] = {
SPACE, H, small_E, small_L, small_L, small_O,
SPACE, small_W, small_O, small_R, small_L, small_D
};
int pattern = 0;
void setup()
{
for (int i = 1; i <= 12; i++) {
pinMode(pins[i], OUTPUT);
}
for (int i = 1; i <= 5; i++) {
digitalWrite(cols[i - 1], LOW);
}
for (int i = 1; i <= 7; i++) {
digitalWrite(rows[i - 1], LOW);
}
clearLeds();
FrequencyTimer2::disable();
FrequencyTimer2::setPeriod(2000);
FrequencyTimer2::setOnOverflow(display);
setPattern(pattern);
}
void loop()
{
pattern = ++pattern % numPatterns;
slidePattern(pattern, 100);
}
void clearLeds()
{
// Clear display array
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 7; j++) {
leds[i][j] = 0;
}
}
}
void setPattern(int pattern)
{
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 7; j++) {
leds[i][j] = patterns[pattern][j][i];
}
}
}
void slidePattern(int pattern, int del)
{
for (int newcol = 0; newcol <= 4; newcol++) {
// shift the first 4 columns left
for (int row = 0; row <= 6; row++)
for (int col = 0; col <= 3; col++)
leds[col][row] = leds[col+1][row];
for (int row = 0; row <= 6; row++)
leds[4][row] =
patterns[pattern][row][newcol];
delay(del);
}
}
void display()
{
// Turn whole previous column off:
digitalWrite(cols[col], LOW);
col++;
if (col == 5) {
col = 0;
}
for (int row = 0; row < 7; row++) {
if (leds[col][row] == 1) {
digitalWrite(rows[row], LOW); // Turn on this led
}
else {
digitalWrite(rows[row], HIGH); // Turn off this led
}
}
digitalWrite(cols[col], HIGH);
}
Latihan :
1. Buatlah program untuk tulisan (huruf A) berjalan dari kiri ke kanan.
2. Buatlah program untuk menampilkan 2,T,A,B
3. Buatlah program satu angka paling belakang dari NRP anda menggunakan metode
scanning
4. Buatlah program untuk menampilkan karakter menggunakan IC Driver
HASIL PERCOBAAN PRAKTIKUM LED DOT MATRIKS
1. PROGRAM 1
Source Code :
int idx = 0; unsigned long last; leds[r][c] = pattern[r +
void setup() { idx][c];
last = millis(); }
//Kolom }
pinMode( 9, OUTPUT ); }
pinMode( 10, OUTPUT );
pinMode( 11, OUTPUT ); void draw() {
pinMode( 12, OUTPUT );
pinMode( 13, OUTPUT ); for( int r =0; r < 7; r ++ ) {
//Baris digitalWrite( r + 2, HIGH );
pinMode( 2, OUTPUT ); for( int c=0; c < 5; c ++ ) {
pinMode( 3, OUTPUT ); digitalWrite( 13 - c, (
pinMode( 4, OUTPUT ); leds[r][c] == 1 ? LOW : HIGH ));
pinMode( 5, OUTPUT ); }
int idx = 0; unsigned long last; delayMicroseconds(900);
void setup() { digitalWrite( r + 2, LOW );
last = millis(); }
//Kolom }
pinMode( 9, OUTPUT );
pinMode( 10, OUTPUT ); void loop() {
pinMode( 11, OUTPUT ); if ( millis() - last > 400 ) {
pinMode( 12, OUTPUT ); idx = (idx == 0 ? 7 : 0);
pinMode( 13, OUTPUT ); last = millis();
//Baris }
pinMode( 2, OUTPUT ); byte tmp[14][5] = {
pinMode( 3, OUTPUT ); { 0,0,0,0,0},
pinMode( 4, OUTPUT ); { 0,1,0,1,0},
pinMode( 5, OUTPUT ); { 0,0,0,0,0},
pinMode( 6, OUTPUT ); { 0,1,1,1,0},
pinMode( 7, OUTPUT ); { 0,1,0,1,0},
pinMode( 8, OUTPUT ); { 0,1,1,1,0},
for( int r = 0; r < 7; r++) { { 0,0,0,0,0},
digitalWrite( r + 2, LOW ); { 0,0,0,0,0},
} { 0,1,0,1,0},
for( int c = 0; c < 5; c++) { { 0,0,0,0,0},
digitalWrite( c + 9, HIGH); { 0,0,0,0,0},
} { 0,1,1,1,0},
} { 0,0,0,0,0},
{ 0,0,0,0,0},
byte leds[7][5]; };
void setPattern( byte
pattern[20][5], int idx ) { setPattern( tmp, idx );
for( int r =0; r < 7; r++) { draw();
for( int c = 0; c < 5; c++) { }
Hasil :
2. PROGRAM 2
Source Code :
#include <FrequencyTimer2.h> {0, 1, 1, 1, 0} \
#define SPACE { \ }
{0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \ #define small_O { \
{0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0}, \
{0, 0, 0, 0, 0}, \ {0, 1, 1, 1, 0}, \
{0, 0, 0, 0, 0}, \ {1, 0, 0, 0, 1}, \
{0, 0, 0, 0, 0} \ {1, 0, 0, 0, 1}, \
} {1, 0, 0, 0, 1}, \
#define H { \ {0, 1, 1, 1, 0} \
{1, 0, 0, 0, 1}, \ }
{1, 0, 0, 0, 1}, \ #define small_W { \
{1, 0, 0, 0, 1}, \ {0, 0, 0, 0, 0}, \
{1, 1, 1, 1, 1}, \ {0, 0, 0, 0, 0}, \
{1, 0, 0, 0, 1}, \ {1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \ {1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1} \ {1, 0, 1, 0, 1}, \
} {1, 0, 1, 0, 1}, \
#define E { \ {0, 1, 0, 1, 0} \
{1, 1, 1, 1, 1}, \ }
{1, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \ #define small_R { \
{1, 1, 1, 1, 0}, \ {0, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \ {0, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \ {0, 1, 0, 1, 1}, \
{1, 1, 1, 1, 1} \ {0, 1, 1, 0, 0}, \
} {0, 1, 0, 0, 0}, \
{0, 1, 0, 0, 0}, \
#define small_E { \ {0, 1, 0, 0, 0} \
{0, 0, 0, 0, 0}, \ }
{0, 0, 0, 0, 0}, \ #define small_D { \
{0, 1, 1, 1, 0}, \ {0, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \ {0, 0, 0, 0, 1}, \
{1, 1, 1, 1, 0}, \ {0, 1, 1, 0, 1}, \
{1, 0, 0, 0, 0}, \ {1, 0, 0, 1, 1}, \
{0, 1, 1, 1, 0} \ {1, 0, 0, 0, 1}, \
} {1, 0, 0, 0, 1}, \
#define L { \ {0, 1, 1, 1, 1} \
{1, 0, 0, 0, 0}, \ }
{1, 0, 0, 0, 0}, \ byte col = 0;
{1, 0, 0, 0, 0}, \ byte leds[5][7]; // columns x
{1, 0, 0, 0, 0}, \ rows
{1, 0, 0, 0, 0}, \
{1, 0, 0, 0, 0}, \ int pins[13]= {-1, 2, 9, 3, 11,
{1, 1, 1, 1, 1} \ 12, 13, 5, 6, 10, 4, 8, 7};
} int cols[5] = {pins[1], pins[3],
pins[10], pins[7], pins[8]};
#define small_L { \
{0, 1, 1, 0, 0}, \ int rows[7] = {pins[12],
{0, 0, 1, 0, 0}, \ pins[11], pins[2], pins[9],
{0, 0, 1, 0, 0}, \ pins[4], pins[5], pins[6]};
{0, 0, 1, 0, 0}, \
{0, 0, 1, 0, 0}, \ const int numPatterns = 12;
{0, 0, 1, 0, 0}, \ byte patterns[numPatterns][7][5]
{0, 1, 1, 1, 0} \ = {
} SPACE, H, small_E, small_L,
#define O { \ small_L, small_O,
{0, 1, 1, 1, 0}, \ SPACE, small_W, small_O,
{1, 0, 0, 0, 1}, \ small_R, small_L, small_D
{1, 0, 0, 0, 1}, \ };
{1, 0, 0, 0, 1}, \
{1, 0, 0, 0, 1}, \ int pattern = 0;
{1, 0, 0, 0, 1}, \
void setup()
{ patterns[pattern][row][newcol];
for (int i = 1; i <= 12; i++) {
pinMode(pins[i], OUTPUT); delay(del);
} }
for (int i = 1; i <= 5; i++) }
{ void display()
digitalWrite(cols[i - 1], {
LOW); // Turn whole previous column
} off:
for (int i = 1; i <= 7; i++) digitalWrite(cols[col], LOW);
{ col++;
digitalWrite(rows[i - 1], if (col == 5) {
LOW); col = 0;
} }
clearLeds(); for (int row = 0; row < 7;
row++) {
FrequencyTimer2::disable(); if (leds[col][row] == 1) {
digitalWrite(rows[row],
FrequencyTimer2::setPeriod(2000); LOW); // Turn on this led
}
FrequencyTimer2::setOnOverflow(di else {
splay); digitalWrite(rows[row],
HIGH); // Turn off this led
setPattern(pattern); }
} }
void loop()
{ digitalWrite(cols[col], HIGH);
pattern = ++pattern % }
numPatterns;
slidePattern(pattern, 100);
}
void clearLeds()
{
// Clear display array
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 7; j++) {
leds[i][j] = 0;
}
}
}
Hasil :
2. LATIHAN 2 : MENAMPILKAN 2,T,A,B
Source Code :
#include <LedControl.h> lc.clearDisplay(0); //
and clear the display
int DIN = 12; }
int CS = 11;
int CLK = 10; void loop(){
printEduc8s();
byte Dua[8]= lc.clearDisplay(0);
{0x7C,0x7C,0x0C,0x7C,0x7C,0x60,0x delay(1000);
7C,0x7C}; }
byte T[8]=
{0x7E,0x7E,0x18,0x18,0x18,0x18,0x void printEduc8s()
18,0x18}; {
byte A[8]= printByte(Dua);delay(500);
{0x18,0x3C,0x66,0x66,0x7E,0x7E,0x printByte(T);delay(500);
66,0x66}; printByte(A);delay(500);
byte B[8]= printByte(B);delay(500);
{0x7C,0x7E,0x66,0x7C,0x7C,0x66,0x }
7E,0x7C};
void printByte(byte character [])
LedControl {
lc=LedControl(DIN,CLK,CS,0); int i = 0;
for(i=0;i<8;i++)
void setup(){ {
lc.shutdown(0,false); lc.setRow(0,i,character[i]);
//The MAX72XX is in power-saving }
mode on startup }
lc.setIntensity(0,15); //
Set the brightness to maximum
value
Hasil :
DUINO1
U1
microcontrolandos.blogspot.com
1 14
DIN A
12 16
LOAD B
13 20
CLK C
23
AREF D
21
E
13 15
PB5/SCK F
12 17
PB4/MISO G
RESET 11 22
~PB3/MOSI/OC2A DP
10
~ PB2/SS/OC1B
9 2
~ PB1/OC1A DIG0
8 11
PB0/ICP1/CLKO DIG1
6
ATMEGA328P-PU
1121
DIGITAL (~PWM)
DIG2
7 7
ANALOG IN
PD7/AIN1 DIG3
6 3
A0 ~ PD6/AIN0 DIG4
PC0/ADC0 5 10
A1 ~ PD5/T1 DIG5
PC1/ADC1 4 18 5
A2 PD4/T0/XCK ISET DIG6
PC2/ADC2 3 24 8
A3 ~ PD3/INT1 DOUT DIG7
PC3/ADC3 2
A4 PD2/INT0
PC4/ADC4/SDA 1 MAX7219
A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD
ARDUINO UNO R3
Hasil :
DUINO1
U1
microcontrolandos.blogspot.com
1 14
DIN A
12 16
LOAD B
13 20
CLK C
23
AREF D
21
E
13 15
PB5/SCK F
12 17
PB4/MISO G
RESET 11 22
~PB3/MOSI/OC2A DP
10
~ PB2/SS/OC1B
9 2
~ PB1/OC1A DIG0
8 11
PB0/ICP1/CLKO DIG1
6
ATMEGA328P-PU
1121
DIGITAL (~PWM)
DIG2
7 7
ANALOG IN
PD7/AIN1 DIG3
6 3
A0 ~ PD6/AIN0 DIG4
PC0/ADC0 5 10
A1 ~ PD5/T1 DIG5
PC1/ADC1 4 18 5
A2 PD4/T0/XCK ISET DIG6
PC2/ADC2 3 24 8
A3 ~ PD3/INT1 DOUT DIG7
PC3/ADC3 2
A4 PD2/INT0
PC4/ADC4/SDA 1 MAX7219
A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD
ARDUINO UNO R3
Hasil :
DUINO1
U1
microcontrolandos.blogspot.com
1 14
DIN A
12 16
LOAD B
13 20
CLK C
23
AREF D
21
E
13 15
PB5/SCK F
12 17
PB4/MISO G
RESET 11 22
~PB3/MOSI/OC2A DP
10
~ PB2/SS/OC1B
9 2
~ PB1/OC1A DIG0
8 11
PB0/ICP1/CLKO DIG1
6
ATMEGA328P-PU
1121
DIGITAL (~PWM)
DIG2
7 7
ANALOG IN
PD7/AIN1 DIG3
6 3
A0 ~ PD6/AIN0 DIG4
PC0/ADC0 5 10
A1 ~ PD5/T1 DIG5
PC1/ADC1 4 18 5
A2 PD4/T0/XCK ISET DIG6
PC2/ADC2 3 24 8
A3 ~ PD3/INT1 DOUT DIG7
PC3/ADC3 2
A4 PD2/INT0
PC4/ADC4/SDA 1 MAX7219
A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD
ARDUINO UNO R3
5. LATIHAN 5 : MEMBUAT BENTUK-BENTUK UNIK
Source Code :
#include <LedControl.h>
byte gerak1[8]=
{0xFF,0x81,0xBD,0xA5,0xA5,0xBD,0x
81,0xFF};
byte gerak2[8]=
{0x00,0x7E,0x42,0x5A,0x5A,0x42,0x
7E,0x00};
LedControl
lc=LedControl(DIN,CLK,CS,0);
void setup(){
lc.shutdown(0,false);
//The MAX72XX is in power-saving
mode on startup
lc.setIntensity(0,15); //
Set the brightness to maximum
value
lc.clearDisplay(0); //
and clear the display
}
void loop(){
printEduc8s();
delay(100);
}
void printEduc8s()
{
printByte(gerak1);delay(100);
printByte(gerak2);delay(100);
}
Pada percobaan antarmuka mikrokontroller dengan LED Dot Matrik, kita membuat
aplikasi sistem tampilan karakter yang berupa LED Dot Matrik dengan
menggunakan mikrokontroler arduino dan membuat program untuk menampilkan
karakter pada media LED Dot Matrik.
Pada percobaan pertama, dilakukan inisialisasi untuk baris dan kolom dari LED Dot
Matrik. Pada percobaan ini, ditampilkan suatu pola pad LED dengan melakukakn
scanning LED untuk nilai bit untuk membentuk pola yang dapat dilihat pada hasil
percobaan. Pada perobaan kedua, digunakan program untuk menamilkan tulisan
hello world yang dapat berjalan. Pada program, dilakukan scanning LED untuk nilai
data dari tiap tiap karakter yang membentuk Hello World. Selanjutnya dilakukan
inisialisasi pin untuk baris dan kolom. Kemudian pada void serup dan void loop
dilakukan beberapa looping yang mengatur jalannya karakter Hello World dari kanan
ke kiri.
Selanjutnya untuk latihan pertama, kita membuat animasi tulisan berjalan dari kiri ke
kanan pada LED Dot Matrik. Pada program, dilakukan scanning pada LED untuk
dapat menampilkan karakter, sehingga terdapat variabel array a1[], a[2], dan
seterusnya yang merupakan nilai data dari karakter. Pada void setup, digunakan
fungsi dari library LedControl.h seperti lc.shutdown untuk mengatur power saving
mode, lc.setIntensity(0,15) untuk mengatur kecerahan dari LED dan lc.clearDisplay
untuk mengapus isi dari layar LED. Pada void loop, dipanggil fungsi printEduc8s,
lalu setelah itu layar di clear dengan delay sebesar 1000 ms. Pada fungsi printEduc8s,
dipanggil fungsi printByte dengan parameter array dari nilai data karakter yaitu
a1,a2, dan seterusnya dengan delay 500 ms. Selanjutnya di fungsi printByte,
dilakukan looping dari 0 sampai 8 untuk dapat menggeser karakter. Kemudian untuk
latihan kedua yaitu untuk menampilkan karakter 2,T,A, dan B. Untuk menampilkan
karakter tersebut, dilakukan scanning LED seperti sebelumnya yaitu dengan
menggunakan nilai data dari masing masing karakter. Lalu pada void loop
ditampilkan seperti sebelumnya dengan memanggil fungsi lain yang mengatur
tampilan tiap tiap karakter. Latihan ini hampir sama dengan latihan latihan
selanjutnya yaitu untuk menampilkan nrp belakang, menampilkan huruf abjad A-Z
dan menampilkan karakter unik. Hanya saja terdapat perbedaan saat scanning LED
untuk nilai data dari masing masing karakter yang ingin ditampilkan.
Kesimpulan :
Pada percobaan antarmuka mikrokontroller dengan LED Dot Matrik dapat
disimpulkan bahwa :
Untuk menampilkan suatu karakter pada LED Dot Matrik dilakukan scanning
pada LED dengan mengatur nilai data dari karakter yang ingin ditampilkan
Dalam membuat program untuk LED Dot matrik, terdapat file library yang
memiliki beberapa fungsi seperti lc.clearDisplay, lc.shutdown,
lc.setIntensity, dan lain lain yang dapat digunakan untuk mengatur tampilan
pada LED