Программируем attiny85 из arduino isp

Содержание

Compile and Upload a program

There are two parts to programming the board

  1. Start the compile and upload process as you usually do for the Arduino.
  2. Plug in the Digispark ATtiny85 to initialise USB detection.

1. Normal Arduino Compilation

To start digispark attiny85 programming hit the compile and upload button or press Ctrl-u.

Once uploading starts you will see the following information in the status box at the bottom of the Arduino IDE:

Sketch uses 700 bytes (11%) of program storage space. Maximum is 6012 bytes.Global variables use 9 bytes of dynamic memory.
Running Digispark Uploader…Plug in device now… (will timeout in 60 seconds)> Please plug in the device …> Press CTRL+C to terminate the program.

2. Micronucleus USB Detection and Upload

Sketch uses 700 bytes (11%) of program storage space. Maximum is 6012 bytes.Global variables use 9 bytes of dynamic memory.
Running Digispark Uploader…Plug in device now… (will timeout in 60 seconds)> Please plug in the device …> Press CTRL+C to terminate the program.> Device is found!connecting: 16% completeconnecting: 22% completeconnecting: 28% completeconnecting: 33% complete> Device has firmware version 1.6> Available space for user applications: 6012 bytes> Suggested sleep time between sending pages: 8ms> Whole page count: 94  page size: 64> Erase function sleep duration: 752msparsing: 50% complete> Erasing the memory …erasing: 55% completeerasing: 60% completeerasing: 65% complete> Starting to upload …writing: 70% completewriting: 75% completewriting: 80% complete> Starting the user app …running: 100% complete>> Micronucleus done. Thank you!

Как прошить Digispark ATtiny 85.

Зальем в плату тестовый скетч, с помощью которого плата будет мигать встроенным светодиодом.

Для этого понадобятся:

1. Приложение Arduino IDE

2. Ссылка для менеджера плат

3. Добавить платы Digispark в приложение Arduino IDE

4. Установить драйверы для Digispark ATtiny 85.

Ознакомиться с приложение Arduino IDE http://kolotushkin.com

Запустите приложение Arduino IDE, зайдите во вкладку Файл/Настройки и в Дополнительные ссылки для
Менеджера плат: добавьте эту ссылку

И нажмите «ОК»

Затем откройте вкладку Инструменты /Выбор платы /Менеджер плат

В открывшемся списке выбираем пункт “Digistump AVR Boards” и нажмите “Установить”.

Чтобы быстрее найти, впишите в окно поиска слово “Digistump” или просто “digi”.

Осталось скачать и установить драйверы.

Откройте архив Digistump.Drivers.zip и извлеките из него папку с драйверами Digistump Drivers. Это можно сделать простым перетаскиванием папки Digistump Drivers из архива в удобную для вас папку.

Затем подключите плату Digispark к компьютеру. Откройте Пуск/Панель управления/Диспетчер устройств. Найдите в списке устройство помеченное желтым треугольником (у вас может отобразиться как «Неизвестное устройство»), кликните на него правой кнопкой мышки и в открывшемся окне кликните обновить драйверы.

Затем выберите пункт «Выполнить поиск драйверов на этом компьютере»

Укажите путь к той папке, которую вы извлекли из архива. Нажмите кнопку далее. После обновления нажмите закрыть.

Если теперь устройство определено как Digispark Bootoalder без желтой отметки, значит все готово!

Теперь откройте скетч Blink, который находится во вкладке “Файл/Примеры/Basics/Blink”.

Так как скетч расcчитан для платы Arduino на которой светодиод подключен к 13 пину, то необходимо
заменить значение “13” на “1” потому как на плате Digispark светодиод подключен к 1 пину!

Затем в менеджере плат выберите плату Digispark (Default — 16,5mhz)

Нажимаете “Загрузить”. После чего произойдет компиляция и снизу появится сообщение (will timeout in 60
seconds), и вот только тогда в течении 60 секунд нужно подключить плату к USB порту для загрузки скетча!

Скетч загрузится, и на плате будет мигать светодиод.

Видео версия обзора платы Digispark ATTiny85. «Как прошить Digispark ATTiny85. Обзор платы Digispark ATTiny85»

Распиновка платы Digispark

Контакты, используемые для программирования через USB (3 и 4), во время программирования должны быть свободны (ни к чему не подключены). После программирования вы можете использовать их как обычно, если вам не нужно использовать последовательное соединение, например, для отправки данных на терминал. Ограничения платформы более подробно описаны в wiki-странице продукта, и вам следует ознакомиться с ними перед началом работы с модулем.

