Описание:
Сдвиг байта данных по одному биту за раз. Начиная с младшего бита или (реже) старшего бита. Каждый бит записывается в порт dataPin, после чего порт clockPin переключается, сигнализируя, что данные установлены.
Эта методика передачи данных широко применяется для обмена данными между микроконтроллером, сенсорами и другими микроконтроллерами. ()
Код (\hardware\cores\arduino\wiring_shift.c):
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, byte val)
{
int i;
for (i = 0; i < 8; i++) {
if (bitOrder == LSBFIRST)
digitalWrite(dataPin, !!(val & (1 << i)));
else
digitalWrite(dataPin, !!(val & (1 << (7 - i))));
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
Параметры:
dataPin: порт для вывода бит (int)
clockPin: порт изменяющий своё состояние после установки данных dataPin (int)
bitOrder порядок сдвига бит; MSBFIRST или LSBFIRST.
(Most Significant Bit First или Least Significant Bit First (( — порядок от младшего к старшему )))
value: байт данных для сдвига (byte)
Примечание:
Порты dataPin и clockPin уже должны быть сконфигурированы на вывод функцией pinMode().
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout);
Вызов:
pulseIn(порт, значение);
Описание:
Считывает импульс (высокий или низкий) c цифрового порта и возвращает продолжительность импульса в микросекундах.
Например, если параметр «значение» при вызове функции установлен в HIGH, то pulseIn() ожидает, когда на порт поступит высокий уровень сигнала. С момента его поступления начинается отсчет времени до тех пор, пока на порт не поступит низкий уровень сигнала. Функция возвращает длину импульса (высокого уровня) в микросекундах. Работает с импульсами от 10 микросекунд до 3 минут. Обратите внимание, что эта функция не будет возвращать результат, пока импульс не будет обнаружен.
Параметры:
порт: номер порта, с которого считываем импульс
значение: тип импульса HIGH или LOW
Возвращаемое значение: возвращает длительность импульса в микросекундах (тип int)
Пример:
int duration; // объявление переменной duration типа int
duration = pulseIn(pin, HIGH); // измеряем длительность импульса
читать далее:
Ссылки на использованные материалы:
(или же в каталоге ArduinoIDE \reference\HomePage.html )
Комментарии (1)
RSS свернуть / развернутьТолько зарегистрированные и авторизованные пользователи могут оставлять комментарии.