Arduino attiny85: младшая линейка микроконтроллеров
Содержание:
- Your first upload:
- Step 6: Create Tailor-made Button Board
- Программирование и скетч
- Макетная плата
- Подготовка IDE и программатора
- Self-Programming the Attiny – or the digispark way of life
- Плата Digispark с Arduino Attiny85
- Энергопотребление
- Step 1: Preparation
- Notes on serial monitoring
- О возможностях среды разработки
- Программная часть
- Project Logs Collapse logs
- Step 9: Program MCU
- Digispark на Attiny85 — подключение под Windows 10 +4
- Подготовка IDE и программатора
Your first upload:
If you’re just getting started try the above procedure with the example you can find by going to File→Examples→Digispark→Start
Here is the code it will load:
// the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(0, OUTPUT); //LED on Model B pinMode(1, OUTPUT); //LED on Model A } // the loop routine runs over and over again forever: void loop() { digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(1, HIGH); delay(1000); // wait for a second digitalWrite(0, LOW); // turn the LED off by making the voltage LOW digitalWrite(1, LOW); delay(1000); // wait for a second }
This code will blink the BUILTIN LED (on either pin 0 or pin 1 depending on the Digispark model see:Model Identification).
As soon as it has uploaded you should see the LED start to blink!
For some sample code for the basic I/O function see here: Digispark Basics
Step 6: Create Tailor-made Button Board
In previous project, I use 2 pins to handle 2 buttons input. It is too expensive for using an ATtiny85 IO pin for each input button. This time I try to use 1 IO pin to handle 3 buttons input.
Here is my setting:
set button — GND -> button -> PIN 2 (PB3, ADC3)
up button — GND -> 6.8k resistor -> button -> PIN 2
down button -> GND -> 68k resistor -> button -> PIN 2
Various resistors value should be ok, over 1k is recommended. 3 buttons have different resistor values, so it can use analogRead() function to distinguish which button pressed. I have measured some common resistor analog value for reference.
You may change the threshold value in ATtinyWatch.ino file if you use different resistor.
e.g.
#define SET_UP_BUTTON_THRESHOLD 100
#define UP_DOWN_BUTTON_THRESHOLD 600
Программирование и скетч
Знакомство с ATtiny85ссылке
- При включении питания поочередно выводим все 6 значений после чего переводим микроконтроллер в режим энергосбережения. Пробуждение микроконтроллера возможно по прерыванию от датчика.
- После пробуждения необходимо удостовериться, что срабатывание датчика вызвано не случайно. Для этого фиксируем срабатывания датчика в течении некоторого времени.
- Убедившись, что срабатывание датчика было не случайным, запускаем бегущий огонь. В противном случае переходим к пункту 5.
- По окончании срабатывания датчика, то есть когда кубик перестали трясти, выводим случайное значение от 1 до 6 на несколько секунд.
- Переводим микроконтроллер в режим энергосбережения.
Восстановление фьюзов ATtiny85micronucleus
- Подготавливаем программатор и соединяем его с микроконтроллером. Предполагается, что вы уже ознакомились с программированием ATtiny85 по приведенной ранее публикации.
- Настраиваем микроконтроллер на тактирование 1МГц от внутреннего RC генератора. Для этого нужно выбрать соответствующее значение в меню Инструменты -> Clock и выполнить команду Записать загрузчик.
- Загружаем скетч в микроконтроллер.
- Программируем фьюз RSTDISBL. Для этого переходим в каталог Arduino_dir\hardware\tools\avr\bin\, запускаем командную строку и выполняем в ней команду записи значения 0x5F в старший конфигурационный байт. При использовании Ардуино в качестве программатора эта команда выглядит следующим образом:
avrdude -C ../etc/avrdude.conf -c arduino -P com26 -b 19200 -p t85 -U hfuse:w:0x5F:m
Только не забудьте изменить номер com порта на свой.
Я пользуюсь программатором usbasp, для него данная команда выглядит так:avrdude -C ../etc/avrdude.conf -c usbasp -p t85 -U hfuse:w:0x5F:m
После выполнения указанных действий устанавливаем микроконтроллер в плату кубика и проверяем его работу. Что у меня получилось можете увидеть в следующем ролике:
Макетная плата
- Промаркировать элементы на схеме , все настройки можно оставить по умолчанию.
- Сопоставить элементы схемы с посадочными местами на плате . Появится следующее окно:
Здесь для наглядности следует включить просмотр выбранного элемента .
Поскольку предстоит работать с макетной платой необходимо следить, чтобы все посадочные места укладывались в сетку 1/10″ (2.54mm). Если требуемый элемент найти не удаётся, проще назначить похожий, затем, в редакторе печатной платы, изменить его (Ctrl+E) и записать в свою библиотеку.
Как только все посадочные места будут назначены нужно сохранить результат и вернуться в редактор схемы. - Сгенерировать netlist , настройки по умолчанию вполне приемлемы.
(Read Current Netlist)Visibles > Render > ValuesVisibles > Render > Footprints Front
Подготовка IDE и программатора
Arduino IDE наиболее доступное кроссплатформенное программное обеспечение для программирования AVR микроконтроллеров и вполне удобное для небольших проектов.
Значит нужно Arduino ядро для ATtiny85, его можно взять здесь arduino-tiny, версия для Arduino 1.5 подойдет. Доступны будут не все функции, но базовый набор, включая программный последовательный порт, для отладки, можно будет использовать. К сожалению в актуальной, на данный момент, Arduino IDE v1.6.6 что-то сломали, и c этим ядром необходимо использовать версию 1.6.5.
Осталось приготовить программатор. Для этого совсем не обязательно использовать специальное устройство, можно в ближайшую Arduino прошить скетч из File → Examples → ArduinoISP, затем соединить с сенсором, как указанно на принципиальной схеме, и не забыть про конденсатор 10μF, который необходимо установить между RST и GND выводами Arduino.
Программировать устройство нужно без установленных радиомодуля и перемычек. В меню Tools → Board нужно выбрать конфигурацию микроконтроллера, в данном случае: ATtiny85 @ 1 MHz (internal oscillator; BOD disabled), в меню Tools → Port выбрать USB порт программатора и в меню Tools → Programmer указать тип программатора, в данном случае: Arduino as ISP, затем воспользоваться кнопкой Upload.
Self-Programming the Attiny – or the digispark way of life
To enable that feature you need to use one of the other two methods mentioned before to get a piece of code on the attiny. This will then allow you to pull additional code into the attiny or change the additional code. Uploading that initial code is one of the tasks in the digispark-production.
This bootloader resides in the first 2k of the 8k memory of the attiny and allows you to use the remaining 6k for your programs. The big benefit of that piece of smart code is that you need no other hardware tool to program a digispark as you would for the other two methods. It will even go one step further and make it possible for you to use the digispark for programming other core attinys in two (or lets say one and a half) different ways.
For that purpose micronucleus emulates USB hardware as the attiny has no on-board USB device. Communication is done with a host component called micronucleus. On Windows systems it’s micronucleus.exe.
To facilitate this special way of programming the digispark, digistump has patched the IDE by adding a custom version of avrdude (a program which is mostly used in the arduino world). Digistump’s custom version of avrdude is a wrapper which calls either the original avrdude for everything which is not a digispark, or micronucleus in the case of a digispark.
There are however some drawbacks:
The emulation of a USB interface affects the usage of 2 I/O pins, P3 (analog3) and P4 (analog2). Both are regulated with a Zener diode which limits the voltage on those two pins to a max of 3.6V. This affects some uses like analogRead() or high levels resulting from digitalWrite(). P3 also has a 1.5K pullup-resistor creating even more problems for this kind of usage.
An advantage of the emulated USB solution is that this way of programming the Attiny frees one more GPIO pin; pin PB5. This pin is otherwise used as reset, which is needed for programming the chip with an external ISP programmer.
Small Introduction to pin-names
You need to be very careful, when it comes to PIN names on the AVR microcontrollers. There are plenty of names around depending on functions or locations. Further enumeration depends, if that is done logical or physical.
There are the pin numbers of the core chip, starting with one at the special marked pin going counter-clockwise around the chip. Then there are the numbers of GPIO-pins which AVR groups to internal ports, where up to 8 pins can be aggregated. Those ports are named with letters (A, B, ..). Unfortunately the attiny85 is missing port A, so the GPIO pins are called PB0 to PB5. And as you see, in the logical enumeration they start with 0 and there is no match to the physical pin number. When it comes down to the digispark itself, those 6 pins are named P0 to P5 on the PCB; however in the schematics enumeration starts with 1.
There are a lot of other names, depending of functions for special protocols or chip-functions, like SCK, MISO, MOSI. Those additional functions are even not related to corresponding GPIO-pins. On the attiny85 SCK is together with PB2 on physical pin7. On the attiny167, for example, SCK resides with PA5 on physical pin 8. So always pay attention to documentation before making assumptions!
Its not much more to say, about the internal programming, as that is the out-of-the box behaviour.
Плата 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 | 6ms |
Оценка времени работы (дней) | 513 | 733 |
Как видно, тут было ради чего бороться. К сожалению, стабильности на 8MHz добиться не удалось. Видимо без внешнего осциллятора, это не реально.
Все исходные коды проекта доступны на GitHub
ссылка на оригинал статьи http://geektimes.ru/post/267798/
Step 1: Preparation
MCU
Today core subject, ATtiny85. Someone suggest me to use SOIC version to reduce the watch size and I found the coin cell mAh calculation method will count the battery voltage down to 2.0 V, so this watch require a low voltage version MCU to keep it stable. So I have ordered an ATTINY85V-10SU. (much expensive $_$)
(Quote from previous project) Since the number of IO pins of ATtiny85 is very limited, I design display and further modules should all run in I2C. Power consumption and source availability are also important factors. I choose an OLED screen drive with SSD1306. It can find in 4 different sizes, 64×32 is the smallest one. (another sizes are 128×64, 128×32 and 64×48)
Transparent Cover
(Quote from previous project) A small piece of transparent PET plastic plate. It is transparent, provide enough support and very easy to get from many product packing.
Other Parts
- A SOIC ISP clip for program ATTINY85V-10SU
- 3 pieces of M2 screws
- 3 buttons
- 2 various resistors (more than 1k)
- coated copper wires
- thin mental plate for making a tailor-made battery holder
- a SOP8 to DIP8 board
- a little piece of multipurpose PC board for building button panel
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.
О возможностях среды разработки
Arduino IDE имеет встроенный набор плат и микроконтроллеров, с которыми можно работать; в её основе лежит классический программатор AVR, кстати, благодаря ему и можно обращаться к устройству командами на Си.
Однако не всегда удобно и рационально использовать предложенные микроконтроллеры. Согласитесь, что глупо брать плату с парой десятков выводов для работы с 1 датчиком и 1 исполнительным механизмом, в роли которого может быть:
- сервопривод;
- транзистор;
- светодиод;
- соленоид и т. д.
Поэтому сторонние разработчики создали целый ряд совместимых плат. Работать с ними можно через Arduino IDE, используя простые команды встроенного языка. Для этого были переписаны загрузчики и библиотеки команд.
Программная часть
Проблема с драйвером датчика MAX30102 заключается в том, что используемый в приборе датчик выпускается на плате MH-ET LIVE. В спецификации на датчик подразумевается, но не указывается явно, что LED1 – красный светодиод, LED2 – инфракрасный (ИК). Однако, если сигнал управления на LED1 равен 0, красный светодиод остается включенным (как на Рисунке 3), если же сигнал управления на LED2 равен 0, то красный светодиод гаснет. Очевидный вывод состоит в том, что LED1 – это ИК светодиод, а LED2 – красный, который также участвует в измерениях уровня насыщения крови кислородом (см. описание ниже). Мы упоминаем этот момент по причине того, что самый распространенный драйвер датчика MAX30102 для проектов на Arduino – это драйвер SparkFun 3010x, в котором однозначно определено, что LED1 – красный, LED2 – ИК. Это может быть справедливо для модулей с датчиком серии MAX30105, установленных на платах SparkFun, но, похоже, не относится к датчику MAX30102 на плате MH-ET LIVE.
Уровень кислорода в крови обозначает насыщение периферийных капилляров кислородом. Более конкретно, это процент насыщенного кислородом гемоглобина по сравнению с общим количеством гемоглобина в крови (насыщенный и ненасыщенный кислородом гемоглобин).
Насыщенный и ненасыщенный гемоглобин имеют разные характеристики поглощения света для красных и ИК длин волн. На этом принципе основана работа датчиков, таких как MAX30102. В вычислениях используется следующее соотношение:
R = (AC_red/DC_red)/(AC_IR/DC_IR)
где AC_xxx является переменной составляющей сигнала xxx, а DC_xxx является постоянной составляющей сигнала xxx. В приборе вычисляются два значения R. Верхнее значение на дисплее (следующее после частоты пульса) вычисляется по классической формуле:
R = 104 — 1.7 × R
Нижнее значение вычисляется с помощью таблицы из Arduino библиотеки драйвера, которая является приближением формулы:
-45.060 × R × R + 30.354 × R + 94.845
Переменная составляющая вычисляется как размах амплитуды сигнала (от пика до пика) после удаления постоянной составляющей. Постоянная составляющая вычисляется с помощью экспоненциального фильтра скользящего среднего, также фильтр применяется при вычислении переменной составляющей. Автор недостаточно экспериментировал с константами в этих фильтрах, чтобы определить насколько надежным является этот метод вычислений указанных величин.
Построение графика сердечного ритма основывается на красном и ИК сигналах от датчика, и также проходят две стадии фильтрации. Первой, как описано выше, является удаление постоянной составляющей. Второй – это фильтр скользящего среднего, который действует как фильтр нижних частот для удаления переходных процессов до того, как сигнал поступит в детектор пульса. Форму сигнала после каждого из этих фильтров можно отобразить, но в целом более интересна форма сигнала без фильтров.
Например, дикротические выемки, которые можно увидеть на полученном с помощью прибора графике сердечного ритма (Рисунок 1) – «второе движение вверх на нисходящей части траектории, соответствующее увеличению давления в аорте при закрытии аортального клапана. – словарь Merriam Webster». Автор заметил, что если эти дикротические выемки более ярко выраженные – у более молодых людей – они могут преодолеть фильтрацию второго уровня и привести к ошибочному выходному сигналу детектора пульса, который, по сути, ищет пики и впадины в сигнале. Работа над проектом продолжается!
Исходный код (скетч Arduino), необходимые библиотеки, проект корпуса (Рисунок 5) для печати на 3D принтере доступны для скачивания в разделе загрузок.
Рисунок 5. | Простой корпус для прибора, напечатанный на 3D принтере. |
Дополнительно автор добавил версию прибора (nanoPulsePPG) для стандартных плат Arduino и протестировал работу на плате Arduino Nano, но также должно работать на плате Arduino Uno. Таким образом, вы можете экспериментировать с исходным кодом и датчиком.
Project Logs Collapse logs
-
Human Interface Challenge Contest Entry
danjovic •
07/19/2018 at 01:39 •I have submitted this project to Human Interface Challenge because of the Auto Fire feature.
Some game controllers (like asciipad) have switches that allow the activation of auto-fire for some buttons.
The innovation in Human interface in this project is to eliminate such switches. The Auto-Fire feature is activated by keeping the desired buttons pressed while the controller is plugged in (and hence powered on).
-
Autofire implemented!
danjovic •
04/30/2016 at 02:28 •Successfully implemented autofire to the sketch and updated code in github.
The circuit was tested using #SILSpark and the #MAME USB board without the microcontroller as it has some ‘s in series just like the SNES controller.
The autofire triggers at approximately 10Hz and can be assigned to any of the action buttons: (A,B,X,Y,TopL,TopR) just by holding down any of them and waiting for digispark to be detected as a joystick.
(
-
Adding Auto-fire
danjovic •
04/29/2016 at 22:34 •Somebody suggested me adding programming features and auto-fire to the DIGI-SNES.
The auto-fire is easy to implement, but it took me some minutes to find an elegant way of activating the auto-fire to the desired functions but the solution is quite simple:
— Held the the desired buttons pressed while plug the DIGI-SNES on the USB port. Then the firmware will use the state of the activated buttons to initialize one variable that holds a mask to be applied over the button states at given intervals thus simulating sequential releases for a button that is continuously pressed.
In the code below the button is active in ‘1’ and the auto-fire mask bit is active in ‘0’.
if (++count & 2 ) { Buttons_low &= mask; }
As for the programming I have to think it better because if I want to keep the functionality of all buttons and still can record some button sequences it will involve adding more keys to the project. Maybe a foot switch will suit to this function.
Step 9: Program MCU
- Plug your ISP to the computer
- Run Arduino
- Open ATtinyWatch.ino from unzipped ATtinyWatch folder
- Select Tools menu -> Board sub-menu -> select ATtiny85
- Select Tools menu -> Clock sub-menu -> select 1 MHz (internal oscillator; BOD disabled)
- Select Tools menu -> Programmer sub-menu -> your ISP
- Remove CR1220
- Connect the SOIC ISP clip to ATtiny85 and press Upload button
ISP -> ATtiny85
MISO -> Pin 6
VCC -> Pin 8
SCK -> Pin 7
MOSI -> Pin 5
RESET -> Pin 1
GND -> Pin 4
Remark:
If you have SSD1306 screen other than 64×32 resolution, you can change resolution define in ssd1306.h
e.g.
// custom screen resolution by define SCREEN128X64, SCREEN128X32, SCREEN64X48 or SCREED64X32 (default)#define SCREEN_128X64
//#define SCREEN_128X32
//#define SCREEN_64X48 // not tested
//#define SCREEN_64X32
Other program ATtiny85 reference:
Digispark на Attiny85 — подключение под Windows 10 +4
- 12.06.18 06:48
•
gerasimenkoao
•
#413927
•
Хабрахабр
•
Из песочницы
•
•
5100
Из песочницы, Разработка под Arduino
Если Вы читаете эти строки, значит что-то пошло не так… с подключением данного микроконтроллера. Знаю, у меня самого за сутки до написания статьи было так-же, но техноманьяки — народ упоротый упертый
Можно было спокойно заюзать любую из трех имеющихся ардуин или «голую» Atmega328P-PU/Atmega8-16PU
В конце концов, ПРОСТО загрузить USB-Linux c arduino ide под него.
Нет-же, в этот раз свет клином сошелся на Диджиспарке и ДЕСЯТКЕ — зря что-ли платил $3 за ESD-лицензию?.
«Уж если я чего решил, то выпью обязательно» пел Высоцкий, и как Вы поняли — таки да!
Ладно, с присказками закончили — бутаем комп, заходим в биос.
Находим пункт устройства/порты — USB — да, Digispark не работает с USB-3
Отключаем совместимось USB3-Disable (У некоторых просто может выставляться режим порта — ставим USB-2 Compatible)
У меня этот пункт назывался xHCI — Disable
Не торопитесь выходить — включите отладку — Debug-Enable
Опять на моем биосе эта функция зовется иначе — EHCI — Enable
Save&Exit
Гуд? Загрузили винду?
Не торопитесь входить в ArduinoIde!
Снесите для начала Все установленные ранее дрова под digistump/digispark!
Готово?
WIN-x — выполнить — regedit — поиск ищем digistump в реестре и беспощадно удаляем, F3 — поиск дальше!
Повторяем процедуру со словом digispark.
Контролный reboot в голову — винда все-же 😉
У меня это была версия micronucleus-2.0a4-win.zip
Еще нужна прога ArduinoIde с предустановленной поддержкой Digispark-a — идем сюда:
качаем последний ArduinoIDE, моя версия(на 07.06.2018) — DigisparkArduino-Win32-1.0.4-May19.zip, извлекаем содержимое.
На 64-битке — работает!
Распаковываем/сетапим наш микронуклеус драйвер.
Окей, запускаем DigisparkArduino версии 1.0.4!
Старый? А Вам Шашечки или Ехать?
Its a Sparta — это винда!
Лулзов добавляет, трейдмарк Sparta, под которым у меня импульсный паяльник и набор отверточек.
Но не торопитесь подключать плату в Usb порт!
Выбираем (в ArduinoIDE ) Сервис-Плата-Digispark (Tiny Core)
Далее Сервис-Программатор-Digispark
Наконец пришло время поморгать светодиодом 😉
Компилируем Ctrl-R
Загружаем Ctrl-U (ведь правда мы еще не вставляли плату в ЮСБ? ЭТО ВАЖНО!!)
Вот только после такой надписи внизу — включаем Digispark в порт.
иначе он будет бесцельно блинкать появляясь и исчезая в устройствах — как первый спутник земли!
Если ВСЕ пункты выполнялись внимательно и последовательно, то мы получим подобную картинку
И мигающий на плате светодиод — WIN!
Успешных Вам проектов!
Андрей.
Подготовка IDE и программатора
Arduino IDE наиболее доступное кроссплатформенное программное обеспечение для программирования AVR микроконтроллеров и вполне удобное для небольших проектов.
Значит нужно Arduino ядро для ATtiny85, его можно взять здесь arduino-tiny, версия для Arduino 1.5 подойдет. Доступны будут не все функции, но базовый набор, включая программный последовательный порт, для отладки, можно будет использовать. К сожалению в актуальной, на данный момент, Arduino IDE v1.6.6 что-то сломали, и c этим ядром необходимо использовать версию 1.6.5.
Осталось приготовить программатор. Для этого совсем не обязательно использовать специальное устройство, можно в ближайшую Arduino прошить скетч из File → Examples → ArduinoISP, затем соединить с сенсором, как указанно на принципиальной схеме, и не забыть про конденсатор 10μF, который необходимо установить между RST и GND выводами Arduino.
Программировать устройство нужно без установленных радиомодуля и перемычек. В меню Tools → Board нужно выбрать конфигурацию микроконтроллера, в данном случае: ATtiny85 @ 1 MHz (internal oscillator; BOD disabled), в меню Tools → Port выбрать USB порт программатора и в меню Tools → Programmer указать тип программатора, в данном случае: Arduino as ISP, затем воспользоваться кнопкой Upload.