Выше я писал о то, что данная платформа предназначена для простых задач из-за количества памяти и контактов. С другой стороны, в библиотеку включено большое количество примеров, которые показывают возможности платы и облегчают начало работы с ней. Правда на практике это иногда бывает сложно, с чем я столкнулся при попытке подключить датчик HC-SR04.

Плата разработки Digispark Attiny85
8кБ флэш-память, I2C и SPI, питание от USB или 7-35В…

Подробнее

Скетчи на ATtiny84

Итак, у нас Arduino Uno. Как же нам запрограммировать нашу «тиньку»? Для этого используется такое устройство, как программатор. Он необходим, чтобы залить прошивку в контроллер. Мы можем превратить нашу Arduino в программатор. Это элементарно делается путём заливки скетча ArduinoISP.

Делаем программатор и собираем схему

Открываем соответствующий скетч «Файл → Примеры → ArduinoISP» и заливаем его. Все, превращение завершено. Теперь необходимо правильно собрать схему, чтобы прошить «тиньку». Обратимся к коду скетча, который был только что залит. Даже не к коду, а к комментарию перед ним.

ArduinoISP.ino
// This sketch turns the Arduino into a AVRISP
// using the following arduino pins:
//
// pin name:    not-mega:         mega(1280 and 2560)
// slave reset: 10:               53 
// MOSI:        11:               51 
// MISO:        12:               50 
// SCK:         13:               52 
//
// Put an LED (with resistor) on the following pins:
// 9: Heartbeat   - shows the programmer is running
// 8: Error       - Lights up if something goes wrong (use red if that makes sense)

// 7: Programming - In communication with the slave

Сначала подключим светодиоды таким образом, как описано в комментарии, не забывая резисторы. После сборки схемы и подачи питания, светодиод, подключенный к пину 9 «Heartbeat» будет моргать, обозначая нормальное функционирование. Если этого не произошло, то ищите ошибки в подключении.

Arduino UNO ATtiny84
Reset 10 4
MOSI 11 7
MISO 12 8
SCK 13 9

Теперь подключим светодиод и переменный резистор.
Резистор необходимо подключить в пину №6 (PA7), поскольку этот пин может быть входом для аналого-цифрового преобразователя, а светодиод — к любому другому, например, к 10 (PA3).

О нумерации пинов

Стоит немного рассказать о различии нумерации пинов в Arduino и при использовании «чистого» кода C. В Ардуино пины нумеруются последовательно и исключаются системные (питание, земля и т. д.), а в реальности всё немного иначе. Все выводы контроллера можно охарактеризовать двумя парметрами: номер порта (порт А, порт В и т.д.) и номер вывода (1..8).

Для используемой нами ATtiny84 нумерация будет аналогична. В библиотеке Arduino-tiny, о которой речь пойдёт далее, можно найти следующую таблицу соответствия:

// ATMEL ATTINY84 / ARDUINO
//
//                           +-\/-+
//                     VCC  1|    |14  GND
//             (D  0)  PB0  2|    |13  AREF (D 10)
//             (D  1)  PB1  3|    |12  PA1  (D  9) 
//                     PB3  4|    |11  PA2  (D  8) 
//  PWM  INT0  (D  2)  PB2  5|    |10  PA3  (D  7) 
//  PWM        (D  3)  PA7  6|    |9   PA4  (D  6) 
//  PWM        (D  4)  PA6  7|    |8   PA5  (D  5)        PWM
//                           +----+

В соответсвии с назначением каждой ножки контроллера, аналоговые пины (те, у которых есть вход АЦП) нумеруются в скетче по каналу АЦП.
Напримем, пин сфизическим номером 11 может быть входом для второго канала АЦП (ADC2), поэтому в скетче он будет называться A2.

Теперь необходимо научить среду программирования Arduino понимать тот факт, что мы используем другой контроллер.

Программируем ATtiny84

Выбираем в качестве нужного устройства «Сервис → Плата → ATtiny84 @ 8 MHz (internal oscillator; BOD disabled)» поскольку у нас нету внешнего кварца, который задает частоту работы контроллера. В качестве программатора выберем — «Сервис → Программатор → Arduino as ISP».

В качестве кода берем уже написанный нами код для светодиода и подстроечного резистора и изменяем там номера пинов.

