Tutorial Arduino - Shift Register (Serial In Parallel Out)

arduinopedia.com - Tutorial Arduino - Shift Register (Serial In Parallel Out)
Tutorial arduinopedia.com ini menjelaskan bagaimana cara memperpanjang pin output Arduino Board. Ini adalah kendala utama Arduino. Tapi dengan bantuan tutorial ini Anda bisa meningkatkan pin output dari Arduino Board.
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 pada 8 Pins. Dengan demikian, ini menambah 3 pin menjadi 8 pin.

Shift Register SN74HC595N

Register SN74HC595N yang kami gunakan dalam tutorial ini adalah yang populer. Hal ini membutuhkan antarmuka tiga pin dari Arduino
  • Data pin: Data dikirim dalam mode serial.
  • Clock Pin: Clock berjalan pada pin ini
  • Pin Latch: Pin ini digunakan untuk berpindah sehingga register geser menunjukkan data 8 bit pada output.

Data Sheet SNHC595N dapat didownload disini:
Berikut adalah diagram pinout dari shift SN74HC595N Register:

Hardware yang dibutuhkan

Berikut Hardware akan diminta untuk melakukan sketsa shift register ini.
  • Arduino UNO
  • Breadboard
  • 74HC595N Shift Register
  • LED
  • Resistor 1K
  • Jumper

Skema Rangkaian

Buat rangkaian berikut dengan bantuan komponen yang disebutkan di atas.

Ini Skema Rangkaiannya

Pemrograman

Begitu kita selesai dengan bagian rangkaian, kita mulai program. 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 TINGGI.
AllLow(): Fungsi ini membuat semua pin output RENDAH.
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);
  }
}

Output : 


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.

Previous
Next Post »