Assalamu’alaikum teman teman, meneruskan dua artikel sebelumnya tentang bagaimana cara menampilkan karakter dari arduino ke seven segmen, kali ini kita akan memcoba menampilkan sebuah data hasil pengolahan arduino menjadi output yang mudah dipahami manusia yaitu menampilkan prosentase putaran dari sebuah varable resistor ke seven segment , jadi saat potensio di putar ke kanan / ke kiri penuh maka seven segment akan menampilkan angka ’00’ dan jika di putar sampai penuh ke arah sebaliknya seven segment akan menapilkan angka 99, seharunya 100 tapi kan kita cuma pakai 2 digit seven segment jadi ya sampai 99 aja, kalau temen temen mau mengembangkan jadi 3 / 4 digit juga bisa kok, toh prinsipnya juga sama 🙂
namun sebelum kita memulai praktik kali ini, seperti biasa kita siapkan dulu komponen komponennya, komponennya sama seperi praktik kita sebelumnya hanya saja ditambah dengan 1 variable resisitor 10kOhm, sehingga list komponennya menjadi seperti berikut:
- Arduino Uno
- Breadboard
- kabel jumper
- resistor 330 ohm 4 pcs
- Seven Segment Common Katoda 2 buah
Setelah Komponen diatas sudah tersedia sekarang kita buat rangkaiannya seperti gambar berikut :
Setelah rangkaian selesai dibuat sekarang saatnya koding, kalian bisa menggunakan koding berikut ini untuk common catoda, jika kalian menggunakan common anoda silahkan di edit seperti penjelasan saya di postingan saya sebelumnya.
#define segment1 6 // pin common untuk seven segment 1 pada Arduino #define segment2 A1 //pin common untuk seven segment 2 pada Arduino /* Program untuk seven segment Common Katoda */ byte digit[10] = { //abcdefg dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B10111110, // 6 B11100000, // 7 B11111110, // 8 B11110110, // 9 }; byte pinSegment[] = {A2,2,3,A5,A4,A3,5,4}; // pin yang digunakan untuk seven segment (pin dp,g,f,e,d,c,b,a) byte persen; void setup() { for(int i=0; i < 8; i++) // menyetel pin yang terdapat pada pinSegment sebagai OUTPUT { pinMode(pinSegment[i], OUTPUT); } pinMode(segment1,OUTPUT); // menyetel pin pada segment1 sebagau OUTPUT pinMode(segment2,OUTPUT); // menyetel pin pada segment1 sebagau OUTPUT } void loop() { persen = map(analogRead(A0),0,1023,0,99); // memetakan nilai pembacaan pin analog A0 dari 0-1023 menjadi 0-99 tampilkan(persen); // menampilkan nilai dari hasil pemetaan ke seven segment } void tampilkan(int nilai) { if (nilai < 10 && nilai < 100) // jika x / nilai kurang dari 9 dan kurang dari 100, maka { /* ---------------kirim digit '0' ----------------------- */ digitalWrite(segment2,HIGH); // matikan 7 segment 2 for ( byte segment = 0; segment < 8; segment++) { boolean Status = bitRead(digit[0],segment); digitalWrite(pinSegment[segment],Status); } digitalWrite(segment1, LOW); // hidupkan 7 segment 1 delay(5); /* ------kirim digit kedua ------------------------*/ digitalWrite(segment1, HIGH); // matikan 7 segment 1 for ( byte segment = 0; segment < 8; segment++) { boolean Status = bitRead(digit[nilai],segment); // mengirim nilai x digitalWrite(pinSegment[segment],Status); } digitalWrite(segment2,LOW); // hidupkan 7 segment 2 delay(5); } else if ( nilai > 9 && nilai < 100) // jika nilai x lebih dari 9 dan kurang dari 100, maka { byte digit1 = nilai/10; //mmengampil nilai puluhan byte digit2 = nilai-(digit1*10); // mengambil nilai satuan /* ---------------kirim digit pertama----------------------- */ digitalWrite(segment2,HIGH); // matikan 7 segment 2 for ( byte segment = 0; segment < 8; segment++) { boolean Status = bitRead(digit[digit1],segment); // kirim digit pertama digitalWrite(pinSegment[segment],Status); } digitalWrite(segment1, LOW); // hidupkan 7 segment 1 delay(5); /* ---------- kirim didigt kedua ------------------------*/ digitalWrite(segment1, HIGH); // matikan 7 segment 1 for ( byte segment = 0; segment < 8; segment++) { boolean Status = bitRead(digit[digit2],segment); // mengirim digit kedua digitalWrite(pinSegment[segment],Status); } digitalWrite(segment2,LOW); // hidupkan 7 segment 2 delay(5); } }
pada kode diatas ada sebaris kode seperti ini
persen = map(analogRead(A0),0,1023,0,99);
Baris kode tersebut adalah untuk memetakan nilai dari data analog yang berupa nilai integer 0 – 1023 menjadi bentuk persen 0 – 99, kalian bisa mengubahnya menjadi
persen = map(analogRead(A0),0,1023,0,10);
jika kalian ingin memetakan nilai nilai putaran variable resisitor menjadi 0 – 10, kalian juga dapat menampilkan data lain misalnya data jarak dari sensor ultrasonic atau menampilkan data jam menggunakan rtc agar kalian bisa lebih mahir lagi tentang koding arduinonya 🙂
Sekian dulu artikel kali ini, semoga bermanfaat, jika ada yang perlu ditanyakan silahkan sampaikan di kolom komentar, sekian wassalamu’alaikum.
bagaimana kalau 3 digit…
mohon petunjuknya untuk saya pelajari lagi.
kirim ke email saya..
[email protected]
JOSS BANGET NIH SITUS……! NGEBANTU GUA BELAJAR ARDUINO MAKASIH BANYAK GAN……………………!
terima kasih gan, jika perlu bantuan sampaikan saja.
Terima Kasih, sangat membantu dan sangat menginspirasi.. saya sedang membutuhkan program ini untuk menghitung skor bulutangkis…kalau boleh bertanya, bagaimanakah skemanya apabila program ini diberi tombol up, down dan reset…mohon maaf semoga penjelasan saya bisa dipahami.. terima kasih
bisa hubungi ini mas untuk pemesanan program berbayar 🙂 085728775753