Home / Tutorial Arduino / Tutorial Arduino – Shift Register 74HC595N (Serial In Parallel Out)

Tutorial Arduino – Shift Register 74HC595N (Serial In Parallel Out)

kelas-fisika.com – Tutorial Arduino – Shift Register 74HC595N (Serial In Parallel Out)

Tutorial kelas-fisika.com kali ini akan menjelaskan bagaimana cara memperpanjang pin output board pada Arduino.  dengan bantuan tutorial ini Anda bisa meningkatkan jumlah pin output dari board Arduino. Sebuah tutorial langkah demi langkah diilustrasikan untuk memperpanjang pin output Arduino. Tutorial ini menggunakan Shift Register 74HC595N untuk Serial in dan Parallel out. IC register ini mengambil 3 pin input dan memberikan output sebanyak 8 Pins. Dengan demikian, ini menambah 3 pin menjadi 8 pin.

Shift Register SN74HC595N

Ini adalah register populer yang kami gunakan dalam tutorial ini. Hal ini membutuhkan antarmuka tiga pin dari Arduino

  • Data pin: Data dikirim dalam mode serial.
  • Clock Pin: Jam berjalan pada pin ini
  • Pin Latch: Pin ini digunakan untuk berpindah sehingga register geser menunjukkan data 8 bit pada output.

datasheet dari IC SNHC595N dapat didownload disinia

Berikut adalah diagram pinout dari shift SN74HC595N Register:

Hardware yang dibutuhkan

Berikut Hardware akan diminta untuk melakukan sketsa register geser ini.

  • Arduino UNO
  • Breadboard
  • 74HC595N Shift Register
  • LED
  • Resistor 1K
  • Jumper

Skema rangkaian

Buat rangkaian berikut dengan bantuan komponen yang disebutkan di atas.

Pemrograman

Begitu kita selesai dengan bagian sirkuit, inilah program kita ke sirkuit ini. Setiap perintah dari program berikut dijelaskan di bagian komentar. Beberapa fungsi yang perlu dipertimbangkan untuk sketsa ini.

shiftWrite(Pin, State): Fungsi ini sama dengan fungsi digitalWrite. Itu membuat Pin HIGH / LOW. Penggunaannya sama dengan fungsi digitalWrite.

increament(): Fungsi ini dirancang untuk rangkaian LED pada register geser, LED mulai menyala dari LED 0 sampai LED 7 dan karena semua ON ON ini mulai OFF dari LED 7 ke LED 0.

OneByOne(): Fungsi ini mirip dengan fungsi penambahan di atas () namun perbedaannya adalah bahwa dalam fungsi ini hanya satu LED yang menyala setiap kali. Jadi dalam fungsi ini LED mulai menyala dari LED 0 sampai LED 7 dan dalam urutan terbalik juga.

AllHigh(): Fungsi ini membuat semua pin output HIGH.

AllLow(): Fungsi ini membuat semua pin output LOW.

SOS(): Fungsi ini mengulang fungsi AllHigh() dan AllLow() 10 kali dengan interval 100ms antara dua langkah.

Anda bisa mendownload kode ini (Arduino Sketch) Disini.

int DataPin = 2;  // Data Pin is connected to Pin No. 2
int ClockPin = 3; // Data Pin is connected to Pin No. 3
int LatchPin = 4; // Data Pin is connected to Pin No. 4

byte Data = 0;  // 8 Bit Data to be sent through DataPin

void setup()
{
  pinMode(DataPin, OUTPUT);   // All 3 pins are output
  pinMode(ClockPin, OUTPUT);  
  pinMode(LatchPin, OUTPUT);
}


void loop()
{
  
  increment(); // LEDs increment start from 0 - 7   
  delay(2000);  
  SOS();        // All LEDs ON and OFF 10 times
  OneByOne();   // LEDs Glow one by one from 0 to 7
  delay(2000);
  

}

// Function defined below-

void shiftWrite(int Pin, boolean State) // Function is similar to digitalWrite 
{                                       // State-0/1 | Pin - Pin No.
  bitWrite(Data,Pin,State);             // Making Pin(Bit) 0 or 1
  shiftOut(DataPin, ClockPin, MSBFIRST, Data); // Data out at DataPin
  digitalWrite(LatchPin, HIGH);                // Latching Data
  digitalWrite(LatchPin, LOW);
}

void increment()   //LEDs increment start from 0 - 7 
{
  int PinNo = 0;
  int Delay = 100; 
  
  for(PinNo = 0; PinNo < 8; PinNo++)
  {
    shiftWrite(PinNo, HIGH);
    delay(Delay);                
  }
  for(PinNo = 7; PinNo >= 0; PinNo--)
  {
    shiftWrite(PinNo, LOW);
    delay(Delay);                
  }
}

void OneByOne()  // LEDs Glow one by one from 0 to 7
{
  int PinNo = 0;
  int Delay = 100; 
  
  for(PinNo = 0; PinNo < 8; PinNo++)
  {
    shiftWrite(PinNo, HIGH);
    delay(Delay); 
    shiftWrite(PinNo, LOW);    
  }
  for(PinNo = 7; PinNo >=0 ; PinNo--)
  {
    shiftWrite(PinNo, HIGH);
    delay(Delay); 
    shiftWrite(PinNo, LOW);    
  }

}

void AllHigh()   // sets all High
{
  int PinNo = 0;
  for(PinNo = 0; PinNo < 8; PinNo++)
  {
   shiftWrite(PinNo, HIGH);  
  }
}

void AllLow()   // Sets all low
{
  int PinNo = 0;
  for(PinNo = 0; PinNo < 8; PinNo++)
  {
   shiftWrite(PinNo, LOW);  
  }
}

void SOS(){                  // All LEDs ON and OFF 10 times
  for (int x=0; x<10; x++){    
  AllHigh();
  delay(100);
  AllLow();
  delay(100);
  }
}


6. Mengikuti Produk Robo India bisa bermanfaat untuk rangkaian ini:

Jika Anda menggunakan array LED ini, Anda akan menghemat jumper dan sirkuit akan bebas dari gangguan.

About kelas-fisika

Check Also

Modul Microphone Mic MAX9841

kelas-fisika.com – Modul Microphone Mic MAX9841 Modul amplifier mikrofon mewah ini adalah  built in gain control …

Tinggalkan Balasan

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Powered by themekiller.com