attiny.ino
// Номер пина для светодиода
int ledPin = 2;   
 
// Номер аналогового пина   
int analogPin = A2;   
 
// В эту переменную считываем значение с аналогового входа
int val = ;         
 
void setup()
{ 
  // Настраиваем пин светодиода на выход
  pinMode(ledPin, OUTPUT);   
}
 
void loop()
{ 
  // Считываем значение
  val = analogRead(analogPin);   
 
  // val содержит значение из диапазона 0..1023, а диапазон значений для analogWrite
  // 0..255. Для этого делим val на 4
  analogWrite(ledPin, val4);  
}

Перепрограммируемый загрузчик ATtiny85 с использованием платы Arduino Uno

Для программирования ATtiny85 без использования платы Arduino мы сначала должны загрузить в него загрузчик используя плату Arduino Uno. Этот процесс выполняется один раз и в дальнейшем у нас не будет необходимости в использовании платы Arduino для программирования микроконтроллера ATtiny85. Загрузчик (bootloader) – это специальная программа, которая выполняется в микроконтроллере, который необходимо запрограммировать. Использование загрузчика – это один из самых удобных способов загрузки программы в микроконтроллер. Загрузчик находится в микроконтроллере и выполняет поступающие команды, а затем записывает новую программу в память микроконтроллера.

Перепрограммируемый загрузчик в микроконтроллере устраняет необходимость в использовании специальных внешних аппаратных средств (плат программирования, программаторов) для программирования микроконтроллера и позволяет загружать программу в микроконтроллер непосредственно с помощью USB соединения. Платы Digispark ATtiny85 (а выбор подобных плат сейчас достаточно большой) работают на загрузчике “micronucleus tiny85”, первоначально написанным Bluebie. Загрузчик – это программный код, который заранее загружен в плату Digispark и позволяет работать ей как USB устройство, которое можно программировать с помощью Arduino IDE. Мы будем использовать аналогичный подход и загружать загрузчик digispark attiny85 в наш микроконтроллер ATtiny85.

Для реализации этой задачи необходимо выполнить следующую последовательность шагов.

Шаг 1. Конфигурирование платы Arduino Uno в качестве ISP программатора.

Поскольку ATtiny85 является всего лишь микроконтроллером, для его программирования требуется ISP (In-System Programming — внутрисистемное программирование). Поэтому для программирования ATtiny85 нам необходимо сначала сконфигурировать плату Arduino Uno в качестве ISP программатора. Для этого подключите плату Arduino Uno к компьютеру и запустите Arduino IDE. После этого откройте пункт меню File > Example > ArduinoISP и загрузите в Arduino ISP код.

Шаг 2. Схема перепрограммируемого загрузчика ATtiny85.

Схема перепрограммируемого загрузчика ATtiny85 представлена на следующем рисунке.

Конденсатор 10 мкФ подключен между контактами Reset и GND платы Arduino. Все соединения схемы представлены в следующей таблице:

ATtiny85 Pin Arduino Uno Pin
Vcc 5V
GND GND
Pin 2 13
Pin 1 12
Pin 0 11
Reset 10

После сборки схемы подключите плату Arduino Uno и запустите Arduino IDE. Определите к какому COM порту подключена плата Arduino Uno (в диспетчере устройств Windows). В нашем случае это COM5.

После этого скопируйте отредактированный файл «Burn_AT85_bootloader.bat» и файл ATtiny85.hex» в корневой каталог Arduino IDE (C:\Program Files (x86)\Arduino).

После этого сделайте клик правой кнопкой мыши на файле «Burn_AT85_bootloader.bat» и выберите «Run as Admin» (запуск от администратора). Необходимо примерно 5-6 секунд чтобы загрузчик загрузился. Если все прошло успешно, то вы должны увидеть сообщение «AVRdude done. Thank you. Press any key to continue…».

После выполнения этой операции загрузчик будет успешно установлен в микроконтроллер ATtiny85. После этого микроконтроллер ATtiny85 можно будет программировать через USB с помощью нашего самодельного программатора, который описан далее в статье.

Шаг 3: Окончательный дизайн

Для окончательного дизайна вы могли бы использовать картон со сквозными компонентами или вытравить свою собственную доску и использовать компоненты SMD. Чтобы узнать, как вытравить доску, просто гуглите ее, есть удивительные учебники, доступные онлайн.

Я выбрал свою собственную доску, и я очень доволен конечными результатами (маленькая, стабильная и надежная доска).Да, я знаю, что порез — отстой, но я не мог использовать электроинструмент так поздно ночью, и я просто порезал доску ножницами.

Кстати, следы на изображениях — не голая медь, они обработаны неприятным химическим веществом, которое слегка связывает медь (предполагается, что он вызывает рак, поэтому используйте его с большой осторожностью, латексные шарики и пылезащитную маску):http://www.ebay.com/itm/1-pz-A2207-Preparato-chimico-agente-di-stagnatura-90g-TELSTORE/152106663870

Используйте схемы выше для разработки вашего макета или вы можете просто использовать мою печатную плату, чтобы вытравить вашу доску.

Макетная плата

Готовую схему необходимо развести на плате. Это также можно сделать в KiCad. Для этого сначала требуется завершить работу со схемой:

  1. Промаркировать элементы на схеме , все настройки можно оставить по умолчанию.
  2. Сопоставить элементы схемы с посадочными местами на плате . Появится следующее окно:
    Здесь для наглядности следует включить просмотр выбранного элемента .
    Поскольку предстоит работать с макетной платой необходимо следить, чтобы все посадочные места укладывались в сетку 1/10″ (2.54mm). Если требуемый элемент найти не удаётся, проще назначить похожий, затем, в редакторе печатной платы, изменить его (Ctrl+E) и записать в свою библиотеку.
    Как только все посадочные места будут назначены нужно сохранить результат и вернуться в редактор схемы.
  3. Сгенерировать netlist , настройки по умолчанию вполне приемлемы.

Редактор схемы можно закрыть и перейти к редактору печатной платы . Здесь нажать , затем загрузить ранее созданный netlist (Read Current Netlist), убедиться, что не было ошибок и закрыть окно. Если схема была изменена или элементам были назначены другие посадочные места, необходимо обновить netlist и загрузить его здесь снова.

При первой загрузке netlist все посадочные места окажутся стопкой в одной куче. Сначала необходимо переключить сетку на 1/10″ (2.54mm), растащить элементы (используя кнопку m), убрать лишние надписи Visibles → Render → Values и, пользуясь подсказками редактора, соединить элементы дорожками.

Результат будет выглядеть примерно так:

Оставшиеся белые линии, указывают какие посадочные места необходимо соединить проводами. К сожалению в KiCad нет способа вывести результат, так чтобы его было удобно воспроизвести на макетной плате. Но в данном случае макетная плата получилась не большой, и с ней можно поступить просто: отключить лишние надписи Visibles → Render → Footprints Front, снять скриншот и зеркально отразить его по вертикали.

Готовый макет:

Тут два несоответствия со схемой выше: не распаяны подстроечные элементы R1,C3 и диод короче на одно отверстие.

Плата немного побита жёсткой отладкой, но на то она и макетная. Большинство других вариантов, после всех модификаций, выглядело бы хуже.

Шаг 5: Установка и настройка библиотеки V-usb

Загрузите библиотеку с http: //code.google.com/archive/p/vusb-for-arduin …Разархивируйте файл и скопируйте папку library / UsbKeyboard в папку библиотек скетчей.

Теперь вам нужно отредактировать пару файлов для совместимости с ATtiny85 (он настроен для работы с arduino):

А) отредактируйте usbconfig.h:

под «Hardware Config» изменить:

#define USB_CFG_IOPORTNAME Dв## определить USB_CFG_IOPORTNAME B

а также

#define USB_CFG_DMINUS_BIT 4в#define USB_CFG_DMINUS_BIT 0

в разделе «Изменение конфигурации дополнительного оборудования»:

#define USB_CFG_PULLUP_IOPORTNAME Dв## определить USB_CFG_PULLUP_IOPORTNAME B

Чтобы создать полную спецификацию HID для загрузки (иначе мультимедийные ключи работать не будут), также измените:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Загрузкав#define USB_CFG_INTERFACE_SUBCLASS 0x01 // Загрузка

а также

#define USB_CFG_INTERFACE_PROTOCOL 0 // Клавиатурав#define USB_CFG_INTERFACE_PROTOCOL 0x01 // Клавиатура

При желании вы также можете изменить производителя и имя устройства в следующих определениях:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

Б) отредактируйте UsbKeyboard.h:

менять:

PORTD = 0; // TODO: только для USB-пинов?DDRD | = ~ USBMASK;

в

PORTB = 0; // TODO: только для USB-пинов?DDRB | = ~ USBMASK;

