shiftOut()

[Advanced I/O]

Açıklama

Bir bayt veriyi her seferinde bir bit dışarı kaydırır. En çok (yani en soldaki) veya en az (en sağdaki) anlamlı bitten başlar. Her bit sırayla bir veri pinine yazılır, ardından bitin mevcut olduğunu belirtmek için bir saat pini atılır (önce yüksek, sonra düşük alınır).

Note- if you’re interfacing with a device that’s clocked by rising edges, you’ll need to make sure that the clock pin is low before the call to shiftOut(), e.g. with a call to digitalWrite(clockPin, LOW).

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

Sözdizimi

shiftOut(dataPin, clockPin, bitOrder, value)

Parametreler

dataPin: her bitin çıktısının alınacağı pin. İzin verilen veri türleri: int.

clockPin: dataPin değeri doğru değere ayarlandıktan sonra değiştirilecek olan pin. İzin verilen veri türleri: int.

bitOrder: bitlerin hangi sırayla kaydırılacağını belirler; MSBFIRST veya LSBFIRST. (Önce en önemli bit veya En az önemli bit.)

value: Kaydırılacak veriler. İzin verilen veri türleri: byte:

Geri Dönüş

Yok

Örnek Kod

For accompanying circuit, see the tutorial on controlling a 74HC595 shift register.

 
//**************************************************************// // İsim : shiftOutCode, Hello World // // Kullanıcı : Carlyn Maw,Tom Igoe // // Tarih : 25 Oct, 2006 // // Versiyon : 1.0 // // Not : 74HC595 Shift Register kullanma kodu // // : 0'dan 255'e kadar saymak için // //**************************************************************** //Pin bağlantısı to ST_CP of 74HC595 int latchPin = 8; /Pin bağlantısı to SH_CP of 74HC595 int clockPin = 12; ////Pin bağlantısı to DS of 74HC595 int dataPin = 11; void setup() { //ana döngüde adreslendikleri için pinleri çıkışa ayarlayın pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { //rutin olarak değer arttırma for (int j = 0; j < 256; j++) { //topraklama yaptığınız sürece iletim mandalını sabitleyin ve düşük tutun digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, j); //çipi işaretlemek için mandal pimini yükseğe döndürün //no longer needs to listen for information digitalWrite(latchPin, HIGH); delay(1000); } }

Notlar ve Uyarılar

dataPin ve clockPin, için yapılan bir çağrıda pinMode() önceden yapılandırılmış olmalıdır.

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

 
// MSBFIRST serial için yapılandırma int data = 500; // yüksek bite kaydır shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // düşük bite kaydır. shiftOut(dataPin, clock, MSBFIRST, data); // Or do this for LSBFIRST serial data = 500; // düşük bite kaydır shiftOut(dataPin, clock, LSBFIRST, data); // yüksek bite kaydır shiftOut(dataPin, clock, LSBFIRST, (data >> 8));