Arduino:Справочник языка Arduino/Функции/Дополнительные функции ввода/вывода/shiftIn(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 9: Строка 9:
Если вы работаете с девайсом, который синхронизируется по переднему фронту импульса, перед вызовом '''shiftIn()''' нужно обязательно перевести тактовый контакт в положении [[Arduino:Справочник языка Arduino/Константы/LOW|LOW]]. Сделать это можно, например, при помощи функции  
Если вы работаете с девайсом, который синхронизируется по переднему фронту импульса, перед вызовом '''shiftIn()''' нужно обязательно перевести тактовый контакт в положении [[Arduino:Справочник языка Arduino/Константы/LOW|LOW]]. Сделать это можно, например, при помощи функции  


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
digitalWrite(clockPin, LOW).
digitalWrite(clockPin, LOW).
</syntaxhighlight>
</syntaxhighlight>
Строка 19: Строка 19:
==Синтаксис==
==Синтаксис==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
byte incoming = shiftIn(dataPin, clockPin, bitOrder)
byte incoming = shiftIn(dataPin, clockPin, bitOrder)
</syntaxhighlight>
</syntaxhighlight>
Строка 25: Строка 25:
==Параметры==
==Параметры==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
dataPin — контакт, с которого будут считываться биты (тип данных — int)
dataPin — контакт, с которого будут считываться биты (тип данных — int)
clockPin — тактовый контакт, который будет переключатся с LOW на HIGH и наоборот, чтобы задавать «ритм» для считывания с dataPin
clockPin — тактовый контакт, который будет переключатся с LOW на HIGH и наоборот, чтобы задавать «ритм» для считывания с dataPin
Строка 33: Строка 33:
==Что возвращает==
==Что возвращает==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
Считанное значение (тип данных — byte)
Считанное значение (тип данных — byte)
</syntaxhighlight>
</syntaxhighlight>

Версия от 12:41, 20 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция shiftIn()[1]

Выполняет побитовый сдвиг — по одному биту за раз. Начинает с самого (то есть левого) или наименее (то есть правого) значимого бита. Процесс проходит следующим образом: тактовый контакт переключается в состояние HIGH, из линии данных считывается очередной бит, а затем тактовый контакт переключается обратно в положение LOW.

Если вы работаете с девайсом, который синхронизируется по переднему фронту импульса, перед вызовом shiftIn() нужно обязательно перевести тактовый контакт в положении LOW. Сделать это можно, например, при помощи функции

digitalWrite(clockPin, LOW).

Примечание

Функция shiftIn() является программной реализацией. Но в Arduino есть библиотека SPI, которая использует аппаратную реализацию — она быстрее, но работает только со специальными контактами.

Синтаксис

byte incoming = shiftIn(dataPin, clockPin, bitOrder)

Параметры

dataPin  контакт, с которого будут считываться биты (тип данных  int)
clockPin  тактовый контакт, который будет переключатся с LOW на HIGH и наоборот, чтобы задавать «ритм» для считывания с dataPin
bitOrder  порядок, в котором будут сдвигаться биты (MSBFIRST  Most Significant Bit First, т.е. «первым  самый значимый бит»; LSBFIRST  Most Significant Bit First, т.е. «первым  наименее значимый бит»)

Что возвращает

Считанное значение (тип данных  byte)

См.также

Внешние ссылки