Чтобы разрешить изменение кодов клавиш больше 101, также:

0x25, 0x65, // LOGICAL_MAXIMUM (101)чтобы:0x25, 0xE7, // LOGICAL_MAXIMUM (231)

а также

0x29, 0x65, // USAGE_MAXIMUM (клавиатурное приложение)чтобы:0x29, 0xE7, // USAGE_MAXIMUM (приложение клавиатуры)

Вам может понадобиться отредактировать также эти 3 файла:

usbdrv.husbdrv.cUsbKeyboard.h

и каждый раз, когда вы видите, PROGMEM добавляет «const» перед именем типа переменной (например: PROGMEN char usbHidReportDescriptor 35 ==> PROGMEM const char usbHidReportDescriptor 35)

Если это не ясно, посетите http: //forum.arduino.cc/index.php? Topic = 391253.0 # …

Вы можете избежать всех этих изменений, если просто загрузите прилагаемую библиотеку (я сам все это сделал) и просто извлеките ее из папки библиотек скетчей:

UsbKeyboard настроен для attiny85

Редактировать: недавно я обнаружил, что Алехандро Лейва (http://github.com/gloob) позаботился об этой библиотеке и, кажется, работает хорошо. Вы также можете попробовать его версию с необходимыми изменениями, которые я сделал, чтобы она работала с attiny, поэтому, если вы хотите проверить это, просто извлеките ее из папки библиотек скетчей.

UsbKeyboard настроен для attiny85 (версия Alejandro Leiva)

Плата Digispark с Arduino Attiny85

Совместимые платы могут как превосходить по характеристикам и размерам стандартные ардуино, так и быть меньше их, как было сказано выше. Отличным примером такой платы будет Digispark.

Характеристики платы довольно скромные, она поставляется с микроконтроллером, подготовленным для работы, arduino attiny85 – он представлен в восьминогом корпусе SOIC или более крупных размеров – DIP8. Характеристики весьма непритязательные:

  • постоянной памяти – 8 Кб, для программного кода и 512 для исполняемого;
  • так как доступно всего 8 выводов (ножек), вычтем две плюс и минус питания – получится 6 цифровых пинов, из которых 4 – это ADC и 2 PWM (ШИМ);
  • доступно только аппаратное прерывание;
  • контроллер работает на частотах от 1 до 20 МГц;
  • в зависимости от конкретного чипа напряжения питания различны от 1.8 до 5.5 Вольт;
  • в режиме энергосбережения потребляет мизерный ток в 0.1 мкА, при самом низком напряжении питания в 1.8 Вольт.

У оригинального digispark интересная конструкция, для его прошивки не нужно использовать micro USB кабель или USB-UART. Плата разведена таким образом, что, просто вставив ее в USB порт вашего компьютера, вы получите возможность программировать микроконтроллер.

Плата не только маленькая, но и очень простая – её сборка не займет много времени, и совершенно не составит труда для начинающих. Как собрать клон digispark своими руками мы расскажем немного позже.

Энергопотребление

Пришло время измерить энергопотребление получившегося устройства. Вводные следующие: данные передается каждые 120sec, если пришло прерывание от датчика освещения, то немедленно; событиями от датчика освещения можно пренебречь; ёмкость батареи 200mAh.

Частота 1MHz 8MHz
Радиомодуль (потребление) 15.7mA 18.3mA
Микроконтроллер (потребление) 1.1mA 4.3mA
Режим сна (потребление) 7μA 7μA
Радиомодуль (активен за цикл) 51ms 16ms
Микроконтроллер (активен за цикл) 15ms 4ms
Оценка времени работы (дней) 513 739

Как видно, тут было ради чего бороться. К сожалению, стабильности на 8MHz добиться не удалось. Видимо без внешнего осциллятора, это не реально.

Загрузка скетча в ATTINY85

Убедитесь, что соединения выполнены, как описано выше. Откройте программу / скетч, которую хотите загрузить в микроконтроллер ATtiny85. Перейдите в Инструмент и настройте следующее.


Затем убедитесь, что Arduino в качестве ISP выбран в меню Инструменты -> Программатор . По умолчанию ATtiny85 работает на частоте 1 МГц. Чтобы заставить ATtiny85 работать на частоте 8 МГц, выберите Инструменты -> Записать загрузчик.

Теперь откройте пример Blink из примеров Arduino, измените номер пина с 13 на 0 и загрузите скетч.

Тестирование ATTINY85 BLINK

Пришло время проверить. Отключите все соединения с Arduino и подключите источник питания (в данном случае батарейка CR2032):

Паяльный фен YIHUA 8858
Обновленная версия, мощность: 600 Вт, расход воздуха: 240 л/час…

Подробнее

Характеристики Digispark

  • Поддержка Arduino IDE 1.0 и более поздних (OS X, Windows и Linux)
  • Питание от USB или внешнего источника — 5 В или 7-35 V (автоматический выбор)
  • Регулятор на 5В 500мА
  • Встроенный USB
  • 6 портов ввода / вывода (2 используются для USB, только если ваша программа активно общается по USB, в противном случае вы можете использовать все 6, даже если вы программируете с помощью USB)
  • 8KB флэш-памяти (около 6КБ под программу, 2 КБ заняты загрузчиком)
  • ОЗУ (SRAM) — 512 байт
  • Энергонезависимая память (EEPROM) — 512 байт
  • I²C и SPI интерфейс
  • 4-х канальный 10-разрядный АЦП
  • Аналоговый компаратор
  • 2 8-битных таймера-счетчика
  • Сторожевой таймер
  • PWM на 3 вывода (больше ШИМ выходов можно обеспечить программным способом)
  • сделан на базе ATtiny85-20SU

Купить Digispark можно тут.

Обратите внимание! Digispark есть 2 модели А и В. Как они отличаются можно прочитать тут

Все выводы могут быть использованы в качестве цифровых входов/выходов:

Pin 0 → I2C SDA, PWM (LED on Model B)

Pin 1 → PWM (LED on Model A)

Pin 2 → I2C SCK, Analog

Pin 3 → Аналоговый вход (Занят контактом USB+, в случае использования USD)

Pin 4 → PWM (Занят контактом USB-, в случае использования USD)

Pin 5 → Аналоговый вход

Добавляем DigiSpark в список отладочных плат Arduino IDE.

Для начала нам нужно установить Arduino IDE, как это сделать, можно посмотреть тут.

Затем переходим в пункт меню «Файл -> Настройки»

В открывшемся окне настроек нам нужно добавить ссылку для менеджера плат. Если у вас уже есть добавленные ссылки для других плат, то у вас будет как у меня несколько строк. Если вы устанавливаете первую дополнительную плату у вас будет всего 1 строчка, которая приведена ниже.

http://digistump.com/package_digistump_index.json

Затем можно зайти в «Менеджер плат».

Ищем плату «digispark». И устанавливаем плату.

Установка драйверов для DigiSpark.

Для работы платы DigiSpark нужно установить драйвер, который вы можете скачать внизу статьи в разделе «».

Распакуйте скаченный архив и запустите файл «DPinst64.exe» для 64 битной ОС и «DPinst.exe» для 32 битной Windows.

Процесс установки не сложный и напоминает установку обычной программы.

В процессе потребуется подтверждение установки драйверов.

На этом установка драйверов для DigiSpark закончена.

Загрузка тестового скетча в DigiSpark.

Сейчас можно перейти к загрузке первого скетча в DigiSpark. Для этого открываем Arduino IDE. В разделе «Инструменты» выбираем плату «DigiSpark (Default — 16.5mhz)». Порт выбирать не нужно.

Загружать будем вот такой тестовый скетч, который позволяет мигать встроенным светодиодам. Так как у разных моделей DigiSpark (A, B) светодиод подключен к разным пинам, в скетче реализовано изменение положения с высокого уровня на низкий для пинов 0 и 1. Что позволят сделать данный код универсальным и применимым для обоих типов плат.

void setup()
{
  //Установите контакты 0 и 1 в качестве выходов
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
}
void loop()
{
  //Установите контакты светодиода на ВЫСОКОЕ ЗНАЧЕНИЕ. Это дает питание светодиоду и включает его
  digitalWrite(0, HIGH);
  digitalWrite(1, HIGH);
  //Ждем сек
  delay(1000);
  //Set the LED pins to LOW. This turns it off
  digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  //Ждем сек
  delay(1000);
}

Важно! Загрузка проходит не как Arduino UNO. Подключать плату к ПК не нужно

Сперва нажимаем кнопку «Загрузить» и после того как мы увидим надпись

Plug in device now... (will timeout in 60 seconds)

Можно подключать DigiSpark к компьютеру. После чего вы должны увидеть проценты загрузки кода. Как видим, текст выводится оранжевым цветом. Это нормально.

После загрузки кода увидим, как мигает светодиод на плате.

У меня на DigiSpark реализовано несколько интересных проектов:

  • Ночник со стеклянными шарами на Arduino своими руками.
  • Cамодельный сенсорный светильник на Arduino (Digispark).
  • Светодиодный ночник в виде куба.
  • Ардуино светофор на digispark и ws2812b
  • Часы-будильник на Arduino. Корпус сделан из конструктора LEGO. LEGO Arduino
  • Очередной проект на Digispark и адресных светодиодах WS2812. Работа ЧПУ
  • Как сделать самодельный пистолет из Digispark и сломанной игрушки

Но на этом планирую не останавливаться в освоении отладочной платы DigiSpark ATtiny85.

А также подписаться на наш канал на YouTube, вступить в группу , в группу на .

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скачивая материал, я соглашаюсь с
Правилами скачивания и использования материалов.

тестовый скетч DigiSpark.ino 1 Kb 8 Скачать
Digistump Drivers.zip 1671 Kb 21 Скачать

Step 5

Let’s write a quick sketch to turn on the LED attached to the ATtiny85.

ATtiny85 pins. ~ indicates PWM

Since column 3 bottom is actually the ATtiny85’s digital pin 4 we write:

void setup()
{
pinMode(LED, OUTPUT);
}

void loop()
{
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}

Hit upload and the Arduino software will compile the program and transfer it to the Arduino Uno which will in turn send it on to the ATtiny85. The program should compile to something like 622 bytes (remember the ATtiny85 has 8K of memory total). You may get a warning message to the effect of:

avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85

But this doesn’t seem to cause any problems.

As soon as the upload finishes the LED should light. Congratulations, you’ve just programmed an ATtiny85 chip!

Шаг 6: Установка библиотек Attiny-IR и Tinytuner

А) Аттины-ИК библиотека:

