Dot matrix adalah kumpulan LED yang tersusun secara baris matrix sehingga memiliki posisi x dan y. dengan adanya posisi fix ini maka LED dapat dikontrol nyalanya dengan melakukan pengontrolan posisi pin x dan y. dot matrix dapat menampilkan tampilan dengan variasi lebih banyak tergantung dari jumlah LED pada dot matrix tersebut. Dot matrix terdapat pada integrated output dan dapat digunakan dengan menghubungkan pin ke Arduino.
1. Kebutuhan
- Arduino Board
- Dot Matrix 8×8
- Kabel
2. Skematik
Gambar 1. skematik isi dari dot matrix,
nomor kolom dan baris serta nomor pin yang terletak pada angka yang di dalam, misal ingin menyalakan kolom 1 dan baris 1 maka berikan tegangan HIGH pada pin 13 dan berikan tegangan LOW pada pin 9 dot matrix.
Gambar 2. hubungan dot marix dengan pin Arduino,
perlu diperhatikan urutan pin dot matrix dengan urutan pin Arduino karena akan sangat menentukan posisi LED saat program dijalankan
3. Program
// deklarasi array posisi pin dot matrix disesuaikan dengan pin Arduino (nilai -1 adalah dummy agar array dimulai dari angka 1)
int pins[17]= {–1, A5, A4, A3, A2, 10, 11, 12, 13, 9, 8, 7, 6, 5, 4, 3, 2};
// deklarasi array kolom disesuaikan dengan posisi pin dot matrix
int cols[8] = {pins[13], pins[3], pins[4], pins[10], pins[6], pins[11], pins[15], pins[16]};
// deklarasi array baris disesuaikan dengan posisi pin dot matrix
int rows[8] = {pins[9], pins[14], pins[8], pins[12], pins[1], pins[7], pins[2], pins[5]};
void setup()
{
// set pin sebagai output
for(int i = 1; i <= 16; i++)
{
pinMode(pins[i], OUTPUT);
}
// set kolom menghasilkan output LOW
for(int i = 1; i <= 8; i++)
{
digitalWrite(cols[i – 1], LOW);
}
// set baris menghasilkan output LOW
for (int i = 1; i <= 8; i++)
{
digitalWrite(rows[i – 1], LOW);
}
}
void loop()
{
//perulangan untuk menyalakan kolom berurutan dari 1-8
for(int i = 1; i <= 8; i++)
{
digitalWrite(cols[i – 1], HIGH);
delay(100);
}
//perulangan untuk mematikan baris berurutan dari 1-8
for(int i = 1; i <= 8; i++)
{
digitalWrite(rows[i – 1], HIGH);
delay(100);
}
clear(); //set kolom dan baris menjadi LOW
//set baris menjadi HIGH agar semua lampu mati
for(int i = 1; i <= 8; i++)
{
digitalWrite(rows[i – 1], HIGH);
}
//perulangan untuk membuat animasi corner kolom dan baris menyala bersama
for(int i = 1; i <= 8; i++)
{
digitalWrite(cols[i – 1], HIGH);
digitalWrite(rows[i – 1], LOW);
delay(100);
}
clear();//set kolom dan baris menjadi LOW
//set baris menjadi HIGH agar semua lampu mati
for(int i = 1; i <= 8; i++)
{
digitalWrite(rows[i – 1], HIGH);
}
//perulangan untuk animasi titik LED yang berjalan dari pojok ke pojok
for(int i = 1; i <= 8; i++)
{
digitalWrite(cols[i – 1], HIGH);
digitalWrite(rows[i – 1], LOW);
delay(100);
digitalWrite(rows[i – 1], HIGH);
digitalWrite(cols[i – 1], LOW);
}
clear();
}
// rutin yang dijalankan saat dipanggil
void clear()
{
for(int i = 1; i <= 8; i++)
{
digitalWrite(cols[i – 1], LOW);
}
for(int i = 1; i <= 8; i++)
{
digitalWrite(rows[i – 1], LOW);
}
}
4. Video