Arduinoリファレンス

Arduinoリファレンスの日本語訳のページです
garretlab
shiftOut()

名称

shiftOut()

説明

1バイトのデータから1ビットずつ取り出す。最上位ビット(MSB、一番左)もしくは最下位ビット(LSB,一番右)から取り出し始める。各ビットがデータピンに順に書き出された後、そのビットが利用可能であることを示すためにクロックピンにパルス(highもしくはlow)が一つ出力される。

(訳者註)概念図を以下に示します。

注意:立ち上がりクロックのデバイスを利用するときは、shiftOut()を呼ぶ前にクロックピンをLOWにしておく必要がある。例えば、digitalWrite(clockPin, LOW)を実行する。

注意:shiftOut()は、ソフトウェアによって実装されている。特定のピンでしか動作しないが、より高速のハードウェア実装を提供するSPI Librayも参照のこと。

書式

void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val);

引数

dataPin 各ビットを出力するピン。
clockPin dataPinに正しい値が出力された後、 パルスを出力するピン。
bitOrder ビットを出力する開始する順序。MSBFIRST(MSBから開始)もしくはLSBFIRST(LSBから開始)を指定する。
value データを取り出す値

戻り値

なし

注意

dataPinとclockPinとは、pinMode()を呼び出すことによってOUTPUT(出力)に設定していなければならない。

shiftOut()は、現状、1バイト(8ビット)だけ出力されるようになっている。255より大きい値を出力するためには2段階の操作が必要である。

// MSBFIRSTのシリアル用
int data = 500;
// 上位バイトを出力する
shiftOut(dataPin, clock, MSBFIRST, (data >> 8));
// 下位バイトを出力する
shiftOut(data, clock, MSBFIRST, data);

// LSBFIRSTのシリアル用
data = 500;
// 下位バイトを出力する
shiftOut(dataPin, clock, LSBFIRST, data);  
// 上位バイトを出力する 
shiftOut(dataPin, clock, LSBFIRST, (data >> 8)); 

使用例

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

バージョン

Arduino 1.8.2

オリジナルのページ

https://www.arduino.cc/en/Reference/ShiftOut

実装の解析

shiftOut()



メニューを表示するためにJavaScriptを有効にしてください。

inserted by FC2 system