Universitas Gadjah Mada Menara Ilmu Mikrokontroller
Universitas Gadjah Mada
  • Home
  • Kabar Terkini
  • Artikel
    • Teknologi Mikrokontroler
    • Sensor
    • Pemrograman
    • Penelitian
  • Profil
  • Forum
  • Beranda
  • Pemrograman
  • Program 7segment 4×1

Program 7segment 4×1

  • Pemrograman
  • 2 October 2018, 14.22
  • Oleh: roghib.muh
  • 0

7segment 4×1 prinsipnya sama dengan 7 segment 1×1 hanya saja terdapat 4 digit 7segment yang dapat diatur tampilannya. Antara digit 1 sampai digit 4 saling terhubung, apabila diberikan input misalnya angka 1 maka keempat 7segment akan menampilkan angka 1. Nah, agar tampilan masing-masing digit berbeda maka diperlukan teknik switching pada power masing-masing digit 7 segment. Bila ingin menampilkan angka 1234 maka langkahnya, tulis angka 1 lalu nyalakan digit 1, tulis angka 2 lalu nyalakan digit 2, tulis angka 3 lalu nyalakan digit 3, dan tulis angka 4 lalu nyalakan digit 4. Jika cara tersebut dilakukan dengan kecepatan tinggi maka hasilnya terlihat angka 1234 karena mata manusia tidak dapat menangkap perpindahan angka tersebut. 7seg 4×1 tersedia pada integrated output, dan dapat digunakan dengan menyambungkan pin-pin yang ada ke Arduino.

1. Kebutuhan

  • Arduino UNO
  • 7segment 4×1 common anoda
  • kabel
  • Breadboard

2. Skematik

Gambar 1. pin pada 7segment 4×1 common anoda

Gambar 2. Skematik isi LED dan konfigurasi pin pada 7 segment 4x1common anoda

Gambar 4. pemasangan 7segment 4×1 pada Arduino

3. Program

  // rubah nilai 0 menjadi 1 untuk 7segment common katoda

  #define commonCathode 1

  // deklarasi posisi pin digital Arduino untuk setiap segmen

  int segmentA = 2;

  int segmentB = 3; 

  int segmentC = 4; 

  int segmentD = 5; 

  int segmentE = 6;

  int segmentF = 7;

  int segmentG = 8; 

  int segmentDP = 9;

  int digit1 = A0; 

  int digit2 = A1;

  int digit3 = A2; 

  int digit4 = A3;

  int num; 

  int cetak =0;

  int cobo;

  String inputString = “0000”;
  // nilai awal string

  boolean  stringComplete = false;

  //deklarasi variabel array yang berisi angka untuk 7segmen

  byte numbers[10] = { 

  B11000000, // 0

  B11111001, // 1

  B10100100, // 2

  B10110000, // 3

  B10011001, // 4

  B10010010, // 5

  B10000010, // 6

  B11111000, // 7

  B10000000, // 8

  B10010000 // 9

  };

  void setup()
  {

   num = 1234;

   //deklarasi pin segmen sebagai output

   pinMode(segmentA, OUTPUT);

   pinMode(segmentB, OUTPUT);

   pinMode(segmentC, OUTPUT); 

   pinMode(segmentD, OUTPUT);

   pinMode(segmentE, OUTPUT);

   pinMode(segmentF, OUTPUT);

   pinMode(segmentG, OUTPUT);

   pinMode(digit1, OUTPUT);

   pinMode(digit2, OUTPUT);

   pinMode(digit3, OUTPUT);

   pinMode(digit4, OUTPUT);

   writeDot(0);
   // memanggil rutin untuk mematikan titik(dot)

   Serial.begin(9600);

  }

  //rutin yang dijalankan saat dipanggil

  void writeDot(byte dot)
  {

   digitalWrite(segmentDP, dot); //menulis sinyal digital ke segmen dot

  }

  //rutin yang dijalankan saat dipanggil

  void sevenSegWrite(byte digit)
  {

   byte pin = 2;    //deklarasi pin

   int number = numbers[digit];    //deklarasi nilai number sebagai nilai variabel array

   //perulangan dari 0 sampai 6(membaca biner untuk nyala 7segmen)

   for(int bitIndex = 0; bitIndex < 7; bitIndex++){

   //dijalankan saat setingan sebagai common katoda

   if(commonCathode)

   { 

    digitalWrite(pin, 1–bitRead(number, bitIndex)); //menulis sinyal digital sesuai biner

   }

   //dijalankan saat setingan sebagai common anoda

   else
   {

    digitalWrite(pin, bitRead(number, bitIndex));    //menulis sinyal digital sesuai biner

   }

   ++pin;//menambah nilai pin

   }

  }

  //rutin tampilan 7segment dijalankan saat dipanggil

  void dispNumber(int toDisplay)

  {

   #define DIGIT_ON LOW    //set nyala digit saat mendapat sinyal low

   #define DIGIT_OFF HIGH    //set digit mati saat mendapat sinyal high

   //perulangan dari 4 ke 1

   for(int digit = 4; digit > 0; digit–)
   {

   //switching nyala digit

   switch(digit)
   {

    case 1: //jika 1

          digitalWrite(digit1, DIGIT_ON);//digit 1 nyala

          cetak = toDisplay %10;

          sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka
          toDisplay = toDisplay /10;

          digitalWrite(digit2, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit3, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit4, DIGIT_OFF);//digit 1 nyala

          break; //keluar perulangan


    case 2:    //jika 2

          digitalWrite(digit2, DIGIT_ON);//digit 2 nyala

          cetak = toDisplay % 10;

          sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka

          toDisplay = toDisplay/10;

          digitalWrite(digit1, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit3, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit4, DIGIT_OFF);//digit 1 nyala

          break;    //keluar perulangan

    case 3:    //jika 3

          digitalWrite(digit3, DIGIT_ON);//digit 3 nyala

          cetak = toDisplay %10;

          sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka

          toDisplay = toDisplay/10;

          digitalWrite(digit1, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit2, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit4, DIGIT_OFF);//digit 1 nyala

          break;    //keluar perulangan

    case 4:    //jika 4

          digitalWrite(digit4, DIGIT_ON);//digit 4 nyala

          cetak = toDisplay%10;

          sevenSegWrite(cetak);//memanggil rutin untuk menyalakan segment yang tepat sehingga membentuk angka

          toDisplay = toDisplay/10;

          digitalWrite(digit1, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit2, DIGIT_OFF);//digit 1 nyala

          digitalWrite(digit3, DIGIT_OFF);//digit 1 nyala

          break;    //keluar perulangan

   }

   delay(2);

   }

  }

  void loop(){

  if (stringComplete) 
  {

   cobo = inputString.toInt();

   inputString = “”;

   stringComplete = false;

  }

   dispNumber(cobo);//tampilkan nilai ke 7segment

  }

  void serialEvent()
  {

   while (Serial.available())

   {

    // membaca inputan serial

    char inChar = (char)Serial.read();

    // menambahkan ke input string

    inputString += inChar;

    // jika terdapat carriage return atau newline maka penambahan string selesai

    if(inChar == ‘\n’)
    {

     stringComplete = true;

    }

   }

  }

4. video

Leave A Comment Cancel reply

Your email address will not be published. Required fields are marked *

*

Universitas Gadjah Mada

Menara Ilmu Mikrokontroler FMIPA
Universitas Gadjah Mada
Kontak :
roghib.muh@ugm.ac.id
+62 856-4781-7270

© Universitas Gadjah Mada

KEBIJAKAN PRIVASI/PRIVACY POLICY

[EN] We use cookies to help our viewer get the best experience on our website. -- [ID] Kami menggunakan cookie untuk membantu pengunjung kami mendapatkan pengalaman terbaik di situs web kami.I Agree / Saya Setuju