Sepertinya sudah cukup banyak website yang memuat artikel tentang basic arduino, jadi saya kali ini hanya membahas project-project sederhana yang mudah dimengerti oleh pemula dalam elektronika digital. Memang sudah saatnya bagi kita untuk mempelajari elektronika digital, karena hampir semua hardware dapat dikendalikan secara mudah bahkan otomatis melalui microcontroller. Yang perlu anda pahami sebelum mempelajari arduino adalah dasar elektronika, lebih baik lagi jika anda sudah mengerti bahasa pemrograman seperti C, C++ atau sejenisnya, anda tidak akan kesulitan memahami bahasa pemrograman yang digunakan pada arduino. Jika belum menguasai bahasa pemrograman, sebaiknya anda pelajari dulu, agar anda mengerti fungsi code tiap barisnya, jangan asal copas source code tanpa mengerti fungsinya.
LED 7 segment adalah LED display yang digunakan untuk menapilkan angka, disebut 7 segment karena ada tujuh buah led yang membentuk angka delapan (terdiri dari segment a, b, c, d, e, f, g), dan tambahan DP atau decimal point atau titik.
ada dua jenis LED 7 segment di pasaran, yaitu common cathode dan common anode, perbedaannya bisa anda lihat di atas. Untuk menampilkan angka yang diinginkan, anda hanya perlu mengatur nyala LED tiap segmen, seperti tabel di bawah ini
Digit fedcba
|
abcdefg
|
a
|
b
|
c
|
d
|
e
|
f
|
g
| |
0 0×3F
|
0×7E
|
on
|
on
|
on
|
on
|
on
|
on
|
off
| |
1 0×06
|
0×30
|
off
|
on
|
on
|
off
|
off
|
off
|
off
| |
2 0×5B
|
0×6D
|
on
|
on
|
off
|
on
|
on
|
off
|
on
| |
3 0×4F
|
0×79
|
on
|
on
|
on
|
on
|
off
|
off
|
on
| |
4 0×66
|
0×33
|
off
|
on
|
on
|
off
|
off
|
on
|
on
| |
5 0×6D
|
0×5B
|
on
|
off
|
on
|
on
|
off
|
on
|
on
| |
6 0×7D
|
0×5F
|
on
|
off
|
on
|
on
|
on
|
on
|
on
| |
7 0×07
|
0×70
|
on
|
on
|
on
|
off
|
off
|
off
|
off
| |
8 0×7F
|
0×7F
|
on
|
on
|
on
|
on
|
on
|
on
|
on
| |
9 0×6F
|
0×7B
|
on
|
on
|
on
|
on
|
off
|
on
|
on
|
Percobaan 1
Menyalakan tiap segment LED dari "a" sampai "g" secara berurutan
Alat dan bahan
- 1x Arduino (terserah anda, boleh NANO, UNO atau MEGA)
- 1x Breadboard atau project board
- 1x LED 7 Segment (terserah anda, common anode atau common cathode, tinggal disesuaikan source code, dan pin tengah 7 segment)
- 1x resistor 1k
- Kabel jumper secukupnya
Skema untuk common anode, untuk common cathode pin tengah disambung ke GND via resistor 1k |
Pin arduino Pin LED
2 a
3 b
4 c
5 d
6 e
7 f
8 g
Source code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | void setup() { // mendefinisikan mode pin pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); } void loop() { // loop untuk menyalakan tiap segmen LED for(int i=2;i<9;i++){ //i adalah nomor pin arduino yang digunakan LED digitalWrite(i,HIGH); //HIGH untuk nyala delay(600); } // loop untuk mematikan tiap segmen LED for(int i=2;i<9;i++){ digitalWrite(i,LOW); //LOW untuk mati delay(600); } delay(1000); } |
Percobaan kedua
Menampilkan hitung mundur dari 9 sampai 0 dengan delay 1 detik, skema sama seperti percobaan pertama
Source code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | //deklarasi array untuk LED common anode: 0 untuk nyala, 1 untuk mati //untuk LED common cathode: 0 untuk mati, 1 untuk nyala (edit array di bawah ini) int numArray[10][7] = { { 0,0,0,0,0,0,1 }, // 0 { 1,0,0,1,1,1,1 }, // 1 { 0,0,1,0,0,1,0 }, // 2 { 0,0,0,0,1,1,0 }, // 3 { 1,0,0,1,1,0,0 }, // 4 { 0,1,0,0,1,0,0 }, // 5 { 0,1,0,0,0,0,0 }, // 6 { 0,0,0,1,1,1,1 }, // 7 { 0,0,0,0,0,0,0 }, // 8 { 0,0,0,0,1,0,0 }}; // 9 void numWrite(int); void setup() { // set pin modes pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); } void loop() { //counter loop for (int counter = 10; counter > 0; --counter) { delay(1000); numWrite(counter-1); } delay(1000); //delay dalam milisecond } // method untuk menulis nilai ke LED void numWrite(int number) { int pin= 2; for (int j=0; j < 7; j++) { digitalWrite(pin, numArray[number][j]); pin++; } } |
Percobaan ketiga
Menampilkan angka 1 sampai 9 dengan trigger input user
Alat dan bahan
- 1x Arduino (terserah anda, boleh NANO, UNO atau MEGA, tinggal disesuaikan pin digital outputnya)
- 1x Breadboard atau project board
- 1x LED 7 Segment (terserah anda, common anode atau common cathode, tinggal disesuaikan di source code-nya)
- 1x resistor 1k
- 1x resistor 10k
- 1x tactile switch
- Kabel jumper secukupnya
Source code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | //array untuk common anode int num_array[10][7] = { { 0,0,0,0,0,0,1 }, // 0 { 1,0,0,1,1,1,1 }, // 1 { 0,0,1,0,0,1,0 }, // 2 { 0,0,0,0,1,1,0 }, // 3 { 1,0,0,1,1,0,0 }, // 4 { 0,1,0,0,1,0,0 }, // 5 { 0,1,0,0,0,0,0 }, // 6 { 0,0,0,1,1,1,1 }, // 7 { 0,0,0,0,0,0,0 }, // 8 { 0,0,0,0,1,0,0 }}; // 9 void Num_Write(int); int buttPin= 9; //deklarasi pin 9 untuk button int buttState= 0; int counter=0; void setup() { // set pin modes pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(buttPin, INPUT); } void loop(){ buttState = digitalRead(buttPin); //membaca input dari button if(buttState == HIGH){ //fungsi logika untuk membaca input if(counter == 0){ counter = +0; } counter++; //untuk menambah angka yang ditampilkan numWrite(counter); //memanggil function numWrite delay(300); //jeda tiap tambah angka if(counter == 9){ //jika led menampilkan angka 9, panggil method resetFunc resetFunc(); } } } void numWrite(int number) //method untuk menulis angka ke LED { int pin= 2; for (int j=0; j < 7; j++) { digitalWrite(pin, num_array[number][j]); pin++; } } void resetFunc() // method untuk me-reset arduino (mengulangi eksekusi code dari awal) { asm volatile (" jmp 0"); //@dukun_elektro_2017 } |
Cukup sekian tutorial LED 7 segment vs Arduino kali ini, silakan komentar di bawah jika ada koreksi atau pertanyaan.
Video
Selamat bereksperimen ^_^
No comments:
Post a Comment