Эта библиотека позволяет отправлять и получать X10-команды от модуля Arduino. X10 – это синхронный последовательный протокол, использующий линии переменного тока. Он отсылает бит каждый раз, когда переменный ток достигает отметки в 0 вольт. Протокол X10 используется, как правило, в системах умного дома. Контроллеры и девайсы, работающие при помощи X10, можно найти тут, тут и т.д.
Эта библиотека тестировалась при помощи одностороннего X10-контроллера PL513 и двустороннего X10-контроллера TW523. Оба устройства являются, по сути, X10-модемами, которые конвертируют 5-вольтовый сигнал от Arduino в сигналы переменного тока при переходе через ноль.
Чтобы подключить Arduino к одному из этих модулей, возьмите телефонный кабель с коннектором RJ-11 и обрежьте один из его концов. Затем подсоедините провода, как показано на картинке ниже:
Чтобы использовать ее, распакуйте скачанный ZIP-архив, а затем скопируйте распакованную папку (названную «X10») в папку ***/Документы/Arduino/libraries. Если вы никогда раньше не устанавливали библиотеку, то папки «libraries» у вас не будет. В таком случае создайте ее.
В версии 0.4 можно делать следующее:
x10.begin(rxPin,txPin,zeroCrossingPin)
Эта функция инициализирует экземпляр библиотеки X10 на трех цифровых контактах. Более наглядный пример:
x10myHouse=x10.begin(8,9,10)
Здесь мы инициализируем экземпляр myHouse на 9-ом (контакт для перехода через ноль) и 10-ом (контакт для передачи данных) контактах.
Внимание! Контакт rxPin указан с прицелом на будущее, когда в библиотеку будут добавлены функции получения данных. То есть в этом месте можно использовать любой контакт, но фактически он задействован не будет.
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 - Определение объектов при помощи ультразвукового дальномера.