скачать его с Http: //drive.google.com/open ID = 0B_w9z88wnDtFNHlq …?затем распакуйте его в папку с библиотеками альбомов.

Б) Библиотека Tinytuner:

Это необходимо только в том случае, если вы не используете кристалл 16 МГц, но, поверьте мне, даже если он работает и без кристалла, он намного более стабилен и стоит несколько центов, поэтому будьте проще, используйте кристалл и пропустите эта библиотека.

Еще не убежден? хорошо, скачать библиотеку сHttp: //storage.googleapis.com/google-code-archive …затем распакуйте его в папку с библиотеками альбомов.

Мы закончили с библиотеками, теперь мы переходим к установке загрузчиков.

Notes on serial monitoring

ATtiny85 does not provide a native serial interface, but it can be generated via software:

  • bit-bang two-way serial half-duplex (two pins)
  • bit-bang serial-out (one pin)

Both provide a TTL UART hardware interface (using one or two pins different from P3 and P4, used for USB). If the PC has a physical serial port, an external TTL-to-RS232 hardware interface is needed. If USB is required to connect a PC, an external UART-USB hardware converter is needed.

The above described options are ways to monitor a Digispark via Arduino «serial monitor».

Similarly to the UART serial port, USB monitoring can be emulated via a bit-bang software implementation of the Digispark USB interface, emulating a serial port. All these options do not allow monitoring via Arduino «serial monitor».

