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 🙂

Baca Juga  Cara Menampilkan Karakter Pada 7 Segment dengan Arduino

Baca Juga  Cara Menampilkan Karakter dari Arduino pada 7 Segment dengan Metode Scanning

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.

Vote and Share your Fell !
  • Fascinated
  • Happy
  • Sad
  • Angry
  • Bored
  • Afraid

About admin

Admin
Giri Wahyu Pambudi - Seorang Anak Desa yang berkeinginan membangun Indonesia dengan Sedikit Ilmu yang dimiliki

Artikel Serupa

Check Also

[Solved] Cara mengatasi DMD2 Led Matrix p10 Arduino yang error / Hang

3 comments

  1. bagaimana kalau 3 digit…
    mohon petunjuknya untuk saya pelajari lagi.
    kirim ke email saya..
    [email protected]

  2. FAROS FADLUR ROHMAN 161910201088

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

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *