- Atmega8 arduino своими руками
- Модульный вариант
- Одноплатный вариант
- Программирование микроконтроллера
- Arduino ATmega8: микроконтроллер для начинающих
- Характеристики чипа
- Распиновка Arduino ATmega8
- Добавление устройств АТмега
- Платы Arduino
- Проекты на основе Arduino ATmega
- Пример 1
- Пример 2
- Пример 3
- Пример 4
- Цветомузыка на микроконтроллере Arduino ATmega8
- Ардуино своими руками
- Самодельная Ардуино-совместимая отладочная плата на бюджетном МК ATmega88/168/328
Atmega8 arduino своими руками
Этот вариант Arduino-контроллера, если уж не самый простой, то уж наверняка самый доступный для самостоятельного изготовления. В основе — уже ставшая классической схема Arduino на контроллере ATMega8.
Всего разработано два варианта:
- Модульный
- Одноплатный
Модульный вариант
Этот вариант контроллера состит из трех плат:
- Плата микроконтроллера
- Плата USB-UART
- Плата питания
Одноплатный вариант
Все тоже самое, только на одной плате:
Плата выполнена из одностороннего фольгированного текстолита и может быть повторена в домашних условиях с использованием, наприрмер, ЛУТ-технологии. Размеры платы: 95×62
Программирование микроконтроллера
После сборки платы — необходимо «прошить» контроллер, загрузить в него «bootloader» — загрузчик. Для этого потребуется программатор. Берем чистый контроллер типа ATMega8, устанавливаем его в программатор, подключаем к компьютеру. Я использовал программатор Программатор AVR ISP mkII c адаптером ATMega8-48-88-168. Программируем с помощью Arduino IDE, она сама выставит необходимые fuse bits. Последовательность такая:
1. Выбор программатора (Сервис > Программатор > AVRISP mkII). Если этот программатор используется впервые — необходимо установить драйвер AVRISP-MKII-libusb-drv.zip. Если используется не AVRISP mkII, а другой программатор, то из списка нужно выбрать нужный.
2. Выбор платы для микроконтроллера (Сервис > Плата > Arduino NG or older w/ ATmega8). Если используется не ATmega8, а другой микроконтроллер, то и платку нужно выбирать соответствующую ему.
3. Запись bootloader (Сервис > Записать загрузчик).
4. Устанавливаем контроллер на плату, и все, Arduino готова к работе.
Источник
Arduino ATmega8: микроконтроллер для начинающих
Микроконтроллеры – отличная основа для большого количества устройств. По сути своей они напоминают компьютер: постоянная память; оперативная память; вычислительное ядро; тактовая частота.
Среди многих семейств и видов МК новички часто выбирают контроллеры AVR Atmega. Однако язык программирования может показаться сложным, поэтому преподаватель из Италии решил разработать простую и удобную плату для обучения.
Родилась Arduino ATmega8, на основе которой можно собрать очень удобное и простое устройство.
Arduino NG — вариант платы Arduino на микроконтроллере ATmega8
С этими платами от Ардуино вы получаете целый ряд преимуществ:
- готовая разведенная печатная плата со всеми необходимыми компонентами и разъёмами;
- микроконтроллеры Atmega;
- возможность программировать без программаторов – через ЮСБ порт;
- питание от любого источника 5-20 вольт;
- простой язык программирования и возможность использования чистой C AVR без переделок платы и прошивки.
Характеристики чипа
- Частота ATmega8: 0-16 МГц
- Напряжение ATmega8: 5 В
- Частота ATmega8L: 0-8 МГц
- Частоат ATmega8A: 0-16 МГц
В реальности почти все микроконтроллеры при рабочем напряжении в 5 вольт работают с частотой 16 мегагерц, если участвует внешний кварцевый резонатор. Если брать внутренний генератор, то частоты составят: 8, 4, 2 и 1 МГц.
Распиновка Arduino ATmega8
Ниже приводим распиновку атмега8, которую можно также найти на официальном сайте производителя:
Добавление устройств АТмега
Есть один нюанс по работе с эти чипом — нам нужно внести некоторые изменений в один файл, чтобы дальше можно было бы программировать микроконтроллеры Arduino ATmega8.
Вносим следующие изменения в файл hardware/arduino/boards.txt:
Таким образом, если мы перейдем в меню Сервис → Плата, то увидим устройства:
- ATmega8 (optiboot 16MHz ext)
- ATmega8 (optiboot 8 MHz int)
- ATmega8 (optiboot 1 MHz int)
- ATmega8 (no boot 8 MHz int)
Платы Arduino
Ардуино продаётся во множестве вариантов; главное, что объединяет платы, – это концепция готового изделия. Вам не нужно травить плату и паять все её компоненты, вы получаете готовое к работе изделие. Можно собирать любые устройства, не используя паяльник. Все соединения в базовом варианте выполняются с помощью макетной платы и перемычек.
Плата Arduino Nano – полный аналог большего собрата, но в гораздо меньших размерах, версия arduino atmega168 была самой популярной и недорогой, но её сменила другая модель – arduino atmega328, стоимость которой аналогична, а возможности больше.
Следующей важной деталью является печатная плата. Разведена и запаяна на заводе, позволяет избежать проблем с её созданием, травлением и пайкой. Качество платы зависит от производителя конкретного экземпляра, но, в основном, оно на высоком уровне. Питание платы осуществляется с помощью пары линейных стабилизаторов, типа L7805, или других LDO стабилизаторов напряжения.
Клеммная колодка – отличный способ сделать надёжное разъёмное соединение и быстро выполнить изменения в схеме прототипов ваших устройств. Для тех, кому не хватает стандартных разъёмов, есть более крупные и мощные платы, например, на atmega2560, у которой доступно полсотни портов для работы с периферией.
На фото изображена плата Arduino Mega 2560. На её основе можно собрать довольно сложного робота, систему умного дома или 3d-принтер на ардуино.
Не стоит думать, что младшие версии слабы, например, микроконтроллер atmega328, на котором построены модели Uno, nano, mini и другие, имеет вдвое больше памяти по сравнению с 168 моделью – 2 кб ОЗУ и 32 кб Flash памяти. Это позволяет записывать более сложные программы в память микроконтроллера.
Проекты на основе Arduino ATmega
Микроконтроллер в современной электронике – основа для любого устройства, начиная от простой мигалки на светодиодах, до универсальных измерительных приборов и даже средств автоматизации производства.
Пример 1
Можно сделать тестер с 11 функциями на микроконтроллере atmega32.
Устройство имеет крайне простую схему, в которой использовано немногим более дюжины деталей. Однако вы получаете вполне функциональный прибор, которым можно производить измерения. Вот краткий перечень его возможностей:
- Прозвонка цепи с возможностью измерять падение напряжения на переходе диода.
- Омметр.
- Измеритель ёмкости.
- Измерение активного сопротивления конденсатора или ESR.
- Определение индуктивности.
- Возможность счёта импульсов.
- Измерение частоты – пригодится в диагностике, например, для проверки ШИМ источника питания.
- Генератор импульсов – тоже полезен в ремонте.
- Логический анализатор позволит просмотреть содержимое пачек цифровых сигналов.
- Тестер стабилитронов.
Пример 2
Для радиолюбителей будет полезно иметь качественное оборудование, но станция стоит дорого. Есть возможность собрать паяльную станцию своими руками, для этого нужна плата Arduino, имеющая в своем составе микроконтроллер atmega328.
Пример 3
Для продвинутых радиолюбителей есть возможность собрать более чем бюджетный осциллограф. Мы опубликуем данный урок в дальнейших статьях.
Для этого вам понадобится:
- Arduino uno или atmega
- Tft дисплей 5 дюйма.
- Небольшой набор обвязки.
Или его упрощенный аналог на плате Nano и дисплее от nokia 5110.
Такой осциллографический пробник станет полезным для автоэлектрика и мастера по ремонту радиоэлектронной аппаратуры.
Пример 4
Бывает, что управляемые модули удалены друг от друга или возможностей одной ардуино не хватает – тогда можно собрать целую микроконтроллерную систему. Чтобы обеспечить связь двух микроконтроллеров стоит использовать стандарт RS 485.
На фото приведен пример реализации такой системы и ввода данных с клавиатуры.
Цветомузыка на микроконтроллере Arduino ATmega8
Для школьной дискотеки можно собрать ЦМУ на 6 каналов.
Транзисторы VT1-VT6 нужно подобрать с учетом мощности ваших светодиодов. Это силовые компоненты – они нужны, потому что мощности микроконтроллера не хватит, чтобы запустить мощные лампы или светодиоды.
Если вы хотите коммутировать сетевое напряжение и собрать цветомузыку на лампах накаливания, вместо них нужно установить симисторы и драйвер. Дополнить каждый канал ЦМУ вот такой конструкцией:
Ардуино своими руками
Atmega2560 – хоть и мощный и продвинутый контроллер, но проще и быстрее собрать первую плату на atmega8 или 168.
Левая часть схемы – это модуль связи по USB, иначе говоря, USB-UART/TTL конвертер. Его, вместе с обвязкой, можно выбросить из схемы, для экономии места, собрать на отдельной плате и подключать только для прошивки. Он нужен для преобразования уровней сигнала.
DA1 – это стабилизатор напряжения L7805. В качестве основы можно использовать целый ряд avr микросхем, которые вы найдете, например, серии, arduino atmega32 или собрать arduino atmega16. Для этого нужно использовать разные загрузчики, но для каждого из МК нужно найти свой.
Можно поступить еще проще, и собрать всё на беспаечной макетной плате, как это показано здесь, на примере 328-й атмеги.
Микроконтроллеры – это просто и весело – вы можете сделать кучу приятный и интересных вещей или даже стать выдающимся изобретателем, не имея при этом ни образования, ни знаний о низкоуровневых языках. Ардуино – шаг в электронику с нуля, который позволяет перейти к серьезным проектам и изучению сложных языков, типа C avr и других.
Источник
Самодельная Ардуино-совместимая отладочная плата на бюджетном МК ATmega88/168/328
Предисловие
При разборке большинства отслуживших свой срок работы, промышленных устройств на микроконтроллерах AVR, чаще всего встречаются микроконтроллеры ATmega88. Рабочие чипы не стоит выбрасывать, так как они уже припаяны к плате и большинство их выводов удобно выведены к тем или иным радиоэлементам. Продвинутые программисты могут писать для них программы на языке «C» или даже на ассемблере, но для начинающих легче всего освоится в среде Arduino IDE. К тому же Arduino уже набрала популярность и в сети есть много примеров и готовых программ для различных задач. Хотя микроконтроллер mega88 и не поддерживается в данной среде, но произведя некоторые изменения в конфигурационном файле, можно легко добавить тип платы с этим или другим микроконтроллером и писать программы с последующей компиляцией и загрузкой.
На сайте имеется прекрасная статья «Отладочная плата для устройств на МК Atmega8/48/88/168/328», но в отличии от настоящей публикации там использован микроконтроллер в DIP-корпусе и не описана возможность работы с платой через среду разработки Ардуино. На данном же примере будет подробно, с иллюстрациями, показано что нужно добавить и как это сделать. Автором так же была разработана печатная плата для установки на неё отдельно имеющегося микроконтроллера ATmega88/168/328 в корпусе поверхностного монтажа любого из трёх типов.
Использование платы с микроконтроллером Atmega88
В предыдущей статье была произведена разборка электропривода Danfoss AME 120 NL, и после разборки осталась печатная плата с AVR микроконтроллером ATmega88 и некоторыми радиоэлементами:
На рисунке ниже представлена принципиальная схема того, что осталось уцелевшим на данной плате после разборки:
На изображении печатной платы, возле контактных площадок, цифрами были отмечены соединённые с этими площадками соответствующие порты ввода-вывода микроконтроллера:
Но при написании программы в среде Arduino IDE обращение происходит не прямо к портам ввода-вывода, а к определённым названиям и нумерации соответственно отладочной плате Arduino. В данном конкретном примере на плате от разобранного устройства нет преобразователя USB-TTL и имеется только минимально необходимая обвязка микроконтроллера. Поэтому по количеству выводов и по обвязке она больше похожа на Arduino mini и Arduino Pro mini. Но в Arduino Pro mini установлен микроконтроллер ATmega168 или ATmega328 и работают они с кварцевым резонатором на частотах 16 или 8 МГц, а у нас имеется ATmega88 без кварцевого резонатора. Далее будет показано как добавить поддержку данной платы с микроконтроллером ATmega88 в Arduino IDE и как для этой платы компилировать и загружать программу, написанную в среде разработки Ардуино.
Выводы Arduino Pro mini
Так как мы будем работать с платой на микроконтроллере mega88 по аналогии с Arduino Pro mini, то в первую очередь рассмотрим с каким выводом микроконтроллера соединён каждый именованный вывод платы. Итак, отладочная плата Arduino Pro mini имеет 14 цифровых выводов, которые могут быть использованы как входы или как выходы, и 8 аналоговых выводов с разрешением 10 бит каждый.
Была составлена, и на рисунке ниже показана схема соответствия выводов платы Arduino Pro mini выводам микроконтроллера в 32-х выводном SMD-корпусе для поверхностного монтажа:
Теперь уже на изображении печатной платы, возле контактных площадок, цифрами были отмечены соответствующие выводы Ардуино:
Создание собственной отладочной платы
Далее была составлена принципиальная схема авторской отладочной платы с минимально необходимой обвязкой микроконтроллера, которую сможет собрать каждый желающий. Не смотря на свою простоту, плата имеет весь присущий Ардуино функционал, кроме порта USB, которого нет и на оригинальной плате Pro Mini, который и не требовался для дальнейших проектов, так как плату планировалось использовать в устройствах с низким энергопотреблением. Основные технические характеристики и параметры самодельной отладочной платы, совместимой с Arduino, приведены в таблице:
Параметр | Значение |
---|---|
Рабочее напряжение | 5 (3,3) Вольт |
Напряжение питания | 8 — 16 Вольт |
Установленный микроконтроллер | ATmega88 |
Количество цифровых выводов | 14 |
Число аналоговых входов | 8 |
Допустимый ток одного вывода | 10 мА |
Тактовая частота | 8 (1) МГц |
В проекте были оставлены оба светодиода для случая необходимости проверки как цифрового, так и аналогового вывода. Подключены светодиоды через положительный полюс +5V для разгрузки выводов питания микроконтроллера:
На схеме предусмотрена перемычка, разрывающая цепь интегрального стабилизатора напряжения вместе со светодиодом индикации питания, необходимая для снижения потребляемой мощности при автономном питании от батарей. Так же один из аналоговых входов, через делитель напряжения соединён с входным не стабилизированным источником питания, для определения наличия и измерения значения уровня питающего напряжения.
Так как название «Arduino» является зарегистрированным товарным знаком, то его использование в собственных проектах сопряжено с определёнными трудностями и ограничениями. Для названия описываемой в статье платы было использовано имя «ANDROino M88-V1» в честь её автора Andro и установленного на ней микроконтроллера MEGA88, а V1 обозначает что это первая версия разработки, и при дальнейших изменениях можно использовать возрастающие порядковые номера и не будет путаницы и конфликта между различными версиями одного и того же устройства.
Печатная плата
Для самостоятельной сборки, в программе «Sprint-Layout 6» была разработана печатная плата. Плата рассчитана на установку большинства радиокомпонентов поверхностного монтажа с возможностью использования микроконтроллера ATmega88/168/328 в корпусах типа TQFP, QFN или MLF. Изначально чертёж платы задуман для реализации с двухсторонним фольгированием, но можно использовать так же односторонний материал, а там где должны быть проводящие дорожки с обратной стороны платы, предусмотрена установка проволочных перемычек, и эти участки соответствующим образом отмечены на чертеже. Это сделано для возможности изготовления устройства начинающими радиолюбителями, у которых пока нет навыков или средств для изготовления двухсторонних печатных плат.
Рисунок верхней стороны печатной платы:
На двухстороннем варианте имеются сквозные отверстия, в которые нужно вставить отрезки провода и припаять их с обеих сторон для соединения токопроводящих участков фольги друг с другом.
Рисунок нижней стороны двухсторонней печатной платы:
В случае с односторонним фольгированием разъёмы и перемычку JP1 придётся установить снизу, припаяв их к токопроводящим фольгированным участкам с верхней стороны платы. Так же нужно будет установить ранее упомянутые проволочные перемычки, ненужные при травлении двух слоёв фольги, но необходимые для соединения определённых участков при применении фольгирования только с верхней стороны. Перемычки можно расположить как с нижней стороны платы, так и со стороны расположения радиокомпонентов.
Рисунок нижней стороны односторонней печатной платы:
Также нужно обратить внимание на то, что при расположении ICSP — разъёма с нижней стороны платы, зеркально будет отражена последовательность его контактов и нужно будет принять меры во время подключения к нему программатора, изготовив переходник или соединив каждый его вывод отдельным проводником.
Все необходимые файлы для травления печатной платы находятся в конце статьи.
Добавление платы в среду разработки Ардуино
После изготовления собственной отладочной платы с микроконтроллером ATmega88, для написания скетчей и работы с ней в среде разработки Arduino IDE, нужно добавить её поддержку и корректно определить некоторые параметры, такие как тип установленного микроконтроллера, его конфигурационные FUSE — биты, частота тактирования процессора, объём доступной памяти и выводы с подключенными светодиодами.
Нужно будет произвести изменения в одном из имеющихся из конфигурационных файлов и добавить несколько собственных. Все изменения в конфигурационных файлах нужно производить текстовым редактором, корректно отображающим переход строки, таким как например Notepad++. Во время добавления отладочной платы собственного производства была установлена и использовалась среда разработки Arduino IDE версии 1.8.5. В других версиях могут быть отличия .
Среду разработки можно бесплатно скачать с официального сайта проекта Ардуино по ссылке https://www.arduino.cc/en/main/software где имеются версии для Windows, Mac OS X и Linux. Для Windows можно выбрать установщик, аппликацию или ZIP-файл для портативной работы.
Все пути к указанным файлам и папкам будут идти считая от корневого каталога расположения среды разработки, где бы он не находился. В данном случае каталог называется «arduino-1.8.5» и все необходимые директории установлены внутри него. Для начала нужно отредактировать текстовый файл “boards.txt” с описанием отладочных плат, расположенный по пути «\hardware\arduino\avr\»
Описав характеристики собственной платы, в него нужно добавить следующую запись:
При добавлении в самое начало эта запись должна выглядеть следующим образом:
Далее надо определить номера выводов платы, к которым подключены внутренние светодиоды, и дать им логичные и понятные названия. Для этого в каталоге «\hardware\arduino\avr\variants\» нужно создать папку «andro_mega88», а в ней текстовый файл «pins_arduino.h»:
В созданном файле нужно сделать запись следующего типа:
Для простоты можно скопировать подобный файл из другого каталога описания выводов и произвести в нём необходимые изменения:
Обычно для загрузки программ в микроконтроллеры на отладочных платах Ардуино, используется записанная в сам микроконтроллер небольшая программа-загрузчик — «bootloader» — позволяющая наладить связь между микроконтроллером и средой разработки через последовательный порт передачи данных UART.
Но так как объём программной памяти микроконтроллера АТмега88 небольшой, то в рассматриваемом случае bootloader не применяется, и вся доступная память выделяется и используется под исполняемый код написанных программ. В таком случае на плате предусмотрен шести-контактный разъём внутрисхемного программирования для подключения ISP-программатора.
Но для избежания показа ошибок во время первичного конфигурирования и настройки микроконтроллера нужно указать хотя бы пустой файл бутлоадера, и для этого была создана папка “andro” в директории «hardware\arduino\avr\bootloaders\», а в ней текстовый файл «null.hex»:
В самом файле была сделана запись с минимально возможным корректным набором символов:
Произведённая запись должна выглядеть следующим образом:
После правильного выполнения всех указанных действий можно запускать среду разработки Arduino IDE, где во вкладке “Tools” > “Board:” появится добавленная ранее плата:
А на той же вкладке “Tools” в пункте “Processor:” будут варианты исполнения платы, в зависимости от тактовой частоты и рабочего напряжения:
Конфигурирование микроконтроллера
После выбора платы, перед первым её использованием, нужно соответствующим образом произвести настройку установленного на ней микроконтроллера. Для этого, с подключённым к плате программатором, на вкладке “Tools” всего лишь нужно выбрать пункт «Burn Bootloader»:
“Burn Bootloader“» src=»https://cxem.net/arduino/images/arduino247-18.png»/>
При этом в программную память микроконтроллера начнётся запись созданного ранее файла «null.hex» и будет произведена настройка необходимых FUSE-бит:
Запустив программу «UniProf» можно прочитать содержимое Flash-памяти и значения конфигурационных ячеек микроконтроллера:
По отображаемым данным можно видеть почти пустую область программной памяти и, задающие необходимые для правильной работы микроконтроллера, параметры конфигурационных бит:
Далее всегда во время тестирования, для проверки записанных данных и возможности обнаружения ошибки, будет использоваться программа UniProf. Если Вы не знаете как с ней работать, то советую прочитать интересную и познавательную статью «Arduino ProMini и UniProf», ссылка на которую находится в конце данной статьи.
Программная проверка
Теперь же для проверки работы программного кода и правильности функционирования отладочной платы напишем небольшую тестовую программу, с определённым интервалом попеременно переключающую установленные на плате светодиоды:
На вкладке «Sketch» выбрав пункт «Export compiled Binary» предварительно сохраняем скомпилированный двоичный файл исполняемого кода написанной программы. Для выполнения этого действия так же можно использовать сочетание горячих клавиш «Ctrl+Alt+S»:
В нижней зоне рабочего окна выдаётся информация о размере исполняемого кода, и необходимом для его работы объёме оперативной памяти микроконтроллера, а сам файл сохранился в формате «HEX» в той же папке, где находится скетч:
В микроконтроллер скомпилированный код программы загружается обычным способом с помощью программатора, выбрав на той же вкладке «Sketch» пункт «Upload Using Programmer», или используя сочетание горячих клавиш «Ctrl+Shift+U»:
Начнётся загрузка исполняемого кода в программную область памяти микроконтроллера и будут установлены определённые LOCK-биты:
После успешной загрузки снова запустим программу UniProf и проверим значения конфигурационных ячеек микроконтроллера:
Так же откроем ранее скомпилированный HEX-файл прошивки и сравним его с содержимым программной памяти микроконтроллера:
После сравнения можно убедиться, что содержимое двоичного файла и программной области идентично и исполняемый код программы в микроконтроллер записан без ошибок:
Низковольтный вариант с пониженной частотой
При низковольтном питании платы, или во время работы с пониженной тактовой частотой, для меньшего энергопотребления, в среде разработки нужно выбрать второй вариант пункта “Tools” > “Processor:”
Далее так же, как и в прошлый раз, нужно воспользоваться пунктом “Tools” > «Burn Bootloader» и записать необходимые данные в микроконтроллер:
“Burn Bootloader“» src=»https://cxem.net/arduino/images/arduino247-34.png»/>
“Burn Bootloader“» src=»https://cxem.net/arduino/images/arduino247-35.png»/>
Опять же после проверки конфигурационных ячеек можно убедится, что они настроены в соответствии с необходимыми условиями работы:
Снова загрузим скомпилированную по новым параметрам программу в память микроконтроллера:
И произведём экспортирование нового двоичного файла для работы на частоте 1 МГц с пониженным напряжением питания:
Открыв этот файл в программе UniProf и сравнив его с содержимым чипа, убеждаемся что FLASH-память прошита без ошибок и всё работает как надо:
Отсоединив вывод «Reset» программатора и запустив микроконтроллер в рабочем режиме, можно визуально наблюдать работу написанной программы попеременным миганием установленных на плате светодиодов с заданным интервалом времени:
Чтобы убедится в правильной настройке и отработке временных интервалов, время задержки между переключениями светодиодов было изменено в несколько раз, и программа с новыми параметрами снова была загружена в микроконтроллер:
Время мигания светодиодов изменилось и частота переключения соответственно возросла:
Для загрузки программ в микроконтроллер использовался рассмотренный в ранней статье COM-ISP программатор. Там же есть описание возможности его интеграции в среду разработки Arduino IDE, но при работе с микроконтроллером АТмега88 пришлось принять меры для увеличения таймингов в целях безошибочной загрузки программного кода в память чипа.
Текстовый файл «programmers.txt», в который были внесены изменения, находится в директории «\hardware\arduino\avr\»:
Изменения коснулись последней строки, в которую была добавлена опция задержки:
В редактируемом файле вся запись выглядит следующим образом:
Теперь, когда всё отлажено и правильно работает, можно приступать к написанию более сложных программ на Ардуино. Единственное, что надо учесть, это то, что на используемой плате микроконтроллер тактируется от внутреннего генератора со сравнительно низкой частотой. С одной стороны это даёт более низкое энергопотребление, а с другой нет возможности использовать плату там, где важны короткие и точные временные промежутки.
Эпилог
В добавок была написана программа, мигающая установленными на плате светодиодами с различной частотой, независимо друг от друга:
Программа работает на прерываниях и не задерживает на долго основной цикл. а число светодиодов может быть сколь угодно большим в разумных пределах. Для демонстрации её возможностей был создан вариант с задействованием всех возможных выводов Ардуино.
Известно, что аналоговые выводы можно использовать как цифровые, и что у 32-х выводного микроконтроллера поверхностного монтажа на два аналоговых входа больше, чем у чипа в DIP-корпусе, и общее число аналоговых выводов составляет 8. Но ОЧЕНь ВАЖНАЯ ДЕТАЛь ! Аналоговые входы A6 и A7 не являются портом ввода-вывода, а лишь составляют часть мультиплексора для аналоговых измерений. Поэтому эти два вывода невозможно использовать как цифровые , и общее число задействованных выводов составило (D0 . D13) + (A0 . A5) = 14D + 6A = 20:
Проект программы вместе с файлом симуляции для Протеуса можете скачать по ссылке. Каждый светодиод мигает со своей частотой, самая высокая частота мигания у светодиода, подключённого к выводу «0», и она уменьшается с возрастанием порядкового номера вывода платы.
Фрагмент процесса симуляции:
Заключение
Довольно простыми манипуляциями получилось создать собственную отладочную плату и удалось интегрировать её в среду разработки Arduino IDE без применения сторонних библиотек и установки дополнительных модулей или какого—либо ядра.
Описанным способом можно изготовить и добавить плату на основе другого поддерживаемого AVR-микроконтроллера. В данном случае из за небольшого объёма программной памяти было решено отказаться от бутлоадера, но при необходимости на плату можно установить кварцевый резонатор и записать в чип программу-загрузчик.
Так же плату всегда можно использовать без среды Ардуино и писать для неё программы например в «Atmel Studio» или загружать в чип уже скомпилированные прошивки любыми удобными средствами, такими как к примеру «UniProf».
В качестве дополнения в архиве «arduino-1_8_5.rar» собраны все необходимые конфигурационные файлы для интеграции в среду разработки микроконтроллеров АТмега88/168/328 без использования bootloader-а.
Статьи по теме
Источник