Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.
В примере «Fading» демонстрируется использование выходных аналоговых данных (т.е. широтно-импульсной модуляции) для изменения яркости светодиода. Открыть этот скетч можно, кликнув в IDE Arduino на Файл > Примеры > Analog > Fading (File > Examples > Analog > Fading).
Широтно-импульсная модуляция (или ШИМ) – это техника получения аналоговых данных цифровыми средствами. «Цифровая» часть используется для того, чтобы сгенерировать квадратную волну, т.е. сигнал, переключаемый между состояниями «вкл» и «выкл». В результате получается паттерн, который работает по принципу «вкл-выкл» и способен имитировать напряжение между 5 и 0 вольтами – через изменение того, как долго сигнал находится в положении «вкл», по отношению к тому, как долго сигнал находится в положении «выкл». Период времени, в течение которого сигнал находится в состоянии «вкл», называется «шириной импульса». Чтобы поменять аналоговое значение, вы меняете (т.е. модулируете) эту ширину импульса. Если достаточно быстро повторять определенный паттерн этих «вкл» и «выкл», то результатом будет сигнал, обозначающий стабильное напряжение в диапазоне от 0 до 5 вольт, которым можно, к примеру, управлять яркостью светодиода.
На рисунке ниже зеленые линии показывают равномерные периоды времени. Этот период – величина, обратная частоте ШИМ. Другими словами, если частота ШИМ на Arduino составляет около 500 Гц, то зеленые линии будут отмерять по 2 миллисекунды (т.е. 0,002 сек). Таким образом, если вызвать функцию analogWrite() – диапазон значений у нее составляет от «0» до «255» – и указать в аргументе значение «255», то коэффициентом заполнения у нее будет 100% (т.е. постоянный «вкл»), а если указать «127», то коэффициент заполнения будет 50% (т.е. «вкл» лишь половину периода).
Запустив этот пример, возьмите Arduino и потрясите ее вверх-вниз. По сути, эта тряска – это проецирование времени в определенном пространстве. Вашим глазам будет казаться, что огонек светодиода превращается в линию. Покуда светодиод будет становиться ярче или меркнуть, генерируемые им линии будут становиться то длиннее, то короче. Поздравляем, теперь вы своими глазами увидели широтно-импульсную модуляцию!
Calibration - Определение максимума и минимума для данных от аналогового датчика.
Fading - Использование выходного аналогового контакта (ШИМ) для затухания/загорания светодиода.
Smoothing - Сглаживание серии данных, считанных с входного аналогового контакта.
Связь
ReadASCIIString - Анализ строки, состоящей из разделенных запятыми int-значений, и их последующее использование для управления RGB-светодиодом.
ASCII Table - Демонстрирует продвинутые способы вывода данных на Serial Monitor.
Dimmer - Изменение яркости светодиода при помощи движения мышкой.
Graph - Отправка данных на компьютер и их графическое отображение в скетче Processing.
Physical Pixel - Включение/выключение светодиода путем отправки данных со скетча Processing (или Max/MSP) на Arduino.
Virtual Color Mixer - Отправка с Arduino на компьютер сразу нескольких значений, а затем их считывание при помощи скетча для Processing или Max/MSP.
Serial Call Response - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»).
Serial Call Response ASCII - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»). До передачи данные зашифровываются в ASCII.
SerialEvent - Демонстрирует использование SerialEvent().
MIDI - Передача через последовательный порт сообщений с MIDI-нотами.
MultiSerialMega - Использование двух последовательных портов на Arduino Mega.
Управляющие структуры
If Statement - Как использовать оператор «if» для создания условий, опирающихся на входные аналоговые данные, при которых светодиод будет либо включаться, либо оставаться выключенным.
For Loop - Управление несколькими светодиодами, чтобы они мигали, как LED-полоска у автомобиля Китт из сериала «Рыцарь дорог».
Array - Вариация примера «For Loop», но с использованием массива.
While Loop - Использование цикла while() для калибровки датчика. Калибровка включается при нажатии на кнопку.
Switch Case - Как совершать какие-либо действия в зависимости от значений, полученных от датчика. Эквивалент примера «If Statement», но если бы условий было не два, а четыре. Этот пример демонстрирует, как дробить диапазон данных от датчика на четыре «суб-диапазона», а затем в зависимости от полученных результатов совершать одно из четырех действий.
Switch Case 2 - Второй пример, демонстрирующий использование оператора switch. Показывает, как совершать различные действия в зависимости от определенных символов, полученных через последовательный порт.
Датчики
ADXL3xx - Считывание данных с акселерометра ADXL3xx.
Knock - Определение стука при помощи пьезоэлемента.
Memsic2125 - Считывание данных с 2-осевого акселерометра Memsic2125.
Ping - Определение объектов при помощи ультразвукового дальномера.