View Categories

Генерация и чтение сигналов

Генерация звука #

tone #

void tone(uint8_t pin, uint16_t frequency)
void tone(uint8_t pin, uint16_t frequency, uint32_t duration)
Запустить генерацию меандра (квадратный сигнал) на пине pin с частотой frequency Герц. При указании продолжительности duration в миллисекундах сигнал будет генерироваться асинхронно и сам отключится через заданное время:

  • Запуск на том же пине изменит частоту сигнала
  • Запуск на другом пине ни к чему не приведёт, сначала нужно отключить генерацию при помощи noTone()
  • На AVR Arduino минимальная частота 31 Гц
  • На Arduino UNO/Nano/Mini вызов tone отключает ШИМ на пинах 3 и 11

noTone #

void noTone(uint8_t pin)
Отключить генерацию звука на пине pin, запущенную через tone()

Измерение импульса #

pulseIn #

unsigned long pulseIn(uint8_t pin, uint8_t state)
unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout)
Измерить на пине pin длительность импульса цифрового сигнала величиной state (HIGH или LOW) в миллисекундах. Логика работы: в течение таймаута timeout (по умолчанию 1000 мс) ожидает переключение пина из противоположного состояния в состояние state, начинает отсчёт времени и ждёт переключения пина обратно в противоположное состояние, возвращает результат в мс:

  • Вернёт 0, если импульса не было
  • На AVR Arduino работает с импульсами от 10 мкс до 3 минут
  • Хорошо измеряет короткие импульсы, длинные - менее точно, используйте pulseInLong()
  • На AVR Arduino может работать при отключенных прерываниях

pulseInLong #

unsigned long pulseInLong(uint8_t pin, uint8_t state)
unsigned long pulseInLong(uint8_t pin, uint8_t state, unsigned long timeout)
Альтернатива pulseIn(), более точно измеряет длинные импульсы. Нельзя запрещать прерывания на время работы функции!

Программный SPI #

shiftIn #

uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder)
Читает и возвращает 1 байт (8 бит) с дата-пина dataPin и такт-пина clockPin в порядке bitOrder:

  • MSBFIRST - сначала старший бит
  • LSBFIRST - сначала младший бит

shiftOut #

void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val)
Отправляет 1 байт (8 бит) значение val с дата-пина dataPin и такт-пина clockPin в порядке bitOrder:

  • MSBFIRST - сначала старший бит
  • LSBFIRST - сначала младший бит
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Прокрутить вверх