shiftOut()
一度に1ビットずつデータのバイトをシフトアウトします。
書式
void shiftOut(uint8 dataPin, uint8 clockPin, uint8 bitOrder, uint8 value)
一度に1ビットずつデータのバイトをシフトアウトします。
この関数は、バイト値の最上位ビットまたは最下位ビットのいずれかで開始し、各バイトを順にデータピンにシフトアウトします。 各ビットがデータピンに書き込まれた後、別個のクロックピンがパルスされて、新しいビットが利用可能であることを示す。
引数
dataPin : データをシフトアウトするピン
clockPin :dataPin からのデータ出力を指示するピン
bitOrder :シフトする順番; MSBFIRST (最上位ビット側から) または LSBFIRST(最下位ビット側から)
value :シフトアウトする値
解説
これはソフトウェア実装です。 また、ハードウェアSPIライブラリを利用することもできます。このライブラリは、この機能よりも高速で消費されるCPUサイクルを少なくします。 pinMode()の呼び出しによって、dataPinおよびclockPinがOUTPUTモードに設定されている必要があることに注意してください。 また、shiftOut()は一度に1バイト(8ビット)を出力するので、255より大きな値を出力するには複数のステップが必要です。
利用例
これらの例を使用するには、dataPinとclockPinを使用するピンの番号に置き換えます。
code:sample.ino
/* MSBFIRST example */
uint16 data = 500;
// shift out high byte
shiftOut(dataPin, clockPin, MSBFIRST, (data >> 8));
// shift out low byte
shiftOut(dataPin, clockPin, MSBFIRST, data);
/* LSBFIRST serial */
data = 500;
// shift out low byte
shiftOut(dataPin, clockPin, LSBFIRST, data);
// shift out high byte
shiftOut(dataPin, clockPin, LSBFIRST, (data >> 8));
Arduinoチュートリアルの例
code:sample.ino
//**************************************************************//
// 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);
}
}
関連項目
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。