shiftIn()

Last revision:2025/04/30

名称

shiftIn()

説明

1ビットずつデータを取り込み、1バイトのデータを作成する。最上位ビット(MSB、一番左)からもしくは最下位ビット(LSB、一番右)から始めることができる。クロックピンをHIGHにした後、ビットを読み取り、その後クロックピンをLOWにする。

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

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

書式

シリアルデータを同期型で読むには、以下の関数を使う。

byte incoming = shiftIn(dataPin, clockPin, bitOrder)

C言語シグネチャ(avr)

uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder);

引数

この関数は以下の引数を受け付ける。

dataPin各ビットを入力するピン。データ型: int
clockPindataPinから読みだすときに、きっかけを与えるための信号を与えるピン。
bitOrderビットを入力する順序。MSBFIRST(MSBから開始)もしくはLSBFIRST(LSBから開始)を指定する。

戻り値

この関数は、デバイスから読みだした8ビットを表すバイト(0-255)を返す。データ型: byte

コード例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#define DATA_PIN  4    // Pin connected to serial data output 
#define CLOCK_PIN 5    // Pin connected to clock input (CLK)

void setup() {
  pinMode(DATA_PIN, INPUT);
  pinMode(CLOCK_PIN, OUTPUT);

  Serial.begin(9600);
}

void loop() {
  // Read 8 bits from the data line using shiftIn()
  byte dataByte = shiftIn(DATA_PIN, CLOCK_PIN, MSBFIRST);

  // Print the byte in binary format
  Serial.print("Received Byte: ");
  Serial.println(dataByte, BIN);

  delay(1000); // Wait before next read
}

参照

オリジナルのページ

https://docs.arduino.cc/language-reference/en/functions/advanced-io/shiftIn/

実装の解析

shiftIn()

最終更新日

August 16, 2026

inserted by FC2 system