shiftOut()



Açıklama

Bir bayt veriyi bir kerede bir bit kaydırır. En çok (yani en soldaki) veya en az (en sağdaki) anlamlı bitten başlar. Her bit, bir veri pinine sırayla yazılır, bundan sonra bitin kullanılabilir olduğunu göstermek için bir saat pimi darbelenir (yüksek, sonra düşük).

Not - yükselen kenarlarla shiftOut() , shiftOut() çağrısından önce, örneğin digitalWrite(clockPin, LOW) çağrısında saat piminin düşük olduğundan emin olmanız gerekir.

Bu bir yazılım uygulamasıdır; ayrıca daha hızlı ancak yalnızca belirli iğneler üzerinde çalışan bir donanım uygulaması sağlayan SPI kitaplığına bakın.

Sözdizimi

shiftOut(dataPin, clockPin, bitOrder, value)

Parametreler

dataPin : her bitin verileceği pin. İzin verilen veri türleri: int .
clockPin : dataPin doğru değere ayarlandıktan sonra geçiş yapılacak pim. İzin verilen veri türleri: int .
bitOrder : bitleri kaydırmak için hangi sıra; MSBFIRST veya LSBFIRST. (Önce En Önemli Bit veya Önce En Az Önemli Bit).
value : kaydırılacak veriler. İzin verilen veri türleri: byte .

İadeler

Hiçbir şey değil

Örnek Kod

Eşlik eden devre için, 74HC595 vardiya kaydını kontrol etme kılavuzuna bakın.

//**************************************************************//
//  Name    : shiftOutCode, Hello World                         //
//  Author  : Carlyn Maw,Tom Igoe                               //
//  Date    : 25 Oct, 2006                                      //
//  Version : 1.0                                               //
//  Notes   : Code for using a 74HC595 Shift Register           //
//          : to count from 0 to 255                            //
//****************************************************************

//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;

void setup() {
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  //count up routine
  for (int j = 0; j < 256; j++) {
    //ground latchPin and hold low for as long as you are transmitting
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, j);
    //return the latch pin high to signal chip that it
    //no longer needs to listen for information
    digitalWrite(latchPin, HIGH);
    delay(1000);
  }
}

Notlar ve Uyarılar

DataPin ve clockPin zaten pinMode () çağrısı ile çıkış olarak yapılandırılmış olmalıdır.

shiftOut şu anda çıkış 1 baytına (8 bit) yazılmıştır, bu nedenle 255'ten büyük değerlerin çıkışı için iki adımlı bir işlem gerektirir.

 // Do this for MSBFIRST serial int data = 500; // shift out highbyte shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // shift out lowbyte shiftOut(dataPin, clock, MSBFIRST, data); // Or do this for LSBFIRST serial data = 500; // shift out lowbyte shiftOut(dataPin, clock, LSBFIRST, data); // shift out highbyte shiftOut(dataPin, clock, LSBFIRST, (data >> 8)); 

Ayrıca Bakınız