shiftOut(dataPin, clockPin, bitOrder, value)原文1バイト分のデータを1ビットずつ「シフトアウト」します。最上位ビット(MSB)と最下位ビット(LSB)のどちらからもスタートできます。各ビットはまずdataPinに出力され、その後clockPinが反転して、そのビットが有効になったことが示されます。 この機能はソフトウエアで実現されています。より高速な動作が必要な場合はハードウエアで実現されているSPIライブラリを検討してください。 【パラメータ】 dataPin: 各ビットを出力するピン clockPin: クロックを出力するピン。dataPinに正しい値がセットされたら、このピンが1回反転します bitOrder: MSBFIRSTまたはLSBFIRSTを指定します。Most Significant Bit Firstは最上位ビットから送ること、Least Significant Bit Firstは最下位ビットから送ることを示します。 value: 送信したいデータ (byte) 【戻り値】 なし 【補足】 dataPinとclockPinは、あらかじめpinMode関数によって出力(OUTPUT)に設定されている必要があります。 【例】 int型のデータをLSB firstで送信します。データは2バイトの大きさなので、1度には送れません。ビットシフト演算を用いて1バイトずつ送ります。 int data = 500; shiftOut(data, clock, LSBFIRST, data); //2バイトの下位を送信 shiftOut(data, clock, LSBFIRST, (data >> 8)); //上位バイト 74HC595シフトレジスタを使って、8つのLEDをひとつずつ順番に光らせます。 int latchPin = 8; // 74HC595のST_CPへ
int clockPin = 12; // 74HC595のSH_CPへ
int dataPin = 11; // 74HC595のDSへ
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
// LED1からLED8までを順に光らせます
for (int j = 0; j < 7; j++) {
// 送信中のlatchPinはグランド(LOW)レベル
digitalWrite(latchPin, LOW);
// シフト演算を使って点灯するLEDを選択しています
shiftOut(dataPin, clockPin, LSBFIRST, 1<<j);
// 送信終了後latchPinをHIGHにする
digitalWrite(latchPin, HIGH);
delay(100);
}
}
ブレッドボードを使った接続の仕方は次のURLで紹介されています。 http://arduino.cc/en/Tutorial/ShiftOut [目次へ戻る] |
Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください
[ドキュメント一覧]