shiftIn()
概要
shiftIn()は、1ビットずつ送られてくるデータを取りこみ、1バイトのデータを作成します。
shiftIn()のリファレンスはこちらをご覧ください。
ソースコード
shiftIn()は、hardware/arduino/avr/cores/arduino/wiring_shift.c に定義されています。以下に全ソースコードを示します。
|
|
入力はdataPin、clockPin、bitOrderで、すべてuint8_tです。uint8_tを返します。
|
|
8ビット分のデータを読み取るためループします。最初に、digitalWrite()で、clockPinにHIGHを出力します。
|
|
次に、digitalRead()で読み取った値を、valueに詰めていきます。
|
|
bitOrderがLSBFIRSTの場合は最下位ビットから詰めていきます。このため、i番目のループで、valueの第iビットに読み取った値を代入します。bitOrderがLSBFIRSTでない場合は、最上位ビットから詰めていきます。このため、i番目のループで、valueの第(7-i)ビットに読み取った値を代入します。
その後、clockPinにLOWを出力します。
最後に、valueを返却します。
|
|
shiftIn()は、8ビット固定で読み取るので、異なるビット数の読み取りを行う場合には、このソースを参考にすればいいと思います。8ビットを超える値を読み取りたい場合は、変数の型などに注意する必要がありそうですが。
バージョン
Arduino AVR Boards 1.8.6
最終更新日
March 21, 2023