Программное обеспечение | Arduino-технология
Интегрированная среда разработки Arduino — или Arduino Software (IDE) — содержит текстовый редактор для написания кода, область сообщений, текстовую консоль, панель инструментов с кнопками для общих функций и ряд меню. С помощью IDE можно подключиться к платам Arduino и Genuino для загрузки программ.
Пишем скетчи
Программы, написанные с использованием Arduino Software (IDE), называются скетчами. Скетчи пишутся в текстовом редакторе и сохраняются в файле с расширением .ino. В редакторе есть функции для правки текста — вырезать, вставить, заменить, найти. Область сообщений дает обратную связь при сохранении и экспорте текста, а также отображает ошибки. Консоль отображает текст с помощью программного обеспечения Arduino (IDE), включая полные сообщения об ошибках и другую информацию. В нижнем правом углу окна отображается плата конфигурации и последовательный порт. Кнопки панели инструментов позволяют проверять и загружать программы, создавать, открывать и сохранять скетчи и открывать последовательный монитор.
Обращаем внимание, что версии программного обеспечения Arduino (IDE) до 1.0 сохраняли эскизы в файле с расширением .pde. Можно открыть эти файлы с помощью версии 1.0, при этом вам будет предложено сохранить скетч с расширением .ino при сохранении.
Дополнительные команды находятся в пяти меню: «Файл (File)», «Правка (Edit)», «Скетч (Sketch)», «Инструменты (Tools)», «Помощь (Help)». Меню являются чувствительными к контексту, что означает, что доступны только те элементы, которые относятся к выполняемой в настоящее время работе.
ФАЙЛ
- Новый (New)
Создает новый экземпляр редактора. При этом сразу создается минимально необходимая структура скетча. - Открыть (Open)
Позволяет загружать файл скетча, просматривая компьютерные диски и папки. - Недавно открытые (Open Recent)
Показывает небольшой список недавно открытых скетчей. - Журнал скетчей (Sketchbook)
Показывает текущие скетчи в ввиде структуры папок; нажатие на любое имя открывает соответствующий скетч в новом экземпляре редактора. - Примеры (Examples)
В этом пункте меню отображается примеры, предоставленные программой Arduino (IDE) или библиотекой. Все примеры структурированы в дереве, что позволяет легко найти подходящий пример по темам или библиотекам. - Закрыть (Close)
Закрывает экземпляр программы, в котором выбран данный пункт меню. - Сохранить (Save)
Сохраняет эскиз с текущим именем. Если файл не был назван ранее, имя будет указано в окне «Сохранить как ..». - Сохранить как (Save as…)
Позволяет сохранить текущий эскиз с другим именем. - Настройка страницы (Page Setup)
Отображает настройки страницы для печати. - Печать (Print)
Отправляет текущий эскиз на принтер в соответствии с настройками, заданными в разделе «Настройка страницы». - Настройки (Preferences)
Открывает окно настроек, в котором можно установить некоторые параметры окна программы. Также позволяет установить параметры сетевого интерфейса. - Выход (Quit)
Закрывает все окна IDE. Те эскизы, которые были открыты при нажатии «Выход», будут автоматически открыты при следующем запуске IDE.
ПРАВКА
- Отменить/вернуть (Undo / Redo)
Возвращает на один или несколько шагов назад или вперед, которые вы делали во время редактирования. Кнопка вернуть становиться активной, если вы возвращались до этого назад. - Вырезать (Cut)
Удаляет выделенный текст из редактора и помещает его в буфер обмена. - Копировать (Copy)
Копирует выделенный текст в редакторе и помещает его в буфер обмена. - Копировать для форума (Copy for Forum)
Копирует код вашего эскиза в буфер обмена в форме, подходящей для публикации на форуме. Синтаксис будет соответственно подсвечен. - Копировать как HTML (Copy as HTML)
Копирует код вашего эскиза в буфер обмена в формате HTML, подходящем для встраивания в веб-страницы. - Вставить (Paste)
Вставляет содержимое буфера обмена в позицию курсора в редакторе. - Выделить все (Select All)
Позволяет выделить все содержимое редактора.
Помещает или удаляет маркер комментария «//» в начале строки, где находиться курсор.- Увеличить/Уменьшить отступ (Increase/Decrease Indent)
Добавляет или убирает пробел в начале каждой выбранной строки, перемещая текст на одну позицию табуляции вправо или влево. - Поиск (Find)
Открывает окно «Найти и заменить», где вы можете указать текст для поиска внутри текущего эскиза в соответствии с несколькими параметрами. - Найти далее (Find Next)
Поиск элемента из окна «Найти и заменить» после места установки курсора. - Найти предыдущее (Find Previous)
Поиск элемента из окна «Найти и заменить» до места установки курсора.
СКЕТЧ
- Проверить/Компилировать (Verify/Compile)
Проверяет ваш эскиз на ошибки компиляции. В области консоли при этом выводится размер используемой памяти для программы и переменных. - Загрузка (Upload)
Произведет компиляцию скетча и загрузку двоичного кода в указанную плату через указанный порт. - Загрузить через программатор (Upload Using Programmer)
Также произведет компиляцию скетча и запись программы на плату через программатор. Для этого необходимо выбрать тип программатора. - Экспорт бинарного файла (Export Compiled Binary)
Сохраняет файл .hex, который может храниться в архиве на компьютере. В дальнейшем он может использоваться для программирования плат с использованием других инструментов. - Показать папку скетча (Show Sketch Folder)
Открывает текущую папку скетча, в которой храниться скетч и/или двоичный файл прошивки. - Подключить библиотеку (Include Library)
Добавляет библиотеку в ваш эскиз, вставляя инструкции #include в начале вашего кода. Для получения дополнительной информации см. Ниже библиотеки . Кроме того, из этого пункта меню вы можете получить доступ к менеджеру библиотек и импортировать новые библиотеки из ZIP-архивов. - Добавить файл … (Add File…)
Добавляет исходный файл в эскиз (он будет скопирован из текущего местоположения). Новый файл появится на новой вкладке в окне эскиза. Файлы можно удалить из эскиза, используя меню вкладки, доступное нажатием на значок маленького треугольника в строке над полем программы
ИНСТРУМЕНТЫ
- АвтоФорматирование (Auto Format)
Производится автоматическое форматирование текста скетча. Текст программы становится удобочитаемым. - Архивировать скетч (Archive Sketch)
Создается копия текущего эскиза в формате .zip. Архив размещается в том же каталоге, что и эскиз. - Исправить кодировку и перезагрузить (Fix Encoding & Reload)
Исправляет возможные расхождения между кодировкой символов редактора и кодировкой операционной системы. - Монитор порта (Serial Monitor)
Открывает окно последовательного порта и инициирует обмен данными с любой подключенной к выбранному порту платой. Обычно это сбрасывает плату, если плата поддерживает сброс через последовательный порт. - Плата (Board)
Выберите плату, которую вы используете. Ниже приведены описания различных плат . - Порт (Port)
Это меню содержит все последовательные устройства (реальные или виртуальные) на вашем компьютере. Список должен автоматически обновляться каждый раз при открытии меню инструментов. - Программатор (Programmer)
Этим пунктом выбирается программатор для программирования платы или чипа. При обычной работе программатор не нужен, но если необходимо записать Загрузчик в новый микроконтроллер, то программатор необходим. - Записать Загрузчик (Burn Bootloader)
Элементы в этом меню позволяют записывать загрузчик в память микроконтроллера на плате Arduino. Это не требуется при обычном использовании плат Arduino или Genuino. Это нужно, если вы приобретете новый микроконтроллер ATmega (который обычно поставляется без загрузчика). Убедитесь, что вы выбрали правильную плату в меню « Плата», прежде чем записывать загрузчик на новый МК.
ПОМОЩЬ
Здесь вы найдете легкий доступ к ряду документов, поставляемых с программным обеспечением Arduino (IDE). Документы представляют собой локальную копию онлайн-ссылок.
- Найти в справочнике (Find in Reference)
Это единственная интерактивная функция меню «Помощь»: она непосредственно выбирает соответствующую страницу в локальной копии справочника.
Альбом программ
Программное обеспечение Arduino (IDE) использует принцип альбом программ (Sketchbook). Он представляет собой обычную папку в памяти вашего компьютера, в которой хранятся все ваши программы и эскизы программ. Эскизы в вашем альбоме можно открыть из меню «Файл» > «Папка со скетчами» или c помощью кнопки «Открыть» на панели инструментов. При первом запуске программного обеспечения Arduino каталог для вашего альбома создается автоматически. Вы можете посмотреть или изменить его местоположение с помощью диалогового окна
Начиная с версии 1.0, файлы сохраняются с расширением .ino. Предыдущие версии используют расширение .pde. Но вы все равно можете открыть файлы с расширением .pde в версии 1.0 и в более новых версиях, при этом программное обеспечение автоматически переименует расширение в .ino.
Вкладки, присоединение файлов, компиляция
Программное обеспечение позволяет управлять эскизами, которые содержат в себе несколько файлов. Каждый из файлов отображается на своей вкладке. Это могут быть обычные файлы кода Arduino (без видимых расширений), файлы C (расширение .c), файлы C ++ (.cpp) или файлы заголовков (. h).
Загрузка скетча
Перед загрузкой эскиза вам нужно выбрать правильные элементы в меню «Инструменты» > «Плата» и «Инструменты» > «Порт». Применяемые платы описаны ниже.
На MacOS последовательный порт будет, вероятно, что-то вроде /dev/tty.usbmodem241 (для Uno, Mega2560 или Leonardo) или /dev/tty.usbserial-1B1 (для Duemilanove или более ранних плат USB) или /dev/tty .USA19QW1b1P1.1 (для платы с последовательным интерфейсом, подключенной с помощью адаптера USB-to-Serial). В Windows обычно используют COM1 или COM2 (для платы с последовательным интерфейсом) или COM4, COM5, COM7 или выше (для платы с USB). Чтобы узнать, к какому порту подключено ваше устройство, нужно искать в Диспетчере Устройств Windows последовательное USB-устройство в разделе портов. В Linux это должно быть /dev/ttyACMx, /dev/ttyUSBx или подобное. После выбора правильного порта и платы нажмите кнопку «Загрузка» на панели инструментов или выберите пункт «Загрузка» в меню «Скетч». Платы Arduino при загрузке скетча автоматически сбрасываются. При использовании старых плат (pre-Diecimila), которые не имеют автоматического сброса, вам нужно нажать кнопку сброса на плате непосредственно перед загрузкой. На большинстве плат вы можете наблюдать процесс загрузки программы в виде мигающих светодиодов RX и TX. После завершения загрузки программа Arduino Software (IDE) отобразит сообщение, что загрузка прошла успешно или покажет сообщение об ошибке.
Когда вы загружаете эскиз, вы используете загрузчик (bootloader) Arduino. Это небольшая программа, которая была загружена в память микроконтроллера на вашей плате. Он позволяет загружать код без использования какого-либо дополнительного оборудования. Загрузчик активен в течение нескольких секунд, пока плата сбрасывается. Затем вступает в работу скетч, последний записанный в память контроллера. При работе загрузчика начинает мигать светодиодный индикатор (pin13).
Библиотеки
Библиотеки предоставляют дополнительную функциональность, которую можно использовать в своих программах. Например, работа со специфическим оборудованием или обработка данных. Чтобы использовать библиотеку в эскизе, выберите ее в меню «Скетч» > «Подключить библиотеку». Эта команда вставляет один или несколько операторов #include в верхней части эскиза и компилирует библиотеку с вашим эскизом. Поскольку библиотеки загружаются на плату вместе с эскизом, они увеличивают объем занимаемого программой пространства. Если эскизу больше не нужна библиотека, нужно удалить инструкции #include из верхней части кода.
В ссылке есть список библиотек. Некоторые библиотеки включены в программное обеспечение Arduino. Другие могут быть загружены из разных источников или через Менеджер библиотек. Начиная с версии 1.0.5 IDE, вы можете импортировать библиотеку из zip-файла и использовать ее в вашем эскизе. Инструкции по установке сторонней библиотеки смотрите в этих инструкциях.
Чтобы написать свою собственную библиотеку, смотрите этот учебник.
Оборудование сторонних производителей
В ваши альбомы можно добавлять библиотеки для работы не только с платами Ардуино, но и плат сторонних производителей. Платформы, установленные там, могут включать определения плат (которые отображаются в меню «Инструменты» > «Плата»), основные библиотеки, загрузчики и определения программистов. Для установки создайте каталог оборудования, затем распакуйте стороннюю платформу в свой собственный подкаталог. (Не используйте термин «arduino» в качестве имени подкаталога, иначе вы переопределите встроенную платформу Arduino.) Для удаления платформы просто удалите ее каталог.
Подробнее о создании пакетов для сторонних аппаратных средств см. Спецификацию оборудования сторонних производителей Arduino IDE 1.5.
Монитор порта
Он отображает последовательность данных, отправленных с платы Arduino или Genuino через USB или последовательный порт. Чтобы отправить данные на плату, введите текст и нажмите кнопку «Отправить» или нажмите «Ввод». В раскрывающемся меню выберите скорость передачи, которая соответствует скорости, прописанной в Serial.begin в программе. Обратите внимание, что в Windows, Mac или Linux плата будет перезагружена (она запустит вашу программу заново) при подключении к монитору порта. Также необходимо обратить внимание, что монитор порта не обрабатывает управляющие символы; если для вашего эскиза требуется полное управление последовательной связью с управляющими символами, вы можете использовать внешнюю программу-терминал и подключить ее к COM-порту, назначенному вашей плате Arduino.
Также вы можете обмениваться данными с платой с помощью Processing, Flash, MaxMSP и т. д. (Более подробно можно посмотреть на странице).
Настройки
Некоторые настройки могут быть выставлены в диалоговом окне настроек «Файл» > «Настройки». Остальные можно найти в файле настроек, местоположение которого показано в диалоговом окне «Настройки».
Поддержка языков
Начиная с версии 1.0.1, программное обеспечение Arduino (IDE) было переведено на многие языки мира. По умолчанию IDE использует язык, установленный вашей операционной системой. Если вы хотите вручную изменить язык, запустите программу Arduino (IDE) и выберите пункт «Файл» > «Настройки». Найдите пункт «Язык редактора» и раскрывающееся меню со списком поддерживаемых языков. Выберите нужный язык в меню и перезапустите программное обеспечение. Если выбранный вами язык не поддерживается операционной системой, то программа после рестарта автоматически будет использовать английский язык.
Вы можете вернуть языковые настройки, используемые по умолчанию операционной системой. Для этого выберите в списке языков пункт «System Default». Этот параметр вступает в силу при рестарте программного обеспечения Arduino (IDE). Таким же образом, после изменения настроек операционной системы, вы должны перезапустить программное обеспечение Arduino (IDE), чтобы обновить его до нового языка по умолчанию.
Платы
При выборе платы в программе IDE Arduino мы обеспечиваем следующее: 1. Устанавливаем параметры, такие как скорость процессора и скорость передачи данных, используемые при компиляции и загрузке эскизов; 2. Устанавливаем fuse-биты, используемые командой burn bootloader. Многие предустановленные настройки плат различаются только fuse-битами, поэтому, вы можете успешно загрузить программу в свою плату, выбрав другой тип платы в настройках, но при записи загрузчика нужно проверять выбранный тип платы. Таблицу сравнения между различными платами можно найти здесь .
Программное обеспечение Arduino (IDE) включает встроенную поддержку следующих плат, все на основе микроконтроллера AVR Core. Менеджер плат включен в стандартную установку и позволяет добавлять поддержку для новых плат, число которых постоянно растет.
- Arduino Yùn
Основа: ATmega32u4. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 12 аналоговых входов, 20 цифровых входов/выходов, 7 ШИМ. - Arduino/Genuino Uno
Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ. - Arduino Diecimila или Duemilanove w/ ATmega168
Основа: ATmega168. Работает на частоте 16 MHz с автоматическим сбросом. - Arduino Nano w/ ATmega328P
Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 8 аналоговых входов. - Arduino/Genuino Mega 2560
Основа: ATmega2560. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 16 аналоговых входов, 54 цифровых входа/выхода и 15 ШИМ. - Arduino Mega
Основа: ATmega1280. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 16 аналоговых входов, 54 цифровых входа/выхода и 15 ШИМ. - Arduino Mega ADK
Основа: ATmega2560. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 16 аналоговых входов, 54 цифровых входа/выхода и 15 ШИМ. - Arduino Leonardo
Основа: ATmega32u4. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 12 аналоговых входов, 20 цифровых входов/выходов и 7 ШИМ. - Arduino/Genuino Micro
Основа: ATmega32u4. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 12 аналоговых входов, 20 цифровых входов/выходов и 7 ШИМ. - Arduino Esplora
Основа: ATmega32u4. Работает на частоте 16 MHz с автоматическим сбросом. - Arduino Mini w/ ATmega328P
An ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 8 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ. - Arduino Ethernet
Аналог Arduino UNO с Ethernet shield: Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ. - Arduino Fio
Основа: ATmega328P. Работает на частоте 8 MHz с автоматическим сбросом. Аналог Arduino Pro или Pro Mini (3.3V, 8 MHz) w/ ATmega328P. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ. - Arduino BT w/ ATmega328P
Основа: ATmega328P. Работает на частоте 16 MHz. Встроеный загрузчик (4 КБ) содержит код для инициализации встроенного модуля bluetooth. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ. - LilyPad Arduino USB
Основа: ATmega32u4. Работает на частоте 8 MHz с автоматическим сбросом. Имеет 4 аналоговых входа, 9 цифровых входов/выходов и 4 ШИМ. - LilyPad Arduino
Основа: ATmega168 или ATmega132. Работает на частоте 8 MHz с автоматическим сбросом. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ. - Arduino Pro или Pro Mini (5V, 16 MHz) w/ ATmega328P
Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. Аналог Arduino Duemilanove или Nano w/ ATmega328P. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ. - Arduino NG или позднеее w/ ATmega168
Основа: ATmega168. Работает на частоте 16 MHz без автоматического сброса. Имеет 6 аналоговых входов, 14 цифровых входов/выходов и 6 ШИМ. - Arduino Robot Control
Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. - Arduino Robot Motor
Основа: ATmega328P. Работает на частоте 16 MHz с автоматическим сбросом. - Arduino Gemma
Основа: ATtiny85. Работает на частоте 8 MHz с автоматическим сбросом. Имеет 1 аналоговый вход, 3 цифровых входа/выхода и 2 ШИМ.
Инструкции по установке поддержки плат других производителей смотрите в разделе «Оборудование сторонних производителей» выше.
Скетч для робота на плате Arduino nano
Задание 1. Описание «Движение робота вперед, назад»
Мы предполагаем, что владелец конструктора уже знаком с контроллером Arduino и средой проектирования Arduino IDE. Скачать и установить программу Arduino IDE можно по ссылке: https://www.arduino.cc/.
В гнезда блока управления R-5 устанавливается контроллер Arduino Nano. Поэтому и в настройках среды разработки Arduino IDE необходимо выбрать именно этот контроллер с процессором AT mega 328.
Теперь уже приступаем непосредственно к программированию.
Программа для контроллера Ардуино обычно состоит из трёх частей.
В первой части, как в обычной математической задаче, описываются исходные данные. Мы присваиваем названия, назначение, функционал контактов контроллера. Записываем, какие библиотеки мы будем использовать в ходе выполнения программы.
Во второй части с названием Setup пишем уже непосредственно код программы. Но этот код исполняется только один раз за время работы программы. Это необходимо для того, чтобы запрограммировать выходы, входы контроллера на всё время действия программы.
И третья часть программы loop представляет собой команды, которые исполняются процессором в течение всего периода работы процессора.
Рассмотрим простой пример кода для движения робота.
В первой части кода мы определяем, какими контактами платы Arduino мы будем управлять драйвером и, соответственно, электромоторами, придумаем название команд, чтобы нам было понятно их назначение.
В блоке R-5 контакты Arduino жёстко подключены к входам драйвера.
Давайте посмотрим на рисунок ниже:
M_R_IN – вход драйвера, управляющий направлением вращения правого электромотора. Высокий уровень (HIGHT) – вращение вперед.
M_R_EN – вход драйвера, разрешающий вращение правого электромотора. Высокий уровень (HIGHT) разрешает вращение. При подаче на вход сигнала с широтно-импульсной модуляцией (ШИМ, PWM) вход управляет скоростью вращения.
M_L_IN – вход драйвера, управляющий направлением вращения левого электромотора. Высокий уровень (HIGHT) – вращение вперед.
M_L_IN – вход драйвера, разрешающий вращение левого электромотора. Высокий уровень (HIGHT) разрешает вращение. При подаче на вход сигнала с широтно-импульсной модуляцией (ШИМ, PWM) вход управляет скоростью вращения.
И у нас получается следующее:
Контакт Ардуино 2 – направление вращения правого мотора.
Контакт Арудино 3 – разрешение вращения правого мотора. При работе ШИМ – регулировка скорости вращения.
Контакт Ардуино 4 – направление вращения левого мотора.
Контакт Ардуино 5 – разрешение вращения левого мотора. При работе ШИМ – регулировка скорости вращения.
Пишем код. Код здесь.
Скопируйте текст программы и вставьте его в Arduino IDE.
После копирования обязательно проверьте, чтобы комментарии в каждой строчке начинались с двух символов //.
После проверки загрузите код в контроллер. Установите контроллер в блок R-5 и включите питание робота.
Наш робот, исполняя написанный выше скетч, должен в течение одной секунды ехать вперёд, затем на секунду остановиться и начать движение назад. И так как команда loop исполняется постоянно, то робот будет выполнять эти команды, пока включено питание.
Программа Flowcode и модуль Arduino
Познакомиться с проектом можно на сайте: http://arduino. cc/
Модуль можно заказать и получить по почте. Существует он в разных модификациях и под разными именами, например, CarDuino, CraftDuino, FreeDuino и т.д. Собран модуль на основе микроконтроллера ATmega.
Проект Arduino открытый, а, значит, и всё, что касается модуля Arduino открыто, то есть, его можно собрать самостоятельно – есть схема, есть прошивка. Но, если посмотреть на сегодняшние цены микроконтроллеров, если вспомнить, что для сборки программатора нужен программатор, который позволит прошить микросхему… то, как мне кажется, лучше купить готовый модуль.
Что он даёт?
Он позволяет применить его в качестве базы для создания собственных конструкций, и конструкций очень разного плана: и роботы, и устройства автоматики, и приборы и т.п. В любом исполнении он имеет разъемы для подключения плат расширения. Но главное, он подключается к компьютеру (а последние модели позволяют подключение к USB порту), и нужная вам программа загружается из программы Arduino. При этом используется программная часть, утилита, avrdude. Её можно найти в пакете программы Arduino, утилита есть в пакете WinAVR, и её, думаю, можно найти и отдельно.
Для использования модуля при подключении его к компьютеру в Windows достаточно установить драйвер. О том, как это сделать, можно причитать, например, на сайте: http://www.robocraft.ru/
В Windows Vista драйвер сам находится после подключения модуля. В Linux драйвер включен в ядро операционной системы (последних версий). Кстати, модуль с тем же успехом работает в Linux.
Но причём здесь FlowCode?
Дело в том, что утилиту avrdude можно легко настроить в FlowCode for AVR для работы с модулем, что позволяет загружать программу в модуль прямо из Flowcode. Вот пример.
Повторим программу «Hello World» для микроконтроллеров.
Рис. 1. Простейшая программа в среде разработки Flowcode
Написав (собрав) программу, можно проверить её работу. Не следует, пока вы не будете уверены в себе, менять конфигурацию (fuses) контроллера,
Рис. 2. Изменение тактовой частоты
но в разделе «Chip» основного меню на вкладке «Clock Speed…» следует указать тактовую частоту генератора.
Рис. 3. Настройка программатора
Для работы с модулем Arduino в разделе «Chip» основного меню следует открыть раздел «Compiler Options…» и внести изменения в раздел программатора:
Путь к программатору avrdude следует указывать реальный; я установил программу программатора, скопировав два файла из программы SinaProg (есть такая графическая оболочка к утилите avrdude) в папку с именем программатора, которую счёл удобным оставить в корневой директории. В качестве параметров добавлена строка:
%a avrdude “%f.hex” -c stk500v1 -p m168 -P com6 -b 19200 -Uflash:w:”%f.hex”:i -C C:\avrdude\avrdude.conf
Сохранив эти изменения, можно нажать на кнопку «ОК». Если вам придётся вернуть прежние настройки, то есть кнопка «Restore Defaults». И вы готовы к загрузке программы в модуль Arduino. Есть пункт «Compile to Chip…» в разделе «Chip», есть иконка с рисунком микросхемы на инструментальной панели. Используйте любой вариант.
Загрузив программу в модуль, вы увидите мигание светодиода, который уже установлен в модуле. Светодиод удобен, порой, и при отладке программ в дальнейшем, но «на первых шагах» в мир контроллеров, он избавит вас от необходимости что-то паять. Можно найти и придумать много простых, но полезных примеров, которые не потребуют что-то добавлять к схеме.
Будет ли работать Flowcode с модулем Arduino в случае сложных программ? Это нужно проверять. Но сам модуль позволяет превратить его, и сделать это быстро, например, в осциллограф, если использовать программу Xoscillo: https://code.google.com/p/xoscillo/
И, если вам через некоторое время будет мало возможностей модуля, вы оставите его как готовую приставку к компьютеру для получения осциллограмм. И модуль сам может играть роль программатора, но об этом лучше почитать на сайте, посвящённом модулю Arduino.
Кроме программы Flowcode модуль работает с WinAVR и последней версией AVR STudio 5, используя ту же утилиту avrdude. Поэтому, сделав первые шаги в освоении контроллеров с помощью программы Flowcode, вы можете перейти к первым шагам в освоении языка Си. С тем же модулем.
{jcomments on}
Arduino с Python: с чего начать
В предыдущем разделе вы загрузили эскиз Blink на свою плату Arduino. Эскизы Arduino написаны на языке, аналогичном C ++, и компилируются и записываются во флэш-память микроконтроллера при нажатии Upload. Хотя вы можете использовать another language для прямого программирования микроконтроллера Arduino, это не тривиальная задача!
Тем не менее, есть несколько подходов, которые вы можете использовать для использования Arduino с Python или другими языками. Одна из идей – запустить основную программу на ПК и использовать последовательное соединение для связи с Arduino через USB-кабель. Эскиз будет отвечать за чтение входных данных, отправку информации на ПК и получение обновлений с ПК для обновления выходов Arduino.
Чтобы управлять Arduino с ПК, вам необходимо разработать протокол для связи между ПК и Arduino. Например, вы можете рассмотреть протокол с такими сообщениями:
С определенным протоколом вы можете написать эскиз Arduino для отправки сообщений на ПК и обновления состояний контактов в соответствии с протоколом. На ПК вы могли бы написать программу для управления Arduino через последовательное соединение на основе разработанного вами протокола. Для этого вы можете использовать любой язык и библиотеки, которые вы предпочитаете, такие как Python и библиотека PySerial.
К счастью, для этого есть стандартные протоколы! Firmata является одним из них. Этот протокол устанавливает формат последовательной связи, который позволяет считывать цифровые и аналоговые входы, а также отправлять информацию на цифровые и аналоговые выходы.
Arduino IDE включает в себя готовые эскизы, которые проведут Arduino через Python с протоколом Firmata. Со стороны ПК есть реализации протокола на нескольких языках, включая Python. Чтобы начать с Firmata, давайте использовать его для реализации «Hello, World!» программа.
Загрузка эскиза Firmata
Прежде чем писать свою программу на Python для управления Arduino, вы должны загрузить эскиз Firmata, чтобы использовать этот протокол для управления платой. Эскиз доступен во встроенных примерах Arduino IDE. Чтобы открыть его, откройте меню File, затем Examples, затем Firmata и, наконец, StandardFirmata:
Эскиз будет загружен в новое окно IDE. Чтобы загрузить его в Arduino, вы можете выполнить те же действия, что и раньше:
Подключите USB-кабель к ПК.
Выберите подходящую плату и порт в IDE.
Нажмите Upload.
После завершения загрузки вы не заметите никаких действий на Arduino. Для управления им все равно нужна программа, которая может связываться с платой через последовательное соединение. Для работы с протоколом Firmata в Python вам потребуется пакет pyFirmata, который вы можете установить с помощью +
пип +:
После завершения установки вы можете запустить эквивалентное приложение Blink, используя Python и Firmata:
1 import pyfirmata
2 import time
3
4 board = pyfirmata. Arduino('/dev/ttyACM0')
5
6 while True:
7 board.digital[13].write(1)
8 time.sleep(1)
9 board.digital[13].write(0)
10 time.sleep(1)
Вот как эта программа works. Вы импортируете + pyfirmata +
и используете его для установки последовательного соединения с платой Arduino, которая представлена объектом + board +
в строке 4. Вы также настраиваете порт в этой строке, передавая аргумент + pyfirmata.Arduino () +
. Вы можете использовать Arduino IDE, чтобы найти порт.
+ board.digital +
– список, элементы которого представляют цифровые выводы Arduino. Эти элементы имеют методы + read () +
и + write () +
, которые будут читать и записывать состояние выводов. Как и большинство встроенных программ для устройств, эта программа в основном состоит из бесконечного цикла:
В строке 7 включен цифровой вывод 13, который включает светодиод на одну секунду.
В строке 9 этот вывод отключен, что приводит к выключению светодиода на одну секунду.
Теперь, когда вы знакомы с основами управления Arduino с помощью Python, давайте рассмотрим некоторые приложения для взаимодействия с его входами и выходами.
Чтение цифровых входов
*Цифровые входы* могут иметь только два возможных значения. В схеме каждое из этих значений представлено различным напряжением. В таблице ниже показано представление цифрового входа для стандартной платы Arduino Uno:
Value | Level | Voltage |
---|---|---|
0 | Low | 0V |
1 | High | 5V |
Для управления светодиодом вы будете использовать кнопку для отправки значений цифрового входа в Arduino. Кнопка должна подавать 0 В на плату, когда она отпущена, и 5 В на плату, когда она нажата. На рисунке ниже показано, как подключить кнопку к плате Arduino:
Вы можете заметить, что светодиод подключен к Arduino на цифровом выводе 13, как и раньше. Цифровой контакт 10 используется в качестве цифрового входа. Для подключения кнопки необходимо использовать резистор на 10 кОм, который действует как pull down в этой цепи. Понижающий резистор гарантирует, что цифровой вход получает 0 В, когда кнопка отпущена.
Когда вы отпускаете кнопку, вы открываете соединение между двумя проводами на кнопке. Поскольку через резистор ток не течет, контакт 10 просто подключается к земле (GND). Цифровой вход получает 0 В, что представляет состояние 0 (или низкий ). Когда вы нажимаете кнопку, вы подаете 5 В на резистор и на цифровой вход. Ток протекает через резистор, и на цифровой вход подается напряжение 5 В, которое представляет состояние 1 (или high ).
Вы также можете использовать макет для сборки вышеуказанной схемы:
Теперь, когда вы собрали схему, вам нужно запустить программу на ПК, чтобы управлять ею с помощью Firmata. Эта программа включит светодиод в зависимости от состояния кнопки:
1 import pyfirmata
2 import time
3
4 board = pyfirmata.Arduino('/dev/ttyACM0')
5
6 it = pyfirmata.util.Iterator(board)
7 it.start()
8
9 board.digital[10].mode = pyfirmata.INPUT
10
11 while True:
12 sw = board.digital[10].read()
13 if sw is True:
14 board.digital[13].write(1)
15 else:
16 board.digital[13].write(0)
17 time.sleep(0.1)
Давайте пройдемся по этой программе:
Строки 1 и 2 import
+ pyfirmata +
и+ time +
.В строке 4 используется
+ pyfirmata.Arduino () +
, чтобы установить соединение с платой Arduino.Строка 6 назначает итератор, который будет использоваться для считывания состояния входов схемы.
Строка 7 запускает итератор, который поддерживает цикл, работающий параллельно с вашим основным кодом. Цикл выполняет
+ board.iterate () +
для обновления входных значений, полученных с платы Arduino.Строка 9 устанавливает вывод 10 как цифровой вход с помощью
+ pyfirmata.INPUT +
. Это необходимо, поскольку в конфигурации по умолчанию используются цифровые контакты в качестве выходов.Строка 11 запускает бесконечный цикл
+ while +
. Этот цикл считывает состояние входного контакта, сохраняет его в+ sw +
и использует это значение для включения или выключения светодиода путем изменения значения контакта 13.Строка 17 ожидает 0,1 секунды между итерациями цикла
+ while +
. Это не является строго необходимым, но это хороший прием, чтобы избежать перегрузки процессора, который достигает 100% нагрузки, когда в цикле нет команды ожидания.
+ pyfirmata +
также предлагает более компактный синтаксис для работы с входными и выходными выводами. Это может быть хорошим вариантом, когда вы работаете с несколькими выводами. Вы можете переписать предыдущую программу, чтобы иметь более компактный синтаксис:
1 import pyfirmata
2 import time
3
4 board = pyfirmata.Arduino('/dev/ttyACM0')
5
6 it = pyfirmata.util.Iterator(board)
7 it.start()
8
9 digital_input = board.get_pin('d:10:i')
10 led = board.get_pin('d:13:o')
11
12 while True:
13 sw = digital_input.read()
14 if sw is True:
15 led.write(1)
16 else:
17 led.write(0)
18 time.sleep(0.1)
В этой версии вы используете + board.get_pin () +
для создания двух объектов. + digital_input +
представляет состояние цифрового входа, а + led +
представляет состояние светодиода. Когда вы запускаете этот метод, вы должны передать строковый аргумент, состоящий из трех элементов, разделенных двоеточиями:
Тип вывода (
+ a +
для аналогового или+ d +
для цифрового)Номер булавки
Режим вывода (
+ i +
для ввода или+ o +
для вывода)
Поскольку + digital_input +
является цифровым входом, использующим вывод 10, вы передаете аргумент + 'd: 10: i' +
. Состояние светодиода устанавливается на цифровой выход с помощью контакта 13, поэтому аргумент + led +
равен + 'd: 13: o' +
.
Когда вы используете + board.get_pin () +
, нет необходимости явно устанавливать вывод 10 в качестве входа, как вы делали раньше с + pyfirmata.INPUT +
. После того, как контакты установлены, вы можете получить доступ к статусу цифрового входного контакта с помощью + read () +
и установить состояние цифрового выходного контакта с помощью + write () +
.
Цифровые входы широко используются в проектах электроники. Несколько датчиков обеспечивают цифровые сигналы, такие как датчики присутствия или двери, которые могут использоваться в качестве входов для ваших цепей. Однако в некоторых случаях вам необходимо измерить аналоговые значения, такие как расстояние или физические величины. В следующем разделе вы увидите, как читать аналоговые входы, используя Arduino с Python.
Чтение аналоговых входов
В отличие от цифровых входов, которые могут быть только включены или выключены, аналоговые входы используются для считывания значений в некотором диапазоне. На Arduino Uno напряжение на аналоговом входе находится в диапазоне от 0 до 5 В. Соответствующие датчики используются для измерения физических величин, таких как расстояния. Эти датчики отвечают за кодирование этих физических величин в надлежащем диапазоне напряжения, чтобы они могли считываться Arduino.
Для считывания аналогового напряжения Arduino использует *analog-to-digital converter (ADC) *, который преобразует входное напряжение в цифровой номер с фиксированным количеством битов. Это определяет разрешение преобразования. Arduino Uno использует 10-разрядный АЦП и может определять 1024 различных уровня напряжения.
Диапазон напряжения для аналогового входа кодируется числами от 0 до 1023. Когда применяется 0V, Arduino кодирует его в число 0 . При подаче 5 В закодированное число равно 1023 . Все значения промежуточного напряжения кодируются пропорционально.
Https://en.wikipedia.org/wiki/Potentiometer[potentiometer] – это переменный резистор, который можно использовать для установки напряжения, подаваемого на аналоговый вход Arduino. Вы подключите его к аналоговому входу для управления частотой мигания светодиода:
В этой схеме светодиод настроен так же, как и раньше. Концевые клеммы потенциометра подключены к заземлению (GND) и 5В контактам. Таким образом, центральный терминал (курсор) может иметь любое напряжение в диапазоне от 0 до 5 В в зависимости от его положения, которое подключено к Arduino на аналоговом выводе A0.
Используя макет, вы можете собрать эту схему следующим образом:
Перед тем, как управлять светодиодом, вы можете использовать схему для проверки различных значений, которые считывает Arduino, в зависимости от положения потенциометра. Для этого запустите на компьютере следующую программу:
1 import pyfirmata
2 import time
3
4 board = pyfirmata.Arduino('/dev/ttyACM0')
5 it = pyfirmata.util.Iterator(board)
6 it.start()
7
8 analog_input = board.get_pin('a:0:i')
9
10 while True:
11 analog_value = analog_input. read()
12 print(analog_value)
13 time.sleep(0.1)
В строке 8 вы устанавливаете + analog_input +
в качестве аналогового входного вывода A0 с аргументом + 'a: 0: i' +
. Внутри бесконечного цикла + while +
вы читаете это значение, сохраняете его в + analog_value +
и выводите вывод на консоль с помощью + print () +
. Когда вы перемещаете потенциометр во время работы программы, вы должны вывести примерно следующее:
0.0
0.0293
0.1056
0.1838
0.2717
0.3705
0.4428
0.5064
0.5797
0.6315
0.6764
0.7243
0.7859
0.8446
0.9042
0.9677
1.0
1.0
Печатные значения изменяются в диапазоне от 0, когда положение потенциометра находится на одном конце, до 1, когда оно находится на другом конце. Обратите внимание, что это значения с плавающей запятой, которые могут потребовать преобразования в зависимости от приложения.
Чтобы изменить частоту мигания светодиода, вы можете использовать + analog_value +
, чтобы контролировать, как долго светодиод будет гореть или выключаться:
1 import pyfirmata
2 import time
3
4 board = pyfirmata. Arduino('/dev/ttyACM0')
5 it = pyfirmata.util.Iterator(board)
6 it.start()
7
8 analog_input = board.get_pin('a:0:i')
9 led = board.get_pin('d:13:o')
10
11 while True:
12 analog_value = analog_input.read()
13 if analog_value is not None:
14 delay = analog_value + 0.01
15 led.write(1)
16 time.sleep(delay)
17 led.write(0)
18 time.sleep(delay)
19 else:
20 time.sleep(0.1)
Здесь вы вычисляете + delay +
как + analog_value + 0.01 +
, чтобы избежать того, чтобы + delay +
было равно нулю. В противном случае, обычно получают + analog_value +
+ None +
в течение первых нескольких итераций. Чтобы избежать появления ошибки при запуске программы, вы используете условное выражение в строке 13, чтобы проверить, является ли + analog_value +
+ None +
. Затем вы контролируете период мигания светодиода.
Попробуйте запустить программу и изменить положение потенциометра. Вы заметите частоту смены мигающего светодиода:
Теперь вы уже видели, как использовать цифровые входы, цифровые выходы и аналоговые входы в своих цепях. В следующем разделе вы увидите, как использовать аналоговые выходы.
Использование аналоговых выходов
В некоторых случаях необходимо иметь аналоговый выход для управления устройством, для которого требуется аналоговый сигнал. Arduino не имеет реального аналогового выхода, в котором напряжение может быть установлено на любое значение в определенном диапазоне. Однако Arduino включает несколько выходов *Pulse Width Modulation * (PWM).
ШИМ – это метод модуляции, при котором цифровой выход используется для генерации сигнала с переменной мощностью. Для этого он использует цифровой сигнал постоянной частоты, в котором duty цикл * изменяется в соответствии с желаемой мощностью. Рабочий цикл представляет собой долю периода, в течение которого сигнал установлен на *high
Как программировать Raspberry Pi Pico с помощью Arduino IDE
Код подключения для вашего Raspberry Pi Pico можно разделить на две категории. Простой способ для новых пользователей – использовать версию Python, такую как MicroPython или CircuitPython. Более продвинутый способ – написать код на C / C ++, который предназначен для более уверенных пользователей.
Теперь есть третий способ, которым мы можем писать код для нашего Raspberry Pi Pico, и это через IDE Arduino, которая использует «язык Arduino», производный от C ++.Поскольку Arduino существует уже много лет, существует множество уже существующих «эскизов» (термин Arduino для программ) и руководств по ним. Если вы раньше работали с платами Arduino, возможно, вы хорошо знакомы с этой мощной IDE и языком.
Мы прошли через множество различных процессов установки и нашли два проекта, созданные сообществом, которые упрощают процесс установки до нескольких этапов. Первый – это pico-setup-windows , который является портом Windows официального сценария установки Pico.Второй – Arduino-Pico , который добавляет поддержку Raspberry Pi Pico в Arduino IDE. В этом руководстве мы покажем вам, как настроить компьютер с Windows или Ubuntu для написания кода Arduino на Raspberry Pi Pico
Как программировать Raspberry Pi Pico в среде Arduino IDE для Windows
1. Загрузите пико-установку -windows установщик . Это довольно большая загрузка.
2. Запустите установщик .
(Изображение предоставлено Tom’s Hardware)3. Убедитесь, что все компоненты выбраны. d. На ваш компьютер будет установлено около 360 МБ файлов и приложений. Включая файлы, необходимые для создания файлов C / C ++, кода Visual Studio и контроля версий Git.
(Изображение предоставлено Tom’s Hardware)4. Нажмите «Установить », чтобы установить все приложения. Это может занять некоторое время, а иногда может показаться, что это застряло, но наберитесь терпения.
(Изображение предоставлено Tom’s Hardware)5. Загрузите Arduino IDE и установите ее на свой компьютер. Мы выбрали версию 1.8.13, но бета версии 2.0 также работает.
6. Откройте приложение Arduino и перейдите в Файл >> Настройки .
7. В диспетчере дополнительных плат добавьте эту строку и нажмите OK .
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
(Изображение предоставлено Tom’s Hardware)8. Перейдите в Инструменты >> Плата >> Менеджер плат .
(Изображение предоставлено Tom’s Hardware)9. Введите «pico» в поле поиска , а затем , установите плату Raspberry Pi Pico / RP2040 . Это вызовет еще одну большую загрузку размером примерно 300 МБ.
(Изображение предоставлено Tom’s Hardware)10. Перейдите в Инструменты >> Плата >> Платы Raspberry Pi RP2040 и , выберите Raspberry Pi Pico .
(Изображение предоставлено Tom’s Hardware)11. Подключите Raspberry Pi Pico и с помощью диспетчера устройств найдите COM-порт , к которому он подключен.
(Изображение предоставлено Tom’s Hardware)12. В разделе «Инструменты >> Порт» установите COM-порт для Raspberry Pi Pico.
(Изображение предоставлено Tom’s Hardware)13. Открытые файлы >> Примеры >> Основы >> Мигайте , чтобы проверить, можем ли мы писать код для Arduino.
(Изображение предоставлено Tom’s Hardware)14. Щелкните Загрузить , чтобы записать код в Raspberry Pi Pico. В эскизе Blink по умолчанию будет мигать зеленый светодиод рядом с портом micro USB на Raspberry Pi Pico.
(Изображение предоставлено: Tom’s Hardware) (Изображение предоставлено: Tom’s Hardware)Окно вывода сообщит нам, когда загрузка будет завершена. Посмотрите на свой Raspberry Pi Pico, и вы увидите, что зеленый светодиод мигает один раз в секунду.
Как программировать Raspberry Pi Pico в Arduino IDE для Linux
Мы использовали Ubuntu для этого руководства, но те же инструкции должны работать для других дистрибутивов на основе Debian, таких как Raspberry Pi OS.
1. Откройте терминал и используйте wget для загрузки официального сценария установки Pico .
$ wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh
2. В том же терминале измените загруженный файл так, чтобы он стал исполняемым .
$ chmod + x pico_setup.sh
3. Запустите pico_setup.sh , чтобы начать процесс установки. При появлении запроса введите свой пароль sudo.
$./pico_setup.sh
4. Загрузите Arduino IDE и установите ее на свой компьютер. Мы выбрали версию 1.8.13, но бета версии 2.0 также работает.
5. Откройте терминал и добавьте вашего пользователя в группу «dialout». Эта группа может взаимодействовать с такими устройствами, как Arduino. Использование «$ USER» автоматически приведет к использованию вашего имени пользователя.
$ sudo usermod -a -G dialout «$ USER»
6. Выйдите из системы или перезагрузите компьютер , чтобы изменения вступили в силу.
7. Откройте приложение Arduino и перейдите в File >> Preferences .
8. В дополнительном менеджере досок добавьте эту строку и нажмите ОК .
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
(Изображение предоставлено Tom’s Hardware)9. Перейдите в Инструменты >> Плата >> Менеджер плат .
10. Введите «pico» в поле поиска , а затем , установите плату Raspberry Pi Pico / RP2040 . Это вызовет еще одну большую загрузку размером примерно 300 МБ.
(Изображение предоставлено Tom’s Hardware)11. Перейдите в Инструменты >> Плата >> Платы Raspberry Pi RP2040 и , выберите Raspberry Pi Pico .
(Изображение предоставлено Tom’s Hardware)12. Подключите Raspberry Pi Pico
13. Запустите команду, чтобы найти USB-устройство , которое идентифицируется как Raspberry Pi Pico. В нашем случае это был ttyACM0.
$ dmesg
(Изображение предоставлено Tom’s Hardware)14. Открытые файлы >> Примеры >> Основы >> Мигайте , чтобы проверить, можем ли мы писать код для Arduino.
(Изображение предоставлено Tom’s Hardware)15. Щелкните Загрузить , чтобы записать код в Raspberry Pi Pico. В эскизе Blink по умолчанию будет мигать зеленый светодиод рядом с портом micro USB на Raspberry Pi Pico.
(Изображение предоставлено Tom’s Hardware)Окно вывода сообщит нам, когда загрузка будет завершена. Посмотрите на свой Raspberry Pi Pico, и вы увидите, что зеленый светодиод мигает один раз в секунду.
(Изображение предоставлено Tom’s Hardware)Raspberry Pi Pico Tutorials:
5,4. Программирование AVR с использованием Arduino IDE
Примечание: Мы не ожидаем, что это руководство окажется полезным для типичных Arduino-совместимых плат, которые обычно поставляются с загрузчиком, который можно использовать для загрузки эскизов. Если вы хотите использовать программатор в качестве адаптера USB-последовательный порт вместе с Arduino IDE для загрузки эскизов на плату с использованием существующего загрузчика, см. Раздел 6.3.
В следующем руководстве описаны шаги, необходимые для программирования AVR в Windows с использованием программного обеспечения Arduino (IDE) и Pololu USB AVR Programmer v2. x. В этом руководстве мы будем использовать программатор для прямой загрузки скетчей (программ) в AVR, используя его интерфейс ISP. Это может быть полезно, если вы хотите запрограммировать чистый чип AVR с помощью Arduino IDE.
- Загрузите и установите программное обеспечение Arduino.
- Откройте IDE Arduino. Будет автоматически сгенерирована новая программа-шаблон.
- В меню инструментов найдите меню Programmer , а затем выберите плату разработки Atmel STK500 . Если вы не видите записи для STK500, вам следует выполнить обновление до Arduino 1.6.5 или новее.
- В меню Порты выберите порт, который соответствует порту программирования программатора. Если вы не уверены, какой из перечисленных последовательных портов является портом программирования, см. Раздел 4.5.
- В меню Boards выберите запись, соответствующую микроконтроллеру AVR или плате, которую вы хотите запрограммировать. Если в меню «Доски» нет записей, которые точно соответствуют цели, которую вы пытаетесь запрограммировать, то может быть одна достаточно близкая для работы. Например, если вы программируете ATmega328P, работающую на частоте 16 МГц, то запись для «Arduino / Genuino Uno», вероятно, будет работать, поскольку он использует тот же процессор и тактовую частоту. При необходимости вы можете добавить новую запись в меню «Платы», найдя файл «hardware / arduino / avr /boards.txt» внутри вашей установки Arduino IDE и отредактировав его.
- В меню Sketch выберите Загрузить с помощью Programmer . Это специальная версия команды загрузки, которая заставляет программное обеспечение Arduino запускать AVRDUDE с использованием настроек для STK500 вместо использования обычного загрузчика платы. Он должен загрузить программу шаблона по умолчанию в ваш AVR. Если все сработало, появится сообщение «Загрузка завершена». появится в строке состояния.
Если на этапе загрузки возникает ошибка, первым шагом к ее отладке должно быть включение подробного вывода во время загрузки. В среде Arduino IDE в меню File выберите Preferences , затем установите флажок upload в строке с надписью Показывать подробный вывод во время и нажмите OK . Теперь, когда вы попытаетесь загрузить снова, вы увидите подробную информацию о том, как Arduino IDE пытается загрузить вашу программу. Одна из самых важных вещей, на которую следует обратить внимание, – это команда, используемая для вызова AVRDUDE: вы должны убедиться, что она говорит «-cstk500», использует правильный COM-порт и указывает правильный микроконтроллер AVR с помощью параметра «-p».Для получения дополнительной помощи по устранению неполадок см. Раздел 5.6.
Arduino для детей | Top Kids Online Arduino Class
Arduino Часто задаваемые вопросы
Что такое Arduino простыми словами?
Что такое Ардуино? Платформа Arduino имеет открытый исходный код и состоит из аппаратного и программного обеспечения. Платы Arduino – это просто разновидность микроконтроллера. С помощью кодирования платы считывают входные данные с датчиков и кнопок и превращают их в выходы, такие как включение светодиода или активация двигателя.
Подходит ли Arduino для новичков?Да, Arduino подойдет новичкам, желающим окунуться в мир электроники. Плату Arduino можно использовать как основу практически любого электронного проекта. Эта универсальность в сочетании с тем фактом, что программное обеспечение Arduino является бесплатным, а аппаратные платы относительно недороги, делают платформу Arduino отличным выбором.
Легко ли выучить Arduino?Arduino может быть простым в освоении, и это интересный способ помочь студентам понять встроенные системы.В качестве дополнительного бонуса у Arduino есть огромное сообщество людей, которые помогают друг другу, делясь своими собственными проектами, поэтому новички могут весело провести время, воссоздавая всевозможные идеи. Вы также можете изучить Arduino с онлайн-классами в режиме реального времени, чтобы получить пошаговые инструкции и узнать, почему и как, что даст вам возможность создавать всевозможные удивительные проекты.
Что мне нужно для начала работы с Arduino?Чтобы начать работу с Arduino, вам просто понадобится Arduino IDE, а в некоторых случаях и физическая плата Arduino.Для наших классов мы используем симулятор Arduino, поэтому никаких физических устройств не требуется. Плата Arduino UNO является одной из самых популярных плат и имеет 14 цифровых входных / выходных контактов, 6 аналоговых входных контактов, разъем питания, кнопку сброса, порт USB и разъем ICSP.
Какой стартовый комплект Arduino мне купить?Стартовый комплект Arduino – отличный способ начать, если вы новичок в этой платформе. Есть несколько наборов Arduino на выбор, но все они имеют одну общую черту: микроконтроллер.Этот стартовый комплект Arduino дает вам практический опыт работы с Arduino и электроникой и включает в себя новейшую плату контроллера Arduino UNO. Он поставляется со всеми необходимыми деталями, такими как плата управления, фонари, резисторы и многое другое.
Arduino – это то же самое, что и Raspberry Pi?Arduino – это не то же самое, что Raspberry Pi. Arduino – это плата микроконтроллера, которая может быть запрограммирована на основе входов и выходов, тогда как Raspberry Pi – это одноплатный компьютер, работающий в операционной системе.Вы можете запрограммировать Arduino с Raspberry Pi, но не наоборот.
Какой язык используется в Arduino?Arduino IDE написана на Java. Но программирование Arduino – это упрощенная версия языка программирования C ++. Однако можно использовать Arduino с Python, Java или другим языком программирования высокого уровня.
Стоит ли изучать Arduino?Безусловно, Arduino стоит изучить. IDE Arduino поставляется с набором стандартных библиотек Arduino для часто используемых функций, что упрощает изучение. Но вы также можете создавать свои собственные библиотеки Arduino. Проекты Arduino не только помогут вам научиться программировать, но и дадут вам возможность создавать всевозможные проекты, включая классную домашнюю автоматизацию.
Использует ли Arduino Java?Программное обеспечение Arduino IDE, которое вы используете для программирования Arduino, написано на Java, но программирование Arduino выполняется на C ++. Если вы хотите запрограммировать свой Arduino на Java, вы всегда можете использовать библиотеку JArduino, которая предоставляет Java API для легкого управления вашим контроллером.Этот вариант может быть легче освоить тем, кто уже покорил Java для детей.
Каковы функции Arduino?Arduino имеет множество функций. Arduino может легко подключаться и работать практически с любым устройством или компонентом. От двигателей до датчиков – это отличный способ для студентов узнать о входах и выходах, а также о том, как компьютеры, роботы и механические устройства могут общаться с вами и остальным миром.
Программирование Arduino Uno (ATmega386P) в сборке · GitHub
В Интернете есть несколько различных источников, которые описывают способы программирования Arduino Uno / ATmega328P в сборке, и за последние пару дней мне пришлось переключить большинство из них, чтобы получить базовую настройку и начальные программы.Это попытка объединить все эти источники в централизованный документ с двумя простыми примерами программ.
Требования
Есть два основных варианта задачи (о которых я знаю), и установка, на которую я остановился, случайна в Ретроспектива 1 . Но вы можете самостоятельно исследовать альтернативную настройку, основанную на проекте AVR Libc.
Для установки, которую я использую, вам понадобятся: avrdude и avra. Обратите внимание, что я использую Linux, и, если вы используете другую операционную систему, вы будете самостоятельно настраивать / конфигурировать эти инструменты.
Необязательно (но необходимо прочитать)
При подключении через USB мой Uno имел бы последовательный интерфейс, сопоставленный с / dev / ttyACM0
. Поскольку мне нужно было более интуитивно понятное имя устройства (и тот факт, что мне потребовалось некоторое время, чтобы узнать, какое имя устройства оно имеет в первом имени), я написал правило udev
для сопоставления моей платы Uno с / dev / arduino. -uno
.
$ кот /etc/udev/rules.d/10-arduino.rules ЯДРО == "ttyACM0", SYMLINK + = "arduino-uno", OWNER = "mhitza"
Если вы используете символическую ссылку, не забудьте также включить директиву OWNER
; в противном случае каждый раз, когда вы загружаете новую программу в Uno, вам придется вызывать avrdude
с sudo
.
ПРИМЕЧАНИЕ Если вы пропустили этот шаг, обязательно замените любое появление
/ dev / arduino-uno
на/ dev / ttyACM0
и префикс всех вызововavrdude
наsudo
в последующем Makefile.
Также вы увидите ссылку на picocom
(программа, используемая для последовательной связи с платой) в файле Makefile, который я использую, и он должен работать, но я еще не тестировал его.
Простой Makefile
ПРИМЕЧАНИЕ Уже существует популярный проект Makefile для Arduino, однако он полагается на проект AVR Libc.И, как и в случае с другими «готовыми» решениями, такими как oh-my-zsh, я предпочитаю начинать с небольшой базы. Мне легче понять и поддерживать.
Makefile доступен в конце страницы.
Дана программа с именем blink.asm
-
make
(илиmake blink.hex
) – скомпилировать его в шестнадцатеричный файл -
make program = blink upload
– загрузить программу на плату Arduino. Если вы не запускали предыдущий шаг вручную, он также скомпилирует для вас программу -
make monitor
– монитор серийных данных
Откуда взялись имена?
При чтении другого примера кода сборки в Интернете вы найдете ссылки на именованные константы, которые не встроены в ассемблер.Те обычно приходят из m328Pdef. inc. Откуда ты загрузка этого файла на самом деле не имеет значения, так как в основном каждый носит с собой копию; или так кажется. 2
Я лично использую его в качестве учебного пособия и рекомендую вам копировать только те определения, которые вам нужны в вашей программе, пока вы не ознакомитесь с именами. Я подхожу к этому так, как вы увидите в моих примерах программ.
Проект для примера кода
Проект выполнен на 123д.circuitits.io
Три светодиода и простой переключатель. При каждом нажатии на переключатель светодиоды включаются (слева направо) один за другим, и как только красный светодиод будет достигнут, дальнейшие нажатия будут выключать светодиоды в обратном порядке, пока мы не достигнем начального состояния. Промыть и повторить.
Будут показаны две реализации, первая – это способ, которым большинство людей, я думаю, написали бы реализацию (в терминах реакции на нажатия кнопок, не обязательно, как они будут переключать светодиоды) (при условии, что они не знают прерываний пока нет), а вторая версия будет использовать прерывание вместо “опроса” вывода на предмет изменений напряжения (состояния).
Список литературы
ПРИМЕЧАНИЕ Руководство ассемблера предназначено для
AVRASM32.exe
, а не дляavra
. Однако avra – совместимый ассемблер с несколькими дополнительными функциями
ПРИМЕЧАНИЕ , если вы видите онлайн-ссылки на
avrasm2
, вы должны знать, что часть программного обеспечения отличается отAVRASM32.exe
иavra
. Аavra
вряд ли сможет скомпилировать код, написанный для этого ассемблера.
При программировании AVR на сборке необходимо держать эти ссылки под рукой:
- Изначально я начал с
avr-as
, но полезные ответы на stackoverflow я нашел указал наavra
, и как только я смог написать простую программу, я не стал оглядываться назад. перейти к ссылка - Может быть, имеет значение, откуда вы его скачиваете. Какой-нибудь подлый человек может предоставить это файл в измененном формате, где сопоставления не будут правильными, и вы будете записывать в неправильные биты памяти и тратить часов / дней отладка кода сборки. перейти к ссылке
Как запустить код и программы Arduino на Raspberry Pi
Raspberry Pi – потрясающий мини-компьютер, и я хотел бы использовать его в некоторых проектах. Есть только одна крохотная проблема. У меня практически нет опыта работы с Python. Несколько лет назад я занимался программированием на Python, но только основы. У меня больше опыта в C ++, особенно в написании программ для Arduino. Разве не было бы хорошо, если бы у тех из нас был способ использовать свои навыки программирования Arduino на Raspberry Pi? К счастью, есть!
Из этой статьи вы узнаете, как запускать скетчи, написанные для Arduino, на Raspberry Pi! Для этого мы будем использовать фреймворк RasPiArduino.Это позволит нам скомпилировать код Arduino в двоичные файлы, которые могут работать на Raspberry Pi. Но прежде чем мы сможем это сделать, мы должны подготовить несколько вещей как в Arduino IDE, так и в Raspberry Pi.
Оборудование Программное обеспечение Настройка IDE Arduino1. Откройте установочную папку Arduino. В системах Windows это, скорее всего, будет «C: \ Program Files \ Arduino» в 32-битной системе или «C: \ Program Files (x86) \ Arduino» в 64-битной системе.
Рисунок 1. Папка установки Arduino
2. Откройте папку «Оборудование» и создайте в ней новую папку с именем «RaspberryPi».
Рисунок 2. Вновь созданная папка
3. Перейдите на https://github.com/me-no-dev/RasPiArduino и клонируйте репозиторий в новую папку «piduino» внутри «RaspberryPi». Если вы не хотите клонировать репозиторий, вы можете загрузить содержимое репозитория в виде zip-файла и разархивировать его в папку «piduino».
Рисунок 3.Содержимое папки «piduino»
4. Затем вы должны загрузить GNU Toolchain с http://gnutoolchains.com/raspberry/. Вы должны скачать версию, которая поддерживает версию вашей Raspberry OS. Поскольку вы, вероятно, используете последнюю версию Raspbian Stretch, вам нужно загрузить GCC 6.3.0. Как только файл будет загружен, запустите его. Оставьте путь установки «C: \ SysGCC \ raspberry», убедитесь, что вы принимаете лицензионное соглашение, и нажмите кнопку «Установить». Через некоторое время установка должна завершиться успешно.
Рисунок 4. Программа установки GNU Toolchain
5. Внутри установочного каталога Arduino перейдите в папку «piduino», которую мы создали на шаге 3. Откройте файл «platform.txt» и измените номер строки 5 с
runtime.tools.toolchain.path = {runtime .platform.path} / tools / arm-linux-gnueabihf
to
runtime.tools.toolchain.path = C: / SysGCC / Raspberry
Это укажет компилятору на каталог, содержащий набор инструментов, который мы установлен на шаге 4.
Рисунок 5. Содержимое platform.txt
6. Перезапустите Arduino IDE и откройте новый скетч. В меню «Инструменты» в разделе «Доска» теперь должна быть новая плата с названием «RaspberryPI B + / 2». Чтобы убедиться, что все установлено правильно, выберите плату Raspberry Pi, скопируйте приведенный ниже код и скомпилируйте скетч. Компиляция может занять больше времени, чем для плат Arduino, и генерировать некоторые предупреждения, но если в конце будет написано «Готово компиляция», все будет в порядке.
void setup () { Консоль .println ("Это функция НАСТРОЙКИ"); } void loop () { Консоль .println («Это функция LOOP»); задержка (1000); }
Рисунок 6. Плата Raspberry Pi в Arduino IDE
Разница между программированием и собственными портами
Когда вы слышите название «Arduino», вам на ум приходит изображение Uno? Несмотря на то, что эта 8-битная плата является самой популярной, она не единственная доступная сегодня Arduino. Доступны и другие платы, такие как Due и недавно представленный Zero, которые намного более продвинуты, чем скромный Uno.
Это 32-битные платы микроконтроллеров, которые имеют совершенно иную архитектуру по сравнению с относительно простой Uno. Фактически, одно из самых ярких различий заключается в том, что у Due и Zero есть два порта USB.
В чем разница между портами программирования и собственными портами на этих более мощных платах Arduino?
Выпущенный несколько лет назад, Due был первым 32-разрядным Arduino команды Arduino. Он также был первым с импульсным блоком питания на плате, а также с вводом / выводом, равным 3.Только 3V вольт. В то время это было довольно захватывающе.
Когда он был выпущен, я написал о своих первых впечатлениях от Due и даже краткое руководство по созданию треугольной или пилообразной формы волны с его истинными аналоговыми выходами.
Два порта USB
Одно из заблуждений относительно 32-битных плат состоит в том, что два порта означают, что один предназначен для устройства, а другой – для хоста. Это не относится к делу. Оба порта предназначены только для устройств.
Одна проблема заключается в том, что любой порт можно использовать для программирования платы.Итак, в чем разница между программными и собственными портами? А какой порт использовать?
Разница между программированием и собственными портами
Порт программирования
Due использует ATmega16u2 в своем порту программирования, аналогично тому, как работают другие платы Arduino. 16u2 действует как адаптер последовательного интерфейса USB и программирует 32-битный чип.
Zero совсем другой. Его порт программирования подключается к микросхеме, действующей как «интерфейс EDBG».EDBG – это протокол встроенного отладчика Atmel®, работающий на отдельном микроконтроллере AT32UC3A. Компания Atmel создала этот протокол, чтобы разрешить программирование и отладку своих микроконтроллеров.
Примечание. Вместо использования avrdude для программирования микроконтроллера, Zero программируется с помощью утилиты openOCD.
Собственный порт
И на Due, и на Zero собственный порт подключен непосредственно к микроконтроллеру. Зачем включать этот порт? Прямой или собственный порт полезен для использования микроконтроллера для эмуляции различных USB-устройств.
Одним из преимуществ является то, что вы можете эмулировать USB-устройство на Native при перепрограммировании Arduino с помощью порта программирования.
Какой порт вы используете для программирования?
Любой порт может использоваться для программирования Due или Zero. Однако рекомендуется использовать специальный порт программирования.
Leonardo – это случай, когда «порт программирования» подключен непосредственно к микроконтроллеру. У некоторых пользователей возникли проблемы с перепрограммированием Леонардо из-за сложной схемы «перезагрузки».
Программирование с использованием выделенного чипа и выделенного порта обеспечит более надежную работу.
Что особенного в порту программирования Zero’s?
Работающая с Atmel, Arduino Zero – первая плата Arduino, которая напрямую поддерживает Atmel Studio. Zero использует протокол EDBG от Atmel, что позволяет использовать все возможности отладки 32-разрядного микроконтроллера.
Если сравнить это с Uno, большая часть отладки выполняется с помощью серийных отпечатков. Этот метод – грубый способ поиска ошибок.Часто это приводит к ошибкам, например, нехватке оперативной памяти. Полноценный отладчик позволяет приостанавливать работу микроконтроллера и напрямую проверять содержимое памяти!
Для сложных проектов эта возможность отладки критична.