Эта статья рассказывает, как сконструировать программатор с параллельным портом для плат Arduino (или других плат с чипом ATmega8). Программатор позволяет программировать плату, подключенную к компьютеру на Windows, безо всякого дополнительного оборудования. Дешево и быстро. Правда, стоит обратить внимание, что этот программатор не дает возможности осуществлять коммуникацию между компьютером и скетчами на плате. Для этого понадобится кабель, поддерживающий последовательную коммуникацию.
Коннектор, вид сзади
Необходимое оборудование
Инструменты:
Паяльник
Пистолет для горячего клея (опционально)
Компоненты:
Два резистора на 470 Ом (желтый-фиолетовый-коричневый)
Один резистор на 220 Ом (красный-красный-коричневый)
Один параллельный порт или адаптер, конвертирующий параллельные данные в последовательные данные
Два 3-проводных кабеля (на одном конце – коннекторы типа «мама», на другом – ни к чему не подключенные провода)
Инструкции
Удаляем все провода с параллельного порта.
Припаиваем 470-омовые резисторы к контактам 1 и 2 на параллельном порте.
Параллельный порт, к 1-ому контакту которого припаян 470-омовый резистор
Припаиваем 220-омовый резистор к контакту 11 на коннекторе.
Поочередно припаиваем три провода одного из кабелей к резистору на контакте 11 (он ведет к контакту 18 на ATmega8), к резистору на контакте 1 (он ведет к контакту 19 на ATmega8) и напрямую к контакту 16 (он ведет к контакту 1, отвечающему за сброс).
Параллельный порт, к которому припаяно два из трех кабелей – к контактам 1 и 11, соответственно
Припаиваем средний провод второго кабеля к резистору на контакте 2 (он ведет к контакту 17 на ATmega8), а один из оставшихся проводов – к контакту 18 (он отвечает за «землю»). Третий провод не используется, и его, чтобы не мешался, можно просто обрезать.
Параллельный порт, к которому припаяны оба кабеля
Подключите концы двух кабелей так, чтобы – если смотреть со стороны коннектора – неиспользованный провод был слева вверху, а провод на контакте 11 – справа вверху (это 1-ый контакт коннектора, и он должен соответствовать контакту 1 на плате Arduino).
Склейте провода внутри корпуса адаптера, но убедитесь, что неизолированные провода находятся в стороне друг от друга. Или, если вы не используете адаптер, обмотайте оголенные провода изолентой, чтобы они не прикасались друг к другу.
Автор – Дэвид А. Меллис (David A. Mellis). Также спасибо Эрезу Кикин-Гилу (Erez Kikin-Gil) за сборку программатора и Массимо Банци (Massimo Banzi) за запрос и инструкции.
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 - Определение объектов при помощи ультразвукового дальномера.