Berikut ini adalah tutorial untuk belajar project 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.
- Menyamakan konfigurasi wiring diagram dengan souce code
- Untuk wiring diagram output Arduino sebagai input ke decoder IC 7447 ialah berturut-turut pin 0, pin 1, pin2, dan pin 3 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 tanpa menggunakan library.
/*
Program seven segment display
tanpa library
Loki Lang
*/
void setup()
{
DDRD = 15; //B00001111
}
void loop()
{
PORTD = 0; //B00000000
delay(1000);
PORTD = 1; //B00000001
delay(1000);
PORTD = 2; //B00000010
delay(1000);
PORTD = 3; //B00000011
delay(1000);
PORTD = 4; //B00000100
delay(1000);
PORTD = 5; //B00000101
delay(1000);
PORTD = 6; //B00000110
delay(1000);
PORTD = 7; //B00000111
delay(1000);
PORTD = 8; //B00001000
delay(1000);
PORTD = 9; //B00001001
delay(1000);
}
Program seven segment display
tanpa library
Loki Lang
*/
void setup()
{
DDRD = 15; //B00001111
}
void loop()
{
PORTD = 0; //B00000000
delay(1000);
PORTD = 1; //B00000001
delay(1000);
PORTD = 2; //B00000010
delay(1000);
PORTD = 3; //B00000011
delay(1000);
PORTD = 4; //B00000100
delay(1000);
PORTD = 5; //B00000101
delay(1000);
PORTD = 6; //B00000110
delay(1000);
PORTD = 7; //B00000111
delay(1000);
PORTD = 8; //B00001000
delay(1000);
PORTD = 9; //B00001001
delay(1000);
}
Penjelasan program sebagai berikut.
- DDRD digunakan untuk mendefinisikan PORTD apakah sebagai input atau output. Disini DDRD diberikan nilai 15 atau sama seperti B00001111, yang mana empat buah pin diberi nilai 1, artinya pin 0, pin 1, pin 2, dan pin 3 tersebut didefinisikan sebagai port output, sementara itu pin 4, pin 5, pin 6, dan pin 7 diberikan nilai 0, maka pin tersebut didefinisikan sebagai input
- Hanya empat buah pin yang digunakan sebagai output, dikarenakan IC 7447 cukup menerima empat masukan data untuk mengatur nyala seven segment display
- Untuk delay, digunakan untuk memberikan jeda eksekusi dari satu line ke line selanjutnya dalam program, selain itu juga agar hardware dapat menjalankan program dengan lebih stabil
- Durasi delay dalam ms, dengan kata lain 1000 ms sama dengan 1 detik
/*
Program seven segment display
dengan menggunakan library
Loki Lang
*/
#include <SegDisplay.h>
#define A 0
#define B 1
#define C 2
#define D 3
#define Enable 4
SegNumbers segdisp(A, B, C, D, Enable);
void setup()
{
}
void loop()
{
segdisp.off();
delay(1000);
segdisp.zero();
delay(1000);
segdisp.one();
delay(1000);
segdisp.two();
delay(1000);
segdisp.three();
delay(1000);
segdisp.four();
delay(1000);
segdisp.five();
delay(1000);
segdisp.six();
delay(1000);
segdisp.seven();
delay(1000);
segdisp.eight();
delay(1000);
segdisp.nine();
delay(1000);
}
Program seven segment display
dengan menggunakan library
Loki Lang
*/
#include <SegDisplay.h>
#define A 0
#define B 1
#define C 2
#define D 3
#define Enable 4
SegNumbers segdisp(A, B, C, D, Enable);
void setup()
{
}
void loop()
{
segdisp.off();
delay(1000);
segdisp.zero();
delay(1000);
segdisp.one();
delay(1000);
segdisp.two();
delay(1000);
segdisp.three();
delay(1000);
segdisp.four();
delay(1000);
segdisp.five();
delay(1000);
segdisp.six();
delay(1000);
segdisp.seven();
delay(1000);
segdisp.eight();
delay(1000);
segdisp.nine();
delay(1000);
}
Lihat juga mengenai tutorial dan penjelasan mengenai project Arduino Uno LED blinking dan Arduino Uno LED animation.
Tidak ada komentar:
Posting Komentar