Setelah sebelumnya belajar tutorial Arduino seven segment display dan komunikasi serial, kali ini akan diulas mengenai menampilkan suatu nilai ke seven segment display dengan input keyboard komputer melalui komunikasi serial. Berikut ini adalah tutorial untuk belajar project DIY (Do It Yourself) dengan Arduino Uno bagi pemula dengan menggunakan seven segment display. Tutorial akan disusun secara bertahap mulai dari dasar hingga yang lebih rumit, semisal untuk project tugas akhir kuliah atau keperluan aplikasi lainnya. Adapun karena keterbatasan jumlah pin dalam board Arduino Uno, untuk menghemat resource, dapat digunakan IC 7447, decoder. Fungsi dari IC 7447 ialah sebagai decoder yang menerima input BCD 4 bit dari Arduino, dan menghasilkan output 8 bit untuk mengendalikan nyala dari seven segment display. Sehingga hanya dengan 4 pin saja (bila tanpa decoder membutuhkan 8 pin) pada Arduino Uno, sudah dapat mengendalikan nyala tampilan seven segment display. Berikut ini catatan untuk wiring diagram rangkaian.
- Untuk pin Arduino pin 0 dan pin 1, digunakan untuk komunikasi serial dengan komputer, sehingga tidak dapat digunakan sebagai pin input atau output
- Menyamakan konfigurasi pin yang digunakan antara wiring diagram dengan souce code
- Untuk wiring diagram output Arduino sebagai input ke decoder IC 7447 ialah berturut-turut pin 2, pin 3, pin4, dan pin 5 masing-masing untuk input A, B, C, dan D
- Perubahan konfigurasi wiring diagram harus disesuaikan juga dengan source code yang digunakan
- Untuk wiring diagram dari decoder IC 7447 ke seven segment display dapat mengikuti gambar yang ada
- Untuk decoder IC 7447, menghasilkan output active low, berkaitan dengan jenis seven segment display yang digunakan ialah common anode
Berikut ini adalah source code (sketch) seven segment display sederhana dengan menggunakan library.
/*
Program seven segment display
dengan input serial
Loki Lang
*/
#include <SegDisplay.h>
#define A 2
#define B 3
#define C 4
#define D 5
#define Enable 6
SegNumbers lang(A, B, C, D, Enable);
int input;
void setup()
{
Serial.begin(9600);
lang.off();
}
void loop ()
{
if(Serial.available())
{
input = Serial.read();
if(input == 88, 120)
lang.off();
if(input == 48)
lang.zero();
if(input == 49)
lang.one();
if(input == 50)
lang.two();
if(input == 51)
lang.three();
if(input == 52)
lang.four();
if(input == 53)
lang.five();
if(input == 54)
lang.six();
if(input == 55)
lang.seven();
if(input == 56)
lang.eight();
if(input == 57)
lang.nine();
}
}
Program seven segment display
dengan input serial
Loki Lang
*/
#include <SegDisplay.h>
#define A 2
#define B 3
#define C 4
#define D 5
#define Enable 6
SegNumbers lang(A, B, C, D, Enable);
int input;
void setup()
{
Serial.begin(9600);
lang.off();
}
void loop ()
{
if(Serial.available())
{
input = Serial.read();
if(input == 88, 120)
lang.off();
if(input == 48)
lang.zero();
if(input == 49)
lang.one();
if(input == 50)
lang.two();
if(input == 51)
lang.three();
if(input == 52)
lang.four();
if(input == 53)
lang.five();
if(input == 54)
lang.six();
if(input == 55)
lang.seven();
if(input == 56)
lang.eight();
if(input == 57)
lang.nine();
}
}
Berikut ini penjelasan source code (sketch) Arduino dengan menggunakan macro library seven segment display.
- Penggunaan macro #include sebagai preprocessed directive untuk mencakup file header SegDisplay.h untuk library seven segment display
- Penggunaan macro #define sebagai preprocessed directive untuk mendefinisikan konstanta A, B, C, D, Enable dengan nilai masing-masing integer, dari class SegNumbers
- Pada saat proses compile dilakukan macro A, B, C, D, dan Enable, akan diganti oleh nilai (alamat pin Arduino) yang direpresentasikannya
- Proses inisialisasi memulai komunikasi serial dengan komputer menggunakan Serial.begin, dengan baud rate sebesar 9600
- Selanjutnya dilakukan proses pemeriksaan apakah komunikasi serial antara komputer dengan Arduino dimungkinkan, melalui Serial.available, bila dimungkinkan maka akan dilanjutkan langkah selanjutnya
- Setelah komunikasi dapat dilakukan selanjutnya ialah membaca input dari komputer melalui Serial.read, yang mana akan membaca nilai ASCII dari keyboard
- Terdapat 11 definisi, yang mana 10 definisi untuk nilai 0 hingga 9 yang akan ditampilkan pada seven segment display, dan satu untuk mematikan tampilan
- Untuk mematikan seven segment display dengan menekan tombol X atau x (yang mana karakter ASCII 88 dan 120), sedangkan untuk nilai 0 dengan ASCII code 48, hingga 9 dengan ASCII code 57
Saat ini di Indonesia board Arduino Uno R3 dapat diperoleh dengan mudah di kota-kota besar. Board Arduino Uno R3 dijual dengan harga murah. Membuat perkembangan Arduino kian pesat. Bila ada sesuatu yang belum jelas dan ingin tahu lebih dalam seputar project Arduino, pemrograman, dan elektronika, bisa bertanya pada bagian comment.