shiftIn()
Описание
Считывает байт (8 бит) данных побитово с пина данных. Начинает с самого старшего (т.е. крайнего левого) или самого младшего (крайнего правого) бита. Для каждого бита тактовый пин устанавливается в HIGH, следующий бит считывается с линии данных, а затем тактовый пин устанавливается в LOW.
Примечание
Если вы взаимодействуете с устройством, тактируемым по нарастающему фронту, необходимо убедиться, что тактовый пин находится в LOW перед первым вызовом shiftIn(), например, с помощью вызова digitalWrite(clockPin, LOW).
Примечание
Это программная реализация; Arduino также предоставляет библиотеку SPI, которая использует аппаратную реализацию. Она работает быстрее, но только на определённых пинах.
Синтаксис
Используйте следующую функцию для синхронного считывания последовательных данных:
byte incoming = shiftIn(dataPin, clockPin, bitOrder)
Параметры
Функция принимает следующие параметры:
dataPin: пин, с которого считываются данные. Допустимые типы данных:int.clockPin: пин, обеспечивающий тактовый сигнал.bitOrder: порядок сдвига битов: MSBFIRST или LSBFIRST (старший бит первым или младший бит первым).
Возвращаемое значение
Возвращает байт (0-255), представляющий 8 бит, считанных с устройства. Тип данных: byte.
Пример кода
#define DATA_PIN 4 // Пин, подключённый к выходу последовательных данных
#define CLOCK_PIN 5 // Пин, подключённый к входу тактового сигнала (CLK)
void setup() {
pinMode(DATA_PIN, INPUT);
pinMode(CLOCK_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Считываем 8 бит с линии данных с помощью shiftIn()
byte dataByte = shiftIn(DATA_PIN, CLOCK_PIN, MSBFIRST);
// Выводим байт в двоичном формате
Serial.print("Received Byte: ");
Serial.println(dataByte, BIN);
delay(1000); // Ждём перед следующим чтением
}