IOT/M2M

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 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, silahkan dicoba. Semoga bermanfaat.

 

PT. Konekthing Benda Pintar

 

Jl. Ir H. Juanda No.88 a, Kemiri Muka, Kecamatan Beji, Kota Depok, Jawa Barat 16423

 

(021) 77808509

 

info@konekthing.com

 

 

 

Konekthing Bandung

 

Jl. Sukaresmi IV No.7, Ciumbuleuit, Kec. Cidadap, Kota Bandung, Jawa Barat 40142

 

 

 

Konekthing Yogyakarta

 

Jl. Duwet, RT.02/RW.32, Duwet, Sendangadi, Kec. Mlati, Kabupaten Sleman, Daerah Istimewa Yogyakarta 55285

 

(0274) 2883817, 0812-2510-1600

 

Terima kasih, wassalamu’alaikum



Share to :

Related Posts

Apa Internet of Things (IOT) itu?

Biasanya dalam kehidupan sehari-hari kita, saat bangun tidur. ketika makan,...

Apa itu sensor cahaya?  

Sensor cahaya adalah komponen elektronika yang dapat mengubah besaran elektrik pada saat...

Peralatan elektronik di kehidupan kita sudah menjadi sahabat yang menemani aktivitas kita sehari-hari. Seringnya penggunaan...

Categories

Search Result: