Mengendalikan 4 Digit 7 Segment Dengan 3 Pin Arduino


74HC595 adalah komponen yang memiliki fungsi sebagai shift register serial to parallel 8-bit, yaitu berarti mengubah inputan berupa data serial ke bentuk output paralel 8bit. Komponen ini sering dimanfaatkan untuk ekspansi port pada mikrokontroler atau fungsi lainnya. Intinya dapat menghemat port karena kita hanya membutuhkan 2 atau 3 pin saja untuk menghasilkan 8 pin baru, bahkan kelipatan 8 yang sangat banyak jika digabungkan.

Dalam pengaplikasiannya IC ini seringkali digunakan untuk membuat matrix led yang membutuhkan banyak sekali port output untuk mengendalikan tiap kolom dotmatrix. Namun perlu diingat bahwa kecepatan data serial dan paralel berbeda. Jika paralel data semisal 8bit dikirimkan akan langsung terkirim karena paket dikirim 8bit bersamaan. Berbeda dengan data serial yang harus bergantian sehingga memerlukan waktu penundaan per bit yang dikirimkan.


Namun kali ini saya menggunakannya untuk mengendalikan sebuah Seven Segment. Rangkian ini dapat digunakan untuk semua jenis ukuran Seven Segment, mulai dari ukuran 0,56" sampai dengan 4" keatas. Namun untuk Segment yang besar disarankan untuk menambah IC ULN2003 sebagai Pendrive Arus yang besar. Untuk penggunaan IC ULN2003 akan dibahas dipostingan Selanjutnya.

Pin inti dalam IC ini adalah OE (Output Enable), MR (Reset), DS (Data), SH_CP (Clock), ST_CP (Leached) dan Q0 s/d Q7 untuk outputnya dapat dilihat pada slide gambar.

Untuk menggunakan IC ini dengan cara memberi tegangan 5v pada kaki 16 dan GND pada kaki 8. Memberi logika 1 pada MR agar tidak tereset, dan memberi logika 0 pada EO. Data yang akan dikirim diset di pin DS (Data) misal kita ingin mengirimkan data 0 maka pin DS diberi logika 0, sedangkan SH_CP dan ST_CP dapat digabung untuk menjalankan clock. 

Tanpa panjang lebar bagi teman-teman yang ingin mencobanya. silahkan merangkai seperti gambar diatas dan upload source code dibawah ini.



Program Utama

=================================Source Code================================

#include "Wire.h"
#define LATCH 4
#define CLK 3
#define DATA 2

//bilangan HEX Array
byte digit[10]= {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x7, 0x7F, 0x6F};//tanpa uln2003

int i;

void setup(){
 
  pinMode(LATCH, OUTPUT);
  pinMode(CLK, OUTPUT);
  pinMode(DATA, OUTPUT);
 
}

void loop(){
  for(int i=0; i<10; i++){
    for(int j=0; j<10; j++){
      for(int k=0; k<10; k++){
        for(int l=0; l<10; l++){
      digitalWrite(LATCH, LOW);
      shiftOut(DATA, CLK, MSBFIRST, ~digit[l]); // digitempat
      shiftOut(DATA, CLK, MSBFIRST, ~digit[k]);  // digittiga
      shiftOut(DATA, CLK, MSBFIRST, ~digit[j]);   // digitdua
      shiftOut(DATA, CLK, MSBFIRST, ~digit[i]);  // digitsatu
      digitalWrite(LATCH, HIGH);
      delay(50);
        }
      }
    }
  }
}


Pada pemograman ini saya menggunakan byte binner yang dirubah ke Hexadecimal. jadi teman teman bisa mebuat costum angka sesuai keinginan.



Pada postingan ini saya juga menyediakan File Simulasi untuk Proteus yang bisa langsung di download dengan cara klik tombol download dibawah ini.
Download


Untuk Hasil Simulasi Bisa dilihat pada Video Dibawah ini!

2 comments

edi said...

di sketch setelah array bilangan hexa ada catatan tanpa uln. apakah bisa sketch tersebut dipakai dg mengubah rangkaian menggunakan ic uln?

ali said...

thaks
but ULN2003

Dicky B_Mz. Powered by Blogger.