shiftOut()

Beschreibung

Shiftet ein Byte von Daten hinaus, ein Bit pro Zeiteinheit. Beginnt entweder mit dem most significant bit (linkestes Bit) oder dem least significant bit (rechtestes Bit). Für jedes Bit wird der clock pin HIGH geschalten. Anschließend wird das nächste Bit gelesen und der clock pin auf LOW gesetzt.

Wenn du mit einem Gerät arbeitest, das bei steigender Flanke die clock auslöst, musst du darauf achten, dass der clock pin LOW ist, bevor das erste Mal shiftIn() aufgerufen wird. Das ist z.B. möglich mit einem Aufruf von digitalWrite(clockPin, LOW).

Bemerkung: Das ist eine Softwareimplementierung; Arduino bietet auch eine SPI-Bibliothek an, die eine Hardwareimplementierung benutzt. Diese ist zwar schneller, funktioniert aber nur mit spezifischen Pins.

Syntax

shiftOut(dataPin, clockPin, bitOrder, value)

Parameter

  • dataPin: Der Pin, auf dem jedes Bit ausgegeben wird. Erlaubte Datentypen: int.
  • clockPin: Der Pin, auf dem das Signal gesetzt wird, um den dataPin zu lesen. Erlaubte Datentypen: int.
  • bitOrder: Welche Ordnung verwendet werden soll, um zu shiften. Entweder ist dies MSBFIRST oder LSBFIRST.
  • (Most Significant Bit First oder Least Significant Bit First)
  • value: Die Daten, die hinausgeshiftet werden sollen. Erlaubte Datentypen: byte.

Rückgabewert

Nichts.

Beispielcode

Für eingebaute Schaltkreise beachte das Tutorial, wie man ein 74HC595 Shift-Register verwendet.

//**************************************************************// // Name : shiftOutCode, Hello World, Auf Deutsch übersetzt // // Author : Carlyn Maw,Tom Igoe // // Date : 25 Oct, 2006 // // Version : 1.0 // // Notes : Code, um mit einem 74HC595 Shift Register // // : von 0 to 255 zu zählen // //**************************************************************** //Pin verbunden mit ST_CP des 74HC595 int latchPin = 8; //Pin verbunden mit SH_CP des 74HC595 int clockPin = 12; ////Pin verbunden mit DS des 74HC595 int dataPin = 11; void setup() { //Pins auf output setzen, weil diese im loop() verwendet werden pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { //Zähler-Routine for (int j = 0; j < 256; j++) { //Register pin grounden und low halten, solange übertragen wird digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, j); //Register pin auf high setzen, um dem Chip zu signalisieren, dass //er nicht mehr länger Informationen lesen muss digitalWrite(latchPin, HIGH); delay(1000); } }

※ Anmerkungen und Warnungen:

Der dataPin und der clockPin müssen vorher als Outputs konfiguriert sein. Dies wird mit dem Aufruf von pinMode() erreicht.

shiftOut shiftet aktuell maximal 1 Byte (8 bits) hinaus. Wenn Werte größer 255 hinausgeshiftet werden sollen, benötigt das Register 2 Schritte.

// Beispiel für MSBFIRST: int data = 500; // High byte hinausshiften shiftOut(dataPin, clock, MSBFIRST, (data >> 8)); // Low byte hinausshiften shiftOut(dataPin, clock, MSBFIRST, data); // Beispiel für LSBFIRST: data = 500; // Low byte hinausshiften shiftOut(dataPin, clock, LSBFIRST, data); // Low byte hinausshiften shiftOut(dataPin, clock, LSBFIRST, (data >> 8));

Siehe Auch

ARDUINO KAUFEMPFEHLUNG

Arduino UNO R3
Arduino Starter Kit
Bitte Beachten: Dies sind Partnerschaftslinks. Wenn Sie die Komponenten über diese Links Kaufen, können wir eine Provision erhalten, ohne weitere Kosten für Sie. Wir Schätzen es.

※ UNSERE BOTSCHAFTEN