Reference   Language | Libraries | Comparison | Changes

shiftOut()

Beschreibung

Verschiebt ein Byte von Daten um ein Bit. Beginnend vom wichtigsten( d.h. ganz links) zum unwichtigsten( d.h. ganz rechts) Bit. Jedes Bit wird seinerseits mit einem Datenpin geschrieben, wonach ein Clock Pin gepulst(High dann Low) wird um zu zeigen das der Pin verfügbar ist.

Beachte: Wenn Sie eine Kopplung mit einem Gerät machen, welches durch die Anstiegkante getaktet ist, versichern Sie sich, dass der Clock Pin auf low steht bevor shiftOut() aufgerufen wird, z.B. mit dem Aufruf digitalWrite(clockPin, LOW).

Diese ist eine Softwareimplementation; Siehe auch SPI library, welche eine Hardwareimplementation bereitstellt, die schneller ist, aber nur auf bestimmten Pins funktioniert.

Syntax

shiftOut(dataPin, clockPin, bitOrder, value)

Parameter

dataPin: Der Pin auf dem die einzelnen Bits ausgegeben werden (int)

clockPin: Der Pin zum Umschalten, sobald der dataPin auf den richtigen Wert gesetzt wurde (int)

bitOrder: in welcher Reihenfolge verschoben werden soll; entweder MSBFIRST oder LSBFIRST.
(Wichtigstes Bit zuerst oder unwichtigstes Bit zuerst)

value: Die Daten zum Verschieben (byte)

Rückgabewerte

Keine

Notiz

Der dataPin und der clockPin müssen schon durch den Aufruf pinMode() als Ausgang konfiguriert sein.

shiftOut ist aktuell für 1 Byte (8 Bits) Ausgaben geschrieben, also werden zwei Operationen für eine Ausgabe größer als 255 benötigt.


// Do this for MSBFIRST serial
int data = 500;
// shift out highbyte
shiftOut(dataPin, clock, MSBFIRST, (data >> 8));  
// shift out lowbyte
shiftOut(data, 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));
 

Beispiel

Für den in der Anlage hinterlegten Schaltkreis, siehe Tutorial zur Kontrolle eines 74HC595 Schieberegisters?.

//**************************************************************//
//  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);
  }
}
 

Mehr Informationen:

Reference Home

Corrections, suggestions, and new documentation should be posted to the Forum.

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.

Share