DKeyboard example:

#define USE_KEYBOARD
#define KEYBOARD_DELAY 1500 // Time to wait for the PC keyboard driver to become ready

#ifdef USE_KEYBOARD
#include "DKeyboard.h" // Use a modified tiny DigisparkKeyboard library
DKeyboardDevice Db = DKeyboardDevice(); // instantiate the Keyboard driver
#endif

void setup() {
...
#ifdef USE_KEYBOARD
    Db.sendKeyStroke();
    Db.delay(KEYBOARD_DELAY); // This is needed to wait for the PC keyboard driver to become ready
    Db.sendKeyStroke(); // This will ensure no character will be lost
#endif
...
}

void loop() {
...
#ifdef USE_KEYBOARD
    Db.print("Value result is ");
    Db.println(value);
    Db.print("Hex value is ");
    Db.println(hexvalue, HEX);
    Db.delay(300); // ensure that the transmission is performed before the interrupt is turned off
#endif
...
}

Steps to use DKeyboard for debug log monitoring:

  • Create a new folder called DKeyboard under the folder named «libraries» in your Arduino sketchbook folder. Create the folder «libraries» in case it does not exist yet. Copy all the files under libraries/DKeyboard to the target «DKeyboard» subfolder. This is a modified version of DKeyboard that slightly reduces its size so that it can be loaded to the Digispark ATTINY85 device. ATtiny85 presents itself to the PC as a keyboard USB HID.
  • Connect the Digispark to the PC via USB
  • Immediately after the code is successfully uploaded, remove the Digispark USB from the PC (to prevent interference of the emulated keyboard)
  • Open a Notepad and put the Windows focus there (maximizing the Notepad window is also suggested to prevent accidentally losing the focus)
  • Insert the USB to the PC (do not move the focus out of the Notepad window until the USB is connected)

