Оглавление
Генерация звука #
Урок по использованию этих функций:
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 Гц
- Макс. частота зависит от платформы, на AVR
uint16_t-65535Гц - На 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- сначала младший бит
Не меняет режим пинов: нужно самостоятельно установить dataPin в INPUT, а clockPin - в OUTPUT
shiftOut #
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val)
Отправляет 1 байт (8 бит) значение
val с дата-пина dataPin и клок-пина clockPin в порядке bitOrder:
MSBFIRST- сначала старший битLSBFIRST- сначала младший бит
Не меняет режим пинов: нужно самостоятельно установить dataPin и clockPin в OUTPUT
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
- Поддержать автора за работу над уроками