1. В меню Настройки =› Программатор
, выберите Arduino as ISP.2. Нажмите на кнопку Загрузить
.3. Если не появилось никаких сообщений об ошибках, то мы успешно перенесли скетч на микросхему.
4. Отсоедините «Ардуино» от компьютера.
5. Отключите провода, используемые для программирования (выводы 10, 11, 12 и 13), но не перемычки, используемые для питания (5В и GND).
6. Добавим светодиод и сопротивление на 220 Ом на вывод номер 5 микросхемы.
7. Снова подключим «Ардуино» к компьютеру с помощью USB-кабеля. «Ардуино» будет служить только в качестве источника питания для ATtiny.
8. Светодиод будет мигать!
Рис. 9.9.
ATtiny85, подключенный к светодиоду, «Ардуино» служит в качестве источника питанияЕсли что-то пошло не так, то светодиод не будет мигать, и, вероятно, на панели среды «Ардуино» появятся дополнительные оранжевые надписи.
• Проверяем, возможно, вы сделали опечатку в коде программы. Анализируя оранжевые надписи, можно получить некоторую информацию о типе ошибки и ее расположении в скетче.
• Если в сообщении об ошибке вы видите код «SK500», это значит, что возникла проблема во время переноса информации с «Ардуино» на ATtiny. Проверим все перемычки и при необходимости заменим их.
• Проверим правильность настроек последовательного порта.
Существует альтернативный подход к использованию ATtiny с «Ардуино». Проект называется Arduino-tiny (http://bit.ly/arduinotiny).
Совместимость между «Ардуино» и ATtiny
Микроконтроллеры AVR семейства ATtiny являются менее мощными по сравнению с «Ардуино». Вы можете программировать эти чипы в среде «Ардуино», но количество доступных функций будет ограничено. Мы можем использовать почти все команды, предусмотренные для «Ардуино»:
• pinMode () – настраивает вывод в качестве входа или выхода;
• digitalWrite () – устанавливает уровень цифрового выхода;
• digitalRead () – считывает состояние входа;
• analogRead () – считывает аналоговое значение вывода;
• analogWrite () – устанавливает сигнал ШИМ;
• shiftout () – передает байт на указанный вывод, один бит за один раз;
• pulseIn () – обнаруживает приход импульса на вход;
• millis () – считывает количество миллисекунд с момента включения чипа;
• micros () – считывает количество микросекунд, с момента включения чипа;
• delay () – приостанавливает выполнение скетча на указанное число миллисекунд;
• delayMicroseconds () – приостанавливает выполнение скетча на указанное число микросекунд.
В версии 1.0.2 «Ардуино» (IDE), функции последовательного управления должны быть совместимы с ATtiny. Но многие другие функции не поддерживаются, как, например, функции для серводвигателей. В интернете существует множество электронных библиотек, посвященных ATtiny, в том числе и для серводвигателей (Servo8Bit).
Если ATtiny85 недостаточно, мы можем использовать другие чипы. Хорошим выбором будет ATtiny2313 или ATtiny4312, которые оснащены большимколичеством выводов, в том числе и с последовательным интерфейсом. Если все же памяти недостаточно, мы можем перейти непосредственно к ATmega328, чипу «Ардуино». Программируя его напрямую, у нас будет больше памяти, потому что загрузчик при этом будет отсутствовать.
При использовании ATmega или ATtiny2313 вам может потребоваться подключить кварц, для генерации тактовых сигналов более высоких частот. Проверьте в техническом описании, на какой вывод должен быть подключен кварц. С кварцем на 16 МГц вам также потребуются два конденсатора на 20 пФ. Не забудьте подключить сброс (RESET) на 5 В, чтобы запустить чип.
Рис. 9.10.
Микрочип ATmega328 на макетной плате, оснащенный кварцем на 16 MHz: «Ардуино DIY»Чтение аналогового входа
Давайте теперь рассмотрим второй пример, в котором напишем скетч для чтения аналогового входа. К «Ардуино UNO» можно подключить фоторезистор, а затем выводить значения по последовательному порту, но ATtiny85 не имеет последовательного порта, поэтому подключим светодиод, который будет включен, если значение, обнаруженное датчиком, превышает определенный предел.
Нам понадобятся:
• макетная плата;
• «Ардуино UNO», запрограммированная как ArduinoISP (или как программатор FabISP);
• ATtiny85;
• фоторезистор;
• резистор на 10 кОм;
• светодиод;
• резистор на 220 Ом;
• конденсатор на 0,1 мкФ;
• перемычки или соединительные провода;
• источник питания на 5 В (вы также можете использовать «Ардуино» в качестве источника питания).
Рис. 9.11.
Электрическая схема с ATtiny85, фоторезистором и светодиодом. Указано электропитание на 5 В, которое может быть взято от «Ардуино» или от другого источника питанияНачнем наш эксперимент.
1. Вставим ATtiny85 в центр макетной платы.
2. Подсоединяем выводы «Ардуино» 10, 11, 12 и 13 к ATtiny.
3. Копируем скетч в новое окно «Ардуино» и программируем чип, как мы уже научились делать в предыдущем примере.
void setup() {
pinMode (0, OUTPUT);
}
void loop () {
int light = analogRead(A3);
if (light > 500) {