False errors of missing USB driver messages can occur with Windows (should be ignored). If no data is shown, increase KEYBOARD_DELAY timer.

The following DKeyboard Hello World code takes 2784 bytes (42% of the available rooms):

#define KEYBOARD_DELAY 1500

#include "DKeyboard.h"
DKeyboardDevice Db = DKeyboardDevice();

void setup() {
  Db.sendKeyStroke();
  Db.delay(KEYBOARD_DELAY);
  Db.sendKeyStroke();
}

void loop() {
  Db.println("Hello World");
  Db.delay(300);
}

DKeyboard needs timer interrupt disabled. If timer interrupt is used (e.g, IRMP or IRemote, interrupts shall be temporarily disabled.

Шаг 10: расшифруй кнопки пульта

Теперь пришло время декодировать наши кнопки пульта и назначить их для определенных нажатий клавиш на ПК, для этого выполните следующие шаги:

  • выберите плату «ATtiny85 @ 16 МГц (внутренний ФАПЧ; 4,3 В БОД)», если вы не используете кристалл, «ATtiny85 @ 16 МГц (внешний кристалл; 4,3 В БОД» в противном случае, затем запишите ее
  • загрузить эскиз: http: //github.com/venumz/ATtiny85-USB-IR-receive …
  • Если вы не используете кристалл, раскомментируйте строку, содержащую переменную OSCCAL, и присвойте ей значение, которое вы нашли при калибровке часов.
  • Я предполагаю, что датчик подключен, как описано ранее, в противном случае подключите его
  • Я также предполагаю, что FT232RL последовательный к USB-адаптеру подключен, в противном случае подключите его
  • сбросьте attiny85, соединяющий контакт RESET (контакт 1) с GND (на мгновение)
  • нажимайте несколько раз кнопки пульта дистанционного управления и просматривайте экранное окно, вам нужно аннотировать последний номер для каждой записи, каждая кнопка может выдавать 2 разных номера

Пример:

ПОЛУЧЕНО D44 3396ПОЛУЧЕНО 544 1348

Пометьте 3396 и 1348 в связи с кнопкой, которую вы только что нажали, затем вы должны решить, что вы хотите сделать с этой кнопкой. Например, я хотел бы, чтобы эта кнопка отправляла мультимедийный код клавиши «Увеличение громкости», тогда мне нужно найти идентификатор для этого кода клавиши. Для этого загрузите PDF-файл: http: //www.usb.org/developers/hidpage/Hut1_12v2.p …

Найдите раздел «Клавиатура / Страница клавиатуры» на странице 53 и используйте цифры в столбце Идентификатор использования (Декабрь), чтобы привязать кнопки пульта к кодам клавиатуры. В нашем примере мы видим, что код ключа для увеличения громкости: 128.

Отредактируйте файл файл UsbKeyboard.h внутри библиотеки UsbKeyboard из пакета v-usb, который мы установили ранее, и добавьте в существующие определения, если его там еще нет:

#define KEY_VOL_UP 128

Когда мы закончили со всеми нашими кнопками remote / s и всеми определениями в файле UsbKeyboard.h, мы можем перейти к последнему шагу.

Adding Digispark support to Arduino

If an URL is already available in «Additional Boards Manager URLs» line (e.g., for esp8266 boards), more URLs can be added, separating them by a comma.

Notice the last message of the Preferences form: “More preferences can be edited directly in the file”. If clicking the file name, the related installation directory is opened (the digistump root directory can be found under the packages subdirectory).

To configure the Arduino IDE for the Digispark board, select your target device

Select your programmer

Digispark comes with an old bootloader version (generally 1.06), anyway allowing upgrade (to be done via Micronucleus, as described below).