13. Pembelajaran Mengenai Matriks LED pada Arduino

13. Pembelajaran Mengenai Matriks LED pada Arduino

Materi:

Pembelajaran pada Bab ini membahas matriks LE Ddan cara memogramnya. Penggunaan modul MAX72XX ikut dibahas di BAB ini. Aplikasi MAX72XX untuk mengontrol penampil tujuh-segment ikut di bahas.

13.1 Pengenalan Matriks LED

Matriks LED atau kadang dinamakan penampil LED adalah komponen yang mengandung 8×8 LED digunakan untuk menampilkan sebuah karakterr. Contoh matriks LED dapat dilihat di gambar 13.1

Gambar 13.1 Matriks LED

Matriks LED memiliki 16 pin. Delapan pin digunakan untuk mengontrol baris dan delapan untuk mengontrol kolom. Penomoran pin diperlihatkan di Gambar 13.2.

9

16

Gambar 13.2 Penomoran pin di matriks LED

Terdapat dua jenis matriks LED, yaitu 1) common anode dan 2) common cathode. pada common anode

  • setiap anode pada baris masing-masing saling dihubungkan dan
  • setiap katode pada kolom masing-masing saling dihubungkan.

Pada common cathode:

  • setiap katode pada baris masing-masing saling dihubungkan dan
  • setiap anode pada kolom masing-masing saling dihubungkan.

13.2 percobaan Menggunakan Matriks LED

Untuk mempraktikkan matriks LED, pertama-tama susunlah rangkaian seperti teriihat di Gambar 13.3. Rangkaian di atas menggunakan matriks LED jenis common anode.

Gambar 13.3 Rangkaian yang menghubungkan matriks LED dan Arduino

13.3 Multiplexing

Multiplexing adalah suatu Teknik yang digunakan untuk menyalakan LED-LED dalam satu baris saja untuk setiap waktu. adalah Hal ini diperlukan teknik karena yang penyalaan pada dua LED Matrick LED menimbulkan problem [Kadir]. Untuk memahami multiplexing, perhatikan Gambar 13.4 yang menyatakan huruf S dan penerapan multiplexing. Gambar 13.4 (a) menyatakan hufuf S yang akan ditampilkan. Gambar 13.5(b) hingga Gambar 14.4(i) adalah tampilan-tampilan yang muncul dalam satu saat.

Description

Melalui pendekatan seperti itu, mata manusia ternyata dapat menangkap kehadiran huruf S tersebut• Hal itu terjadi kalau proses multiplexing tersebut dilakukan secara terus-menerus. Untuk melihat efek tersebut’ sketch berikut dapat dipakai.

Untuk mempraktikkan, silakan untuk membuat rangkaian seperti terlihat di Gambar 13.3. Selanjutnya, uji dengan menggunakan sketch beirkut :

Sketch: huruf

// ——————————————–

// Contoh untuk menampilkan huruf R

// di matriks LED

// menggunakan multiplexing

// ——————————————–

#include <Timerone.h>

// Baris-> 1, 2, 3, 4, 5, 6, 7, 8

const int BARIS[] = {-1, 6, 7, 8, 9, 10, 11, 12, 13}

// Kolom-> 1 , 2, 3, 4, 5, 6, 7, 8,

const int KOLOM[] = {-1, 14, 15, 16, 17, 2, 3, 4, 5}

byte HURUF[]=

{

B00111110, // Baris 1

B00110010, // Baris 2

B00110010, // Baris 3

B01111110, // Baris 4

B01101000, // Baris 5

B01101000, // Baris 6

B01100110, // Baris 7

B00000000 // Baris 8

};

int barisSebelum =8;

void setup()

{

for (int indeks =1; indeks <= 8; indeks++)

{

pinMode (BARIS[indeks], OUTPUT) ;

pinMode (KOLOM[indeks], OUTPUT);

digitalWrite(BARIS[indeks], LOW);

digitalWrite(KOLOM[indeks], HIGH);

// Atur timer

Timer1.initialize(1000);

// Pasang fungsi yang akan dijalankan Timer1.attachInterrupt(tampilkanHuruf);

void loop()

{

}

vold tampilkanHuruf()

{

byte barisSekarang;

if (barisSebelum==8)

barisSekarang=1;

else

barisSekarang = barisSebelum +1;

// Matikan baris sebelumnya

digitalWrite (BARIS[barisSebelum], LOW);

for (byte k=1;k<=8; k++)

digitalWrite(KOLOM[k], HIGH);

// Tampilkan baris sekarang

for (byte k=1;k<=8; k++)

{

if (bitRead(HURUF [barisSekarang – 1], 8-k) == HIGH)

digitalWrite(KOLOM[k], LOW);

digitalWrite (BARIS [barisSekarang], HIGH);

}

// Update barisSebelum

barisSebelum = barisSekarang;

}

Sketch di atas didasarkan pada rangkaian yang dicantumkan di Gambar 13.3. Gambar 13.5 memperlihatkan penyusunan aktual berdasarkan rangkaian tersebut dan sedang menampilkan huruf R.

Gambar 13.5 Contoh matriks LED yang menampilkan huruf R

Sketch huruf melibatkan pustaka TimerOne. ltulah sebabnya, terdapat kode berikut:

# include < TimerOne.h>

Pustaka tersebut dimanfaatkan untuk melakukan multiplexing secara periodis. Perlu diketahui, pemasangan pustaka TimerOne dibahas di Bab 12.

Pada sketch, semua pin di Arduino yang dihubungkan ke baris-baris di matriks LED didefinisikan di konstanta BARIS seperti berikut:

const int BARIS [ ] ={-1, 6, 7, 8, 9, 10, 11, 12, 13} ;

Anda bisa merujuk ke Gambar 13.3 untuk melihat angka-angka tersebut. Angka -1 bersifat dummy (tidak terpakai), karena indeks array dimulai dari satu, sedangkan penomoran baris dimulai dari satu. Oleh karena itu, nilai 6 menyatakan pin untuk baris 1 dan 7 menyatakan pin untuk baris 2. Adapun pendefinisian pin-pin di Arduino yang dihubungkan ke kolom di matriks LED dilakukan di konstanta KOLOM seperti berikut:

const int KOLOM[]= {-1, 14, 15, 16, 17 , 2, 3, 4,5};

Seperti halnya pada BARIS, nilai -1 di KOLOM bersifat dummy.

pernyataan berikut mendeklarasikan array bernama HURUF dan menginisialisasi dengan nilai-nilai yang menyatakan huruf R:

byte HURUF[]=

{

B00111110, // Baris 1

B00110010, // Baris 2

B00110010, // Baris 3

B01111110, // Baris 4

B01101000, // Baris 5

B01101000, // Baris 6

B01100110, // Baris 7

B00000000 // Baris 8

};

Gambar 13.6 memperlihatkan hubungan angka-angka dalam bentuk biner dan perwujudan huruf R di matriks LED.

Gambar 13.6 Angka yang mendasari penyusunan huruf R

Sketch melibatkan satu variabel global bernama barisSebelum, yang pada keadaan awal diberi nilai 8 Baris ini menyatakan bahwa baris yang baru saja diproses (sebelum yang sekarang). Karena jumlah baris hanya 8, maka baris berikutnya yang akan diproses pertama kali adalah baris 1. Kalau barisSebe1um berisi 1, baris berikutnya yang akan diproses adalah 2.

Di fungsi setup ( ) , mula-mula mode setiap pin diatur sebagai keluaran (OUTPUT). Untuk pin baris diisi dengan LOW dan pin kolom diisi dengan HIGH. Cara ini berlaku untuk jenis common anode. Selain itu dilakukan pula pengaturan timer, yang diatur agar menjalankan suatu rutin atau fungsi per 1000 mikrodetik. Perintahnya, yaitu:

Timer 1 . initialize (1000) ;

Adapun fungsi yang dimaksud adalah tampilkanHuruf, yang diatur melalui:

Timer 1 . attach Interrupt (tampi1kanHuruf) ;

Berkat rutin inilah, di loop ( ) tidak perlu diisi dengan apa-apa. Oleh karena itu, kode di loop ( ) hanya berupa:

void loop ( )

{

}

Di fungsi tampi1kanHuruf ( ) , penentuan baris sekarang yang akan diproses didasarkan pada nilai variabel global barisSebe1um dan dinyatakan dalam variabel baris Sekarang. Penentuannya dilakukan melalui:

if (barisSebelum== 8 )

barisSekarang = 1 ;

barisSekarang= barisSebe1um + 1;

Setelah baris sekarang diperoleh, LED pada baris sebelumnya perlu dimatikan. Hal ini dilakukan melalui:

digitalWrite (BARIS [barisSebeIum] , LOW) ;

for (byte k = 1; k<= 8 ; k++)

digital Write (KOLOM[k] , HIGH) ;

setelah itu, LED pada baris sekarang perlu dihidupkan kalau nilai bersangkutan di array HURUF bernilai 1. pernyataan yang menanganinya:

for (byte k=1;k<=8; k++)

{

if (bitRead(HURUF [barisSekarang – 1], 8-k) == HIGH)

digitalWrite(KOLOM[k], LOW);

digitalWrite (BARIS [barisSekarang], HIGH);

}

Terakhir, nilai barisSekarang perlu disalin ke baris SebeLum supaya pada iterasi berikutnya, posisi baris sekarang bisa ditentukan kembali.

Jadi, yang terjadi sesungguhnya adalah penyalaan dan pematian LED-LED pada setiap baris secara bergantian. Karena berlangsung per 1000 mikrodetik (1 / 1000 detik), mata manusia tidak melihat kejadian yang sebenarnya, melainkan hanya melihat LED-LED menyala untuk menampilkan huruf tertentu.

13.4 Penggunaan Modul MAX72XX

Modul MAX72XX adalah modul yang mengontrol sebuah matriks LED dan di dalamnya terdapat IC keluarga MAX72XX, yaitu MAZ7219 dan MAX7221. Contoh modul diperlihatkan di Gambar 13.7. Dengan menggunakan modul ini, pengabelan menjadi sederhana sebab hanya tiga pin yang diperlukan untuk dihubungkan ke Arduino, selain pin 5V dan GND.

Gambar 13.7 Modul MAX7219

Kelima pin yang tersedia di modul MAX72XX adalah:

    • VCC : dihubungkan ke tegangan SV;
    • GND: dihubungkan ke ground;
    • DIN: dihubungkan ke pin data;
    • CS: dihubungkan ke pin pemilih data ata instruksi;
    • CLK: dihubungkan ke clock.

Description Gambar 13.8 memperlihatkan rangkaian yang menghubungkan modul MAX7219 dan Arduino.

Pemasangan Pustaka LedControl

Untuk mempermudah pengendalian modul MAX72XX, Anda bisa memanfaatkan pustaka bernama LedControl. Pustaka ini dapat diunduh di https://github.com/wayoda.LedControl. Untuk memudahkan Anda, file bernama LedControl—master . zi p disediakan di CD yang disertakan bersama buku ini.

Instalasi pustaka tersebut dilakukan dengan cara seperti berikut.

  1. Dekompresilah file LedControl-master. zi p. Akan terbentuk folder bernama LedCont 101 master.
  2. Pindahkan subfolder LedControl ke C : \ Program Fi Ies (x86) \ Arduino\libraries (dengan asumsi, program Arduino IDE terinstal di C: \ Program Fi Ies (x86) \ Arduin0)•
  3. Tutuplah Arduino IDE jika dalam keadaan sedang dibuka.
  4. Panggil kembali Arduino IDE supaya pustaka yang baru saja Anda tambahkan dikenali.

Pengujian Modul MAX72XX

Setelah pustaka terpasang dan rangkaian seperti terlihat di Gambar 13.8 telah tersusun, pengujian dapat dilakukan dengan menggunakan sketch berikut:

Sketch: ledmax

// ——————————————–

// Contoh untuk menguji matriks LED

// menggunakan pustaka LedControl

// ——————————————–

#include “LedControl.h”

const int JUMLAH LED=1;

const int PIN_CS =10;

const int PIN_CLK =11;

const int PIN_DIN =12 ;

Ledcontrol lc = LedControl (PIN_DIN, PIN_CLK,PIN_CS, JUMLAH_LED);

void setup()

{

// Menghidupkan penampil nomor 0

lc.shutd0wn(0, false);

// Mengatur intensitas kecerahan (0 hingga 15)

lc.setIntensity(0,8);

// Menghapus layar

lc.clearDisplay(0);

}

void loop()

{

for (int baris =0; baris < 8; baris++)

for (int kolom=0; kolom < 8; kolom++)

// Menampilkan LED pada kolom dan baris

lc.setLed(0, baris, kolom, true);

delay(100);

delay(1000);

for (int baris = 0; baris < 8; baris++)

{

for (int kolom=0; kolom < 8; kolom++)

{

// Mematikan LED pada kolom dan baris

lc.setLed(0, baris, kolom, false);

delay(100);

}

}

}

Sketch diawali dengan penyertaan kode berikut:

# include “LedContzrol . h”

Kode tersebut diperlukan karena sketch melibatkan pustaka LedControl.

Ada beberapa konstanta yang didefinisikan di sketch. Masing-masing berfungsi seperti berikut:

  • JUMLAH LED menyatakan jumlah matriks LED yang digunakan. Dalam hal ini, hanya ada 1.
  • PIN_CS menyatakan pin di Arduino yang dihubungkan ke pin CS milik modul MAX72XX.
  • PIN_CLK menyatakan pin di Arduino yang dihubungkan ke pin CLK milik modul MAX72XX.
  • PIN_DIN menyatakan pin di Arduino yang dihubungkan ke pin DIN milik modul MAX72XX.

Untuk melakukan operasi terhadap matriks LED, objek bernama Ic dideklarasikan melalui:

Ledcontrol lc = LedControl (PIN_DIN, PIN_CLK,PIN_CS, JUMLAH_LED);

Hal terpenting yang perlu diperhatikan adalah urutan pin-pin yang diletakkan sebagai argumen sewaktu penciptaan objek dilakukan. Argumen keempat menyatakan jumlah matriks LED yang dilibatkan. Pada contoh di atas, jumlahnya adalah satu. Namun, di belakang akan diberikan contoh kalau matriks LED lebih dari satu Di setup ( ) , dilakukan beberapa hal. Pertama-tama, matriks LED nomor 0 perlu dihidupkan terlebih dahulu melalui:

lc.shutd0wn (0, false) ;

Pengaturan intensitas kecerahan dilakukan melalui:

lc.setIntensity(0,8);

Dałam hal ini, 0 menyatakan nomor matriks LED dan 8 menyatakan tingkat kecerahan (angka 0 hingga 15 bisa digunakan). Adapun

lc.clearDisplay(0);

digunakan untuk mematikan semua LED.

Di dalam loop ( ) , ada dua operasi yang dilakukan. Pertama adalah menghidupkan setiap LED secara bertahap dengan selang 25 milidetik dan kedua adalah mematikan setiap LED secara bertahap dengan selang 25 detik. Perintah untuk mematikan sebuah LED pada posisi indeks baris sama dengan bar is dan indeks kolom sama dengan kolom berupa:

lc.setLed (0, baris, kolom, true) ;

Argumen pertama menyatakan nomor LED yang diproses. Kunci penyalaan LED terletak pada nilai true pada argumen keempat. Itulah sebabnya,

lc. set Led (0, bar i s, kolom, false) ;

membuat LED pada indeks baris sama dengan bar is dan indeks kolom sama dengan kolom dimatikan•

Gambar 13.9 memperlihatkan keadaan ketika LED dihidupkan (kiri) dan ketika dimatikan (kanan). Jika Anda perhatikan, baris O kolom O terletak di pojok kiri atas. Jadi, koordinat yang berlaku diperlihatkan di Gambar

13.10. Keadaan ini tentu saja akan menentukan kode yang perlu Anda lakukan untuk mengontrol matriks LED.

Gambar 13.9 Pengujian dengan menghidupkan dan rnematikan setiap LED

Gambar 13.10 Koordinat di mcłțriks LEU berdasarkan pusțaka LedControl

Pengujian Untuk Menampilkan Huruf A hingga Z

Sketch leadz memberikan contoh pendefinisian 26 hułuf (A hingga Z) dan cara menyajikannya di matriks LED secara bergantian.

Untuk menguji rangkaian di atas, silakan gunakan Sketch berikut :

Sketch: leddua

// ——————————————–

// Contoh untuk menguji matriks LED

// menggunakan pustaka LedControl

// ——————————————–

#include “LedControl.h”

const int JUMLAH_LED=1;

const int PIN_CS =10;

const int PIN_CLK =11;

const int PIN_DIN =12 ;

const byte HURUF[]={

0x3C, 0x24, 0x24, 0x7E, 0x62, 0x62, 0x62, 0x00, // A

0x7C, 0x24, 0x24, 0x3E, 0x32, 0x32, 0x7E, 0x00, // B

0x3E, 0x22, 0x20, 0x60, 0x60, 0x62, 0x7E, 0x00, //C

0x7E, 0x22, 0x22, 0x32, 0x32, 0x32, 0x7E, 0x00, // D

0x3E, 0x20, 0x20, 0x78, 0x60, 0x60, 0x7E, 0x00, // E

0x3E, 0x20, 0x20, 0x78, 0x60, 0x60, 0x60, 0x00, // F

0x3E, 0x22, 0x20, 0x6E, 0x62, 0x62, 0x7E, 0x00, // G

0x24, 0x24, 0x24, 0x7E, 0x62, 0x62, 0x62, 0x00,//H

0x3E, 0x08, 0x08, 0x18, 0x18, 0x18, 0x3E, 0x00, //I

0xlc, 0x08, 0x08, 0x0C, 0x0C, 0x4C, 0x7C, 0x00, //J

0x24, 0x24, 0x28, 0x70, 0x68, 0x68, 0x66, 0x00, // K

0x20, 0x20, 0x20, 0x60, 0x60, 0x62, 0x7E, 0x00, // L

0x36, 0x3E, 0x2A, 0x62, 0x62, 0x62, 0x62, 0x00, // M

0x32, 0x2A, 0x2A, 0x6A, 0x6А, 0x66, 0x62, 0x00, // N

0x3E, 0x22, 0x22, 0x62, 0x62, 0x62, 0x7E, 0x00, // o

0x3E, 0x22, 0x22, 0x7E, 0x60, 0x60, 0x60, 0x00, //P

0x3E, 0x22, 0x22, 0x62, 0x6A, 0x64, 0x7A, 0x00, // Q

0x3E, 0x22, 0x22, 0x7E, 0x68, 0x68, 0x66, 0x00, //R

0x3C, 0x24, 0x20, 0x3E, 0x0E, 0x6E, 0x7E, 0x00, // S

0x3E, 0x08, 0x08, 0x18, 0x18, 0x18, 0x18, 0x00, //T

0x22, 0x22, 0x22, 0x62, 0x62, 0x62, 0x7E, 0x00, // U

0x22, 0x22, 0x22, 0x64, 0x68, 0x70, 0x60, 0x00, //V

0x22, 0x22, 0x22, 0x6A, 0x6A, 0x7E, 0x7E, 0x00, // w

0x24, 0x24, 0x3C, 0x18, 0x7E, 0x62, 0x62, 0x00, //x

0x22, 0x22, 0x22, 0x3E, 0x18, 0x18, 0x18, 0x00, // Y

0x7E, 0x42, 0x1E, 0x60, 0x60, 0x62, 0x7E, 0x00, // z

};

Ledcontrol lc = LedControl (PIN_DIN, PIN_CLK,PIN_CS, JUMLAH_LED);

void setup()

{

// Menghidupkan penampil nomor 0

lc.shutd0wn(0, false);

lc.shutd0wn(1, false);

// Mengatur intensitas kecerahan (0 hingga 15)

lc.setIntensity(0,8);

lc.setIntensity(1,8);

// Menghapus layar

lc.clearDisplay(0);

lc.clearDisplay(1);

}

void loop()

{

char kar = ‘A’;

for(int i=0;i<13; i++)

{

tampilkanKar(0, kar);

tampilkanKar(1, kar +1);

kar=kar+2;

delay(2000);

}

}

void tampilkanKar(int nomor, char karakter)

{

int posisi = (karakter – ‘A’) * 8;

// Tampilkan

for (int baris = 0; baris < 8; baris++)

{

byte nilai = HURUF[baris + posisi];

lc.setRow(nomor, baris, nilai);

}

}

Hal pertama yang perlu diperhatikan adalah pada definisi berikut:

const int JUMLAH_LED = 2;

Hal itu untuk menyatakan bahwa jumlah matriks LED yang dilibatkan ada dua.

Secara prinsip, Anda perlu melakukan inisialisasi pada kedua matriks LED. Itulah sebabnya, di setup() terdapat kode:

lc.shutd0wn(0, false);

lc.shutd0wn(1, false);

// Mengatur intensitas kecerahan (0 hingga 15)

lc.setIntensity(0,8);

lc.setIntensity(1,8);

//Menghapus layar

lc.clearDisplay(0);

lc.clearDisplay(1);

untukmengantisipasi kemungkinan jumlah LED Matriks yang melebihi dari dua,Anda bisa menyederhanakan

kode di atas menjadi:

for (int nomor = 0; nomor < JUMLAH_LED; nomor++)

{

lc.shutd0wn(nomor, false);

// Mengatur intensitas kecerahan (0 hingga 15)

lc.setIntensity(nomor, 8);

// Menghapus layar

lc.clearDisplay(nomor);

}

Penanganan untuk menampilkan huruf pada kedua matriks LED ditangani oleh:

char kar =’A’;

for(int i=0;i<13; i++)

{

tampilkanKar(0, kar);

tampilkanKar(1,kar+1);

kar= kar+2;

delay(2000);

}

Dengan cara seperti itu, dua pasang huruf akan ditampilkan. Sebagai contoh, jika matriks LED pertama menampilkan isi kar yang berupa A, matriks LED kedua menampilkan B.

Penampilan huruf dilaksanakan oleh fungsi tampilkankar(). Fungsi ini menggunakan lc.setRow() untuk mengatur tampilan LED dalam satu baris. Gambar 13.13 memperlihatkan contoh ketika huruf E danf ditampilkan.

Gambar 13.13 Contoh rangkaian dua matriks LED ketika menampilkan huruf E dan F

13.5 . Penggunaan MSX72XX untuk Mengontrol Penampil Tujuh-segmen

Jka Anda telah menggunakan modul yang mengandung IC MAX72XX, Anda bisa memanfaatkannya untuk mengontrol penampil tujuh-segmen yang mengandung empat digit. Namun,hanya penampil tujuh-segmen berjenis common cathode yang bisa digunakan.

Gambar 13.14 memperlihatkan cara menggunakan IC MAX72XX untuk mengontrol penampil tujuh-segmen dengan empat digit dan mengandung 12 pin.Spesifikasi pin sama seperti pada penampil tujuh-segmen empat digit yang dibahas di Bab 12.Namun,yang digunakan di sini dalah yang berjenis common cathode.Dalam hal ini,Dig 1 hingga Dig 7 mengontrol setiap penampil tujuh-segmen.Jadi, IC dapat digunakan untuk delapan penampil tujuh-segmen.Seg Dp, Seg A Description Description hingga Seg G dihubungkan ke segmen-segmen di penampil tujuh-segmen.

Description Setelah hubungan diperoleh,Anda bisa melakukan penyambungan dengan pin-pin di penampil tujuh-segmen berdasarkan penjelasan di Gambar 13.14. Gambar 13.17 memperlihatkan hubungan modul MAX7XX dengan penampil tujuh-segmen.

Untuk menguji rangkaian di Gambar 13.17, silakan gunakan Sketch berikut :

Sketch: sevenseg

// ——————————————–

// Contoh pemakaian MAX2719

// pada penampil 7-segmen

// ——————————————–

#include “LedControl.h”

const int JUMLAH LED=1;

const int PIN_CS =10;

const int PIN_CLK=11;

const int PIN_DIN = 12;

const byte ANGKA[]={

//DP ABCDEFG

B01111110, //0

B00110000, //1

B01101101,//2

B01111001, //3

B00110011, //4

B01011011,// 5

B00011111, // 6

B01110000, //7

B01111111,//8

B01110011 //9

};

LedControl lc = LedControl(PIN_DIN, PIN_CLK, PIN_CS,JUMLAH_LED);

void setup()

{

// Menghidupkan penampil tujuh-segmen

lc.shutd0wn(0, false);

// Mengatur intensitas kecerahan (0 hingga 15)

lc.setIntensity(0,8);

// Menghapus layar

lc.clearDisplay(0);

}

void loop()

{

for (int digit = 0; digit <10; digit++)

{

tampilkanDigit(0, digit);

delay(2000);

}

}

void tampilkanDigit(int nomor, int digit)

{

int posisi = digit;

// Tampilkan lc.setRow(nomor, 0, ANGKA[posisi]);

lc.setRow(nomor, 1, ANGKA[(posisi +1) % 10);

lc.setRow(nomor, 2, ANGKA[(posisi + 2) % 10);

lc.setRow(nomor, 3, ANGKA[(posisi + 3) % 10);

}

Pada sketch di atas, JUMLAH_LED berupa 1. Walaupun penampil tujuh-segmen mengandung empat digit, sebenarnya hanya tersusun dari satu matriks LED mengingat setiap digit hanya memerlukan satu byte (8 bit yaitu DP, A, B, C, D, E, F, dan G). Selain itu, perhatikan definisi untuk menentukan ‘tampilan digit, yang berupa:

const byte ANGKA[]={

//DP ABCDEFG

B01111110, //0

B00110000, //1

B01101101,//2

B01111001, //3

B00110011, //4

B01011011,// 5

B00011111, // 6

B01110000, //7

B01111111,//8

B01110011 //9

};

Tampak bahwa susunan segmen dimulai dari DP, bukan A seperti pada contoh di Bab 12, seperti biasa, objek LedControl perlu dibentuk. Perintahnya berupa:

LedControl lc = LedControl(PIN_DIN, PIN_CLK, PIN_CS,JUMLAH_LED);

inisialisasi terhadap penampil tujuh-segmen di setup ( ) dilakukan seperti halnya pada matriks LED. pernyataan :

lc.shutd0wn(0, false);

digunakan untuk menghidupkan segmen di penampil tujuh-segmen. Pernyataan

lc.setIntensity(0,8);

dipakai untuk mengatur intensitas segmen dengan nilai medium (pertengahan antara 0 dan 15). Pernyataan

Di loop ( ) , penampilan angka O hingga 9 secara bergantian diatur oleh :

for (int digit = 0; digit <10; digit++)

{

tampilkanDigit(0, digit);

delay(2000);

}

}

Isi tampilkanDigit(int nomor, int digit)

{

int posisi = digit;

// Tampilkan lc.setRow(nomor, 0, ANGKA[posisi]);

lc.setRow(nomor, 1, ANGKA[(posisi +1) % 10);

lc.setRow(nomor, 2, ANGKA[(posisi + 2) % 10);

lc.setRow(nomor, 3, ANGKA[(posisi + 3) % 10);

}

Isi tampilkanDigit ( ) seperti berikut:

Keempat at Pernyataan tersebutlah yang mengatur tampilan angka di keempat bagian penampil tujuh-segmen, dengan angka yang ditampilkan adalah berurutan. Sebagai contoh, jika bagian segmen pertama menampilkan 1, bagian segmen kedua menampilkan 2, bagian segmen ketiga menampilkan 3, dan bagian segmen keempat menampilkan 4. Dalam hal ini, pos isi menentukan data di ANGKA yang Menyusun angka di penampil tujuh-segmen, yang dihitung melalui:

int posisi digit;

Parameter digit adalah parameter yang menentukan angka yang hendak ditampilkan. Perlu diperhatikan penggunaan % 10 adalah untuk menjamin bahwa indeks pada array ANGKA berada dalam jangkauan

Gambar 13.17 memperlihatkan contoh penyusunan rangkaian berdasarkan Gambar 13.16 dan contoh hasil.

 

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses