Pemrograman

Menampilkan Data Analog dengan Seven Segment menggunakan Arduino

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:

  1. Arduino Uno
  2. Breadboard
  3. kabel jumper
  4. resistor 330 ohm 4 pcs
  5. 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.

Giri Wahyu Pambudi

Giri Wahyu Pambudi - Seorang Pemuda Desa yang berkeinginan ikut membangun Indonesia dengan Sedikit Ilmu yang dimiliki SMK N 2 Wonogiri lulus 2015 UNIV Negeri Yogyakarta lulus 2019 2019 - Sekarang Bekerja di SMK Gajah Mungkur 1 Wuryantoro, Wonogiri

View Comments

  • JOSS BANGET NIH SITUS......! NGEBANTU GUA BELAJAR ARDUINO MAKASIH BANYAK GAN........................!

  • 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

Share
Published by
Giri Wahyu Pambudi

Recent Posts

Adab Buang Hajat

Kitab Rujukan : Shahih Adab Islamiyyah karya Dr. Wahid bin Abdissalam bali 1.Berdoa ketika masuk…

1 tahun ago

Adab Ketika Bangun Tidur

Berdzikir kepada Allah Ketika Bangun Tidur ุนูŽู†ู’ ุญูุฐูŽูŠู’ููŽุฉูŽ ุฑูŽุถููŠูŽ ุงู„ู„ู‘ูŽู‡ู ุนูŽู†ู’ู‡ู ู‚ูŽุงู„ูŽ: ูƒูŽุงู†ูŽ ุงู„ู†ู‘ูŽุจููŠู‘ู ุตูŽู„ู‘ูŽู‰…

1 tahun ago

Kisah Tiga Orang yang Terjebak di Dalam Gua dan Bertawasul Dengan Beramal Saleh

ุนู† ุนูŽุจู’ุฏูŽ ุงู„ู„ู‘ูŽู‡ู ุจู’ู†ูŽ ุนูู…ูŽุฑูŽ ุฑูŽุถููŠูŽ ุงู„ู„ู‘ูŽู‡ู ุนูŽู†ู’ู‡ูู…ูŽุง - ู‚ูŽุงู„ูŽ ุณูŽู…ูุนู’ุชู ุฑูŽุณููˆู„ูŽ ุงู„ู„ู‘ูŽู‡ู ุตู„ู‰ ุงู„ู„ู‡…

1 tahun ago

2 Nikmat yang sering dilupakan Manusia : Sehat dan Waktu Luang

ุนูŽู†ู ุงุจู’ู†ู ุนูŽุจูŽู‘ุงุณู ุฑุถู‰ ุงู„ู„ู‡ ุนู†ู‡ู…ุง ู‚ูŽุงู„ูŽ-ย  ู‚ูŽุงู„ูŽ ุงู„ู†ูŽู‘ุจููŠูู‘ ุตู„ู‰ ุงู„ู„ู‡ ุนู„ูŠู‡ ูˆุณู„ู… โ€ย "โ€ ู†ูุนู’ู…ูŽุชูŽุงู†ู…

1 tahun ago

7 Golongan yang Mendapatkan Naungan Allah di Padang Mahsyar saat Hari Kiamat

Assalamu'alaikum, Catatan ini menjadi nasehat untuk diri kami pribadi dan umumnya untuk anak - anak…

1 tahun ago

Piston pin Offset – Alasan piston tidak boleh dipasang terbalik

Assalamu'alaikum warahmatullahi wabarakatuh sahabat otomotif :-) , kali ini kita akan bahas tentang piston pin…

4 tahun ago

Tampilan Versi Hemat Data