Ардуино скетчи: Как написать скетч?

Содержание

Файлы и библиотеки и другое для Arduino

★ Обновлено: 18:35 21.05.2019

Библиотека LiquidCrystal для подключения LED символьного экрана и примеры

★ Обновлено: 18:35 21.05.2019

Библиотека EtherShield Enc28J60 для Arduino готовые скетчи

★ Обновлено: 18:35 21.05.2019

Библитетка keypad для клавиатуры 4×4

★ Обновлено: 18:35 21.05.2019

Библиотека Ethernet

★ Обновлено: 18:35 21.05.2019

Библиотека RF24 для управления модулем Wireless Module 2.4G NRF24L01

★ Обновлено: 18:35 21. 05.2019

Библиотека и примеры работы с модулем RFID-модуль RC522

★ Обновлено: 18:35 21.05.2019

Библиотека для датчиком атмосферного давления BMP085

★ Обновлено: 18:35 21.05.2019

Библиотека Adafruit GFX для графических дисплеев

★ Обновлено: 18:35 21.05.2019

Библиотека для дисплеев на чипе ILI9340

★ Обновлено: 18:35 21.05.2019

Библиотека для работы с датчиком давления BMP085

★ Обновлено: 18:35 21.05.2019

Библиотека Dallas Temperature

★ Обновлено: 18:35 21. 05.2019

Библиотека DHT к arduino

★ Обновлено: 18:35 21.05.2019

Библиотека DS1307 модуль часов реального времени

★ Обновлено: 18:35 21.05.2019

Библиотека для интернет шилда на чипе 28J60

★ Обновлено: 18:35 21.05.2019

Библиотека arduino для подключения TFT дисплеев на чипе ILI9341

★ Обновлено: 18:35 21.05.2019

Библиотека для работы с пультами ДУ и инфракрасными датчиками

★ Обновлено: 18:35 21.05.2019

Библиотека LiquidCrystal lcd модулями 1602 через L2C

★ Обновлено: 18:35 21. 05.2019

Библиотека MultiLCD для работи с LCD дисплеями

★ Обновлено: 18:35 21.05.2019

Библиотека для ардуино OneWire

★ Обновлено: 18:35 21.05.2019

Библиотека для работы с дисплеями от nokia 5110

★ Обновлено: 18:35 21.05.2019

Библиотека для работы с SD картами памяти

★ Обновлено: 18:35 21.05.2019

Библиотека WolfCrystal для вывода русских букв для дисплеев без поддержки кириллицы.

★ Обновлено: 18:35 21.05.2019

Библиотека RTC Library для Grove — RTC

★ Обновлено: 18:35 21. 05.2019

Библиотека Grove Temperature And Humidity Sensor

★ Обновлено: 18:35 21.05.2019

Библиотека и примеры Grove — Wifi Shield Wi-fi250

★ Обновлено: 18:35 21.05.2019

IIC without ACK библиотека

★ Обновлено: 18:35 21.05.2019

Библиотека arduino для подключения TFTLCD

★ Обновлено: 18:35 21.05.2019

Touch screen

★ Обновлено: 18:35 21.05.2019

TFT LCD library

★ Обновлено: 18:35 21. 05.2019

GFX library

★ Обновлено: 18:35 21.05.2019

Latest SD card library

★ Обновлено: 18:35 21.05.2019

Библиотека pcd8544 NOKIA5110 LCD 84×48

★ Обновлено: 18:35 21.05.2019

LCDKeypad Библиотека

★ Обновлено: 18:35 21.05.2019

DFR_Key

★ Обновлено: 18:35 21.05.2019

GSM/GPRS Shield SIM900 Библиотека

★ Обновлено: 18:35 21.05.2019

GPRS_Shield library

★ Обновлено: 18:35 21. 05.2019

Suli library

★ Обновлено: 18:35 21.05.2019

Arduino RFID Library for MFRC522

★ Обновлено: 18:35 21.05.2019

VirtualWire v1.27 Библиотека примеры и документация

★ Обновлено: 18:35 21.05.2019

125 кГц RFID RDM6300 UART библиотека с примером

★ Обновлено: 18:35 21.05.2019

Arduino-ESP8266_libs

★ Обновлено: 18:35 21.05.2019

ESP8266 library

★ Обновлено: 18:35 21.05.2019

ESP8266-Library A library for the ESP8266 WiFi module

★ Обновлено: 18:35 21. 05.2019

ESP8266 An Arduino library for the ESP8266EX chipset (WI07c module)

★ Обновлено: 18:35 21.05.2019

Библиотека LiquidCrystal_I2C_V112

★ Обновлено: 18:35 21.05.2019

DFPlayer Mini mp3 Arduino Library V1.3

★ Обновлено: 18:35 21.05.2019

Библиотека и примеры Stepper_28BYJ

★ Обновлено: 18:35 21.05.2019

Библиотека и примеры Диспетчера задач для Ардуино Metro

★ Обновлено: 18:35 21.05.2019

Adafruit-ST7735-библиотека

★ Обновлено: 18:35 21. 05.2019

Adafruit-GFX-библиотека

★ Обновлено: 18:35 21.05.2019

Библиотека AFMotor Motor shield

★ Обновлено: 18:35 21.05.2019

Arduino RFID Library for MFRC522

★ Обновлено: 18:35 21.05.2019

OneWire Arduino Library

★ Обновлено: 18:35 21.05.2019

OLED I2C с поддержкой Русского и Украинского языка.

★ Обновлено: 18:35 21.05.2019

Dallas Temperature

★ Обновлено: 18:35 21.05.2019

Adafruit BMP085 Библиотека для работы с датчиком давления BMP085

★ Обновлено: 18:35 21. 05.2019

Библиотека Kalman (Gy-521, mpu6050)

★ Обновлено: 18:35 21.05.2019

Библиотека DigitalTube, для 4-сегментного дисплей

★ Обновлено: 18:35 21.05.2019

Библиотека для LCD модуля MC1368C на базе чипа HT1621 (holtek)

★ Обновлено: 18:35 21.05.2019

Библиотека Adafruit_QDTech

★ Обновлено: 18:35 21.05.2019

Библиотека Bh2750 датчик освещенности Gy-30,Gy-302

★ Обновлено: 18:35 21.05.2019

Библиотека Adafruit NeoPixel

★ Обновлено: 18:35 21. 05.2019

Библиотека UTFT_tinyFAT

★ Обновлено: 18:35 21.05.2019

Библиотека tinyFAT

★ Обновлено: 18:35 21.05.2019

Библиотека Adafruit_Fingerprint для работы со сканером отпечатков пальцев

★ Обновлено: 18:35 21.05.2019

Библиотека U8glib для работы с LCD дисплеями

★ Обновлено: 18:35 21.05.2019

Библиотека SparkFun_APDS9960

★ Обновлено: 18:35 21.05.2019

Библиотека APDS9930

Adafruit_Thermal

★ Обновлено: 18:35 21. 05.2019

Библиотека Adafruit_Thermal для работы с термопринтером

★ Обновлено: 18:35 21.05.2019

Библиотека URTouch для работы с TouchScreen

max6675

★ Обновлено: 18:35 21.05.2019

Библиотека max6675 для работы с одноимённым чипом нормализатора сигнала термопары

★ Обновлено: 18:35 21.05.2019

SdFat

★ Обновлено: 18:35 21.05.2019

UTFT_SdRaw

★ Обновлено: 18:35 21.05.2019

Библиотека SFE_MicroOLED для работы с OLED дисплеями 64×48

★ Обновлено: 18:35 21. 05.2019

Библиотека WEMOS_Motor

★ Обновлено: 18:35 21.05.2019

Библиотека Adafruit_TCS34725 (Датчик цвета с ИК-фильтром)

★ Обновлено: 18:35 21.05.2019

Ethernet2

★ Обновлено: 18:35 21.05.2019

Ethernet2

★ Обновлено: 18:35 21.05.2019

123

Adafruit_PN532

★ Обновлено: 18:35 21.05.2019

Библиотека Adafruit_PN532 для работы с RFID/NFC модулем PN532

TinyGPS

★ Обновлено: 18:35 21. 05.2019

Библиотека TinyGPS для работы с GPS-модулем GY-GPS6mv2

Pixy

★ Обновлено: 18:35 21.05.2019

Библиотека Pixy к модулю Pixy CMUcam5

Adafruit_CCS811

★ Обновлено: 18:35 21.05.2019

Библиотека Adafruit_CCS811 к датчику качества воздуха CCS811

ACS712

★ Обновлено: 18:35 21.05.2019

Библиотека ACS712 к Датчику тока 5А/20А/30А

RGBmatrixPanel

★ Обновлено: 18:35 21.05.2019

Библиотека Adafruit RGBmatrixPanel

PS2X

★ Обновлено: 18:35 21. 05.2019

Библиотека PS2X для геймпада DualShock 2

DFPlayerMini

★ Обновлено: 18:35 21.05.2019

Библиотека для Trema-модуля MP3

pyiArduinoI2Crelay

★ Обновлено: 18:35 21.05.2019

Библиотека (модуль) Python для работы с I2C реле на Raspberry Pi

pyiArduinoI2Cmatrix

★ Обновлено: 18:35 21.05.2019

Библиотека (модуль Python) pyiArduinoI2Cmatrix для работы с I2C матрицой 8×8 на Raspberry Pi

★ Обновлено: 18:35 21.05.2019

Библиотека iarduino_I2C_Keyboard для модулей — Клавиатура, I2C-flash

TEA5767

★ Обновлено: 18:35 21. 05.2019

Библиотека Arduino для TEA5767

★ Обновлено: 18:35 21.05.2019

Библиотека arduinoWebSockets

Wiegand

★ Обновлено: 18:35 21.05.2019

Библиотека Wiegand-Library для работы со стационарными считывателями бесконтактных карт на 125 кГц и 13,56 МГц

★ Обновлено: 18:35 21.05.2019

OV7670

Arduino Pro Mini: описание, подключение, схема, характеристики

Миниатюрная плата семейства Arduino, построенная на микроконтроллере ATmega168.

Содержание


Обзор Arduino Pro Mini

Arduino – это не только плата Arduino Uno, а целое семейство плат, которые различаются возможностями и функционалом. Arduino Pro Mini (рис. 1) – одна из самых миниатюрных плат. Она может использоваться для установки в готовые изделия.


Рисунок 1.

Размеры платы 33х18 мм, что гораздо меньше размеров остальных плат Arduino (см. рис. 2).


Рисунок 2.

Назначение контактов и количество Arduino Pro Mini идентично плате Arduino Nano, совпадает и расположение контактов (исключение выводы A4-A7).

Миниатиризация платы достигнуты благодаря отсутствию на ней USB-UART конвертера и USB выхода, присутствует самое необходимое – микроконтроллер, кварцевый резонатор, конденсаторы, светодиоды,   стабилизатор напряжения. Поэтому для подключения платы к компьютеру, а также для загрузки скетчей из Arduino IDE, надо использовать внешний USB-UART.

На данный момент выпускается несколько вариантов платы Arduino Pro Mini. Платы выпускаются с на контроллере Atmega 168/328, работают от питания 3. 3 или 5В на тактовой частоте 8 или 16 МГц.


Технические характеристики Arduino Pro Mini

  • Микроконтроллер – ATmega168/328;
  • Рабочее напряжение – 3.3В/5В;
  • Напряжение питания – 3.35-12В/5 — 12В;
  • Цифровые входы/выходы – 14;
  • Аналоговые входы – 8;
  • Flash-память – 16/32 КБт;
  • SRAM – 1/2 КБт;
  • EEPROM – 512/1024 байт;
  • Тактовая частота – 8/16 МГц;
  • Размеры – 33х18 мм;
  • Вес – 5 г. 

Подключение к компьютеру 

Для подключения платы к компьютеру используют внешний USB-UART конвертер. Подключение по схеме представленной на рис. 3.


Рисунок 3.

Компьютер определяет USB-UART конвертер как COM порт, его и выбираем в настройках Инструменты à Порт. В меню Инструменты → Плата выбираем Arduino Pro Mini, и загружаем необходимый скетч на плату (рис. 4).

У очень многих конвертеров отсутствует вывод DTR. В этом случае при каждой загрузке скетча в Arduino необходим в начале загрузки (сразу после окончания компиляции) нажать на кнопку Reset, это требует определенного навыка и не всегда получается.


Рисунок 4.

Использование USB-UART конвертера – это не единственный способ загрузки скетчей на плату Arduino Pro Mini.


Рисунок 5. Схема в сборе


Загрузка скетчей через SPI интерфейс

Интерфейс SPI присутствует на всех платах Arduino. Используются контакты D10-D13 (D50-D53 на Arduino Mega), которые на многих платах продублированы на шестиконтактной колодке ICSP. Колодка располагается в правой части Arduino (см. рис. 6).


Рисунок 6.

Сначала необходимо на плату Arduino (например Arduino Uno) загрузить скетч Файл → Образцы → ArduinoISP (рис. 7). Ее мы будем использовать в качестве программатора.


Рисунок 7.

Далее соединяем две платы Arduino согласно таблице 1.


Схема соединений показана на рис. 8.


Рисунок 8.

В Arduino IDE открываем необходимый скетч. Выбираем в меню Инструменты à Arduino Pro Or Pro Mini, порта подключения и программатора (Arduino as ISP). И теперь внимание!!! Метод загрузки нажатием на кнопку Загрузить не подходит, потому что при этом скетч будет загружен на первую плату, которая выступает в качестве программатора. Чтобы этого не произошло, загружаем через пункт меню Эскиз → Загрузить через программатор (рис. 9).


Рисунок 9.


Далее рассмотрим еще один способ загрузки скетчей – через плату Arduino Uno.


Загрузка скетчей на Arduino Pro Mini через плату Arduino Uno

Еще один способ загрузки скетчей на Arduino Pro Mini – это использование платы Arduino Uno, в которой используется микроконтроллер ATmega328 в DIP-корпусе. ATmega328 необходимо аккуратно извлечь и на плате останется переходник USB-UART, который подсоединим 5 проводами к плате Arduino Pro Mini согласно таблице 2.



Теперь подключаем Arduino Uno к компьютеру. Выбираем в настройках необходимый порт, плату (Инструменты → Arduino Pro Or Pro Mini) и загружаем скетч.



Часто задаваемые вопросы

1. Ошибка загрузки скетча на плату при подключении через конвертер USB-Serial.
  • Проверьте правильность подключения платы Arduino Pro Mini конвертеру USB-Serial.
  • Если у конвертера отсутствует контакт DTR, после компиляции скетча до загрузки, нажмите кнопку RESET на плате Arduino Pro Mini.
2. Ошибка загрузки скетча на плату при подключении интерфейсу SPI.
  • Проверьте правильность подключения платы Arduino Pro Mini согласно табл. 1.
3. Ошибка загрузки скетча на плату при подключении через Arduino Uno.
  • Проверьте правильность подключения платы Arduino Pro Mini согласно табл. 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 исполняется постоянно, то робот будет выполнять эти команды, пока включено питание.

Конструктор скетчей для ардуино

Автор На чтение 18 мин. Опубликовано

Вот и закончился базовый курс уроков программирования Arduino. Мы с вами изучили самые базовые понятия, вспомнили (или изучили) часть школьной программы по информатике, изучили большую часть синтаксиса и инструментов языка C++, и вроде бы весь набор Ардуино-функций, который предлагает нам платформа. Подчеркну – мы изучили C++ и функции Ардуино, потому что никакого “языка Arduino” нет, это ложное понятие. Arduino программируется на C или ассемблере, а платформа предоставляет нам всего лишь несколько десятков удобных функций для работы с микроконтроллером, именно функций, а не язык. Теперь перед нами чистый лист блокнота Arduino IDE и желание творить и программировать, давайте попробуем!

Структура программы

Прежде, чем переходить к реальным задачам, нужно поговорить о некоторых фундаментальных вещах. Микроконтроллер, как мы обсуждали в самом начале пути, это комплексное устройство, состоящее из вычислительного ядра, постоянной и оперативной памяти и различных периферийных устройств (таймеры/счётчики, АЦП и проч.). Обработкой нашего с вами кода занимается именно ядро микроконтроллера, оно раздаёт команды остальным “железкам”, которые в дальнейшем могут работать самостоятельно. Ядро выполняет различные команды, подгоняемое тактовым генератором: на большинстве плат Arduino стоит генератор с частотой 16 МГц. Каждый толчок тактового генератора заставляет вычислительное ядро выполнить следующую команду, таким образом Ардуино выполняет 16 миллионов операций в секунду. Много ли это? Для большинства задач более чем достаточно, главное использовать эту скорость с умом.

Зачем я об этом рассказываю: микроконтроллер может выполнить только одну задачу в один момент времени, так как у него только одно вычислительное ядро, поэтому реальной “многозадачности” нет и быть не может, но за счёт большой скорости выполнения ядро может выполнять задачи по очереди, и для человека это будет казаться многозадачностью, ведь что для нас “раз Миссисипи“, для микроконтроллера – 16 миллионов действий!

Основной парадигмой работы с микроконтроллером является так называемый суперцикл, то есть главный цикл программы, который выполняется сверху вниз (если смотреть на код) и начинает с самого начала, когда доходит до конца, и так далее. В Arduino IDE нашим суперциклом является loop(). В главном цикле мы можем опрашивать датчики, управлять внешними устройствами, выводить данные на дисплеи, производить вычисления и всё такое, но в любом случае эти действия будут происходить друг за другом, последовательно.

Помимо цикла у нас есть прерывания, которые позволяют реализовать некую “поточность” выполнения задач, особенно в тех ситуациях, когда важна скорость работы. Прерывание позволяет остановить выполнение основного цикла в любом его месте, отвлечься на выполнение некоторого блока кода, и после успешного его завершения вернуться к основному циклу и продолжить работу. Некоторые задачи можно решить только на прерываниях, не написав ни одной строчки в цикл loop()! Мы с вами изучали аппаратные прерывания, позволяющие прерваться при замыкании контактов. Такие прерывания являются внешними, то есть их провоцируют внешние факторы (человек нажал на кнопку, сработал датчик, и т.д.). Также у микроконтроллера есть внутренние прерывания, которые вызываются периферией микроконтроллера, и этих прерываний может быть не один десяток!

Одним из таких прерываний является прерывание таймера: по умолчанию Arduino IDE настраивает один из таймеров на счёт реального времени, благодаря этому у нас работают такие функции как millis() и micros(). Именно эти функции являются готовым инструментом для тайм-менеджмента нашего кода.

Многозадачность?

Большинство примеров к различным модулям/датчикам используют задержку delay() в качестве “торможения” программы, например для вывода данных с датчика в последовательный порт. Именно такие примеры портят восприятие новичка, и он тоже начинает использовать задержки. А на задержках далеко не уедешь!

Давайте вспомним конструкцию таймера на millis() из урока о функциях времени: у нас есть переменная, которая хранит время прошлого “срабатывания” таймера. Мы вычитаем это время из текущего времени, эта разница постоянно увеличивается, и по условию мы можем поймать тот момент, когда пройдёт нужное нам время. Будем учиться избавляться от delay()! Начнём с простого: классический blink:

Программа полностью останавливается на команде delay(), ждёт указанное время, а затем продолжает выполнение. Чем это плохо? (А вы ещё спрашиваете?) Во время этой остановки мы ничего не можем делать в цикле loop, например не сможем опрашивать датчик 10 раз в секунду: задержка не позволит коду пойти дальше. Можно использовать прерывания (например – таймера), но о них мы поговорим в продвинутых уроках. Сейчас давайте избавимся от задержки в самом простом скетче.

Первым делом внесём такую оптимизацию: сократим код вдвое и избавимся от одной задержки, используя флаг:

Хитрый ход, запомните его! Такой алгоритм позволяет переключать состояние при каждом вызове. Сейчас наш код всё ещё заторможен задержкой в 1 секунду, давайте от неё избавимся:

Что здесь происходит: цикл loop() выполняется несколько сотен тысяч раз в секунду, как ему и положено, потому что мы убрали задержку. Каждую свою итерацию мы проверяем, не настало ли время переключить светодиод, не прошла ли секунда? При помощи этой конструкции и создаётся нужная многозадачность, которой хватит для 99% всех мыслимых проектов, ведь таких “таймеров” можно создать очень много!

Данный код всё ещё мигает светодиодом раз в секунду, но помимо этого он с разными промежутками времени отправляет сообщения в последовательный порт. Если открыть его, можно увидеть следующий текст:

Это означает, что у нас спокойно работают 4 таймера с разным периодом срабатывания, работают “параллельно”, обеспечивая нам многозадачность: мы можем выводить данные на дисплей раз в секунду, и заодно опрашивать датчик 10 раз в секунду и усреднять его показания. Хороший пример для первого проекта! Давайте соберём простенькие метео-часы.

Как соединить несколько скетчей?

Сила Arduino как конструктора заключается в том, что абсолютно по любой железке вы сможете найти в Гугле подробное описание, библиотеку, схему подключения и пример работы: полностью готовый набор для интеграции в свой проект! Вернёмся к нашим метео-часам и попробуем “собрать” такой проект из скетчей-примеров, ведь именно для этого примеры и нужны! Нам понадобится:

  • Arduino NANO
  • Дисплей. Пусть будет LCD1602 с переходником на i2c
  • Модуль реального времени, возьмём DS3231
  • Термометр ds18b20

Начинаем гуглить информацию по подключению и примеру для каждой железки:

Из уроков из Гугла мы узнаём такую важную информацию, как схемы подключения: дисплей и часы подключаются к шине i2c, а датчик ds18b20 можно подключить в любой другой пин. Схема нашего проекта:

Качаем библиотеки для наших модулей и устанавливаем. Библиотеку дисплея нам дают прямо в статье: https://iarduino.ru/file/134.html, библиотеку для часов по своему опыту советую RTClib (та, что в статье – не очень удобная). В статье про датчик температуры нам рассказали про библиотеку DallasTemperature.h, ссылку – не дали. Ну чтож, поищем сами “DallasTemperature.h”, найдём по первой ссылке. Для неё нужна ещё библиотека OneWire, ссылку на неё дали в статье про термометр. Итого у нас должны быть установлены 4 библиотеки.

Сейчас наша цель – найти рабочие примеры для каждой железки, убедиться в их работоспособности и выделить для себя минимальный набор кода для управления модулем, это бывает непросто – в статьях бывают ошибки и просто нерабочий код: эти статьи чаще всего являются копипастой от людей, далёких от темы. Я взял пример работы с дисплеем из статьи, а вот часы и термометр пришлось смотреть в примерах библиотеки. Немного причешем примеры, оставим только нужные нам функции получения значений или вывода, я оставил всё что мне нужно в setup():

Вот и закончился базовый курс уроков программирования Arduino. Мы с вами изучили самые базовые понятия, вспомнили (или изучили) часть школьной программы по информатике, изучили большую часть синтаксиса и инструментов языка C++, и вроде бы весь набор Ардуино-функций, который предлагает нам платформа. Подчеркну – мы изучили C++ и функции Ардуино, потому что никакого “языка Arduino” нет, это ложное понятие. Arduino программируется на C или ассемблере, а платформа предоставляет нам всего лишь несколько десятков удобных функций для работы с микроконтроллером, именно функций, а не язык. Теперь перед нами чистый лист блокнота Arduino IDE и желание творить и программировать, давайте попробуем!

Структура программы

Прежде, чем переходить к реальным задачам, нужно поговорить о некоторых фундаментальных вещах. Микроконтроллер, как мы обсуждали в самом начале пути, это комплексное устройство, состоящее из вычислительного ядра, постоянной и оперативной памяти и различных периферийных устройств (таймеры/счётчики, АЦП и проч. ). Обработкой нашего с вами кода занимается именно ядро микроконтроллера, оно раздаёт команды остальным “железкам”, которые в дальнейшем могут работать самостоятельно. Ядро выполняет различные команды, подгоняемое тактовым генератором: на большинстве плат Arduino стоит генератор с частотой 16 МГц. Каждый толчок тактового генератора заставляет вычислительное ядро выполнить следующую команду, таким образом Ардуино выполняет 16 миллионов операций в секунду. Много ли это? Для большинства задач более чем достаточно, главное использовать эту скорость с умом.

Зачем я об этом рассказываю: микроконтроллер может выполнить только одну задачу в один момент времени, так как у него только одно вычислительное ядро, поэтому реальной “многозадачности” нет и быть не может, но за счёт большой скорости выполнения ядро может выполнять задачи по очереди, и для человека это будет казаться многозадачностью, ведь что для нас “раз Миссисипи“, для микроконтроллера – 16 миллионов действий!

Основной парадигмой работы с микроконтроллером является так называемый суперцикл, то есть главный цикл программы, который выполняется сверху вниз (если смотреть на код) и начинает с самого начала, когда доходит до конца, и так далее. В Arduino IDE нашим суперциклом является loop(). В главном цикле мы можем опрашивать датчики, управлять внешними устройствами, выводить данные на дисплеи, производить вычисления и всё такое, но в любом случае эти действия будут происходить друг за другом, последовательно.

Помимо цикла у нас есть прерывания, которые позволяют реализовать некую “поточность” выполнения задач, особенно в тех ситуациях, когда важна скорость работы. Прерывание позволяет остановить выполнение основного цикла в любом его месте, отвлечься на выполнение некоторого блока кода, и после успешного его завершения вернуться к основному циклу и продолжить работу. Некоторые задачи можно решить только на прерываниях, не написав ни одной строчки в цикл loop()! Мы с вами изучали аппаратные прерывания, позволяющие прерваться при замыкании контактов. Такие прерывания являются внешними, то есть их провоцируют внешние факторы (человек нажал на кнопку, сработал датчик, и т. д.). Также у микроконтроллера есть внутренние прерывания, которые вызываются периферией микроконтроллера, и этих прерываний может быть не один десяток!

Одним из таких прерываний является прерывание таймера: по умолчанию Arduino IDE настраивает один из таймеров на счёт реального времени, благодаря этому у нас работают такие функции как millis() и micros(). Именно эти функции являются готовым инструментом для тайм-менеджмента нашего кода.

Многозадачность?

Большинство примеров к различным модулям/датчикам используют задержку delay() в качестве “торможения” программы, например для вывода данных с датчика в последовательный порт. Именно такие примеры портят восприятие новичка, и он тоже начинает использовать задержки. А на задержках далеко не уедешь!

Давайте вспомним конструкцию таймера на millis() из урока о функциях времени: у нас есть переменная, которая хранит время прошлого “срабатывания” таймера. Мы вычитаем это время из текущего времени, эта разница постоянно увеличивается, и по условию мы можем поймать тот момент, когда пройдёт нужное нам время. Будем учиться избавляться от delay()! Начнём с простого: классический blink:

Программа полностью останавливается на команде delay(), ждёт указанное время, а затем продолжает выполнение. Чем это плохо? (А вы ещё спрашиваете?) Во время этой остановки мы ничего не можем делать в цикле loop, например не сможем опрашивать датчик 10 раз в секунду: задержка не позволит коду пойти дальше. Можно использовать прерывания (например – таймера), но о них мы поговорим в продвинутых уроках. Сейчас давайте избавимся от задержки в самом простом скетче.

Первым делом внесём такую оптимизацию: сократим код вдвое и избавимся от одной задержки, используя флаг:

Хитрый ход, запомните его! Такой алгоритм позволяет переключать состояние при каждом вызове. Сейчас наш код всё ещё заторможен задержкой в 1 секунду, давайте от неё избавимся:

Что здесь происходит: цикл loop() выполняется несколько сотен тысяч раз в секунду, как ему и положено, потому что мы убрали задержку. Каждую свою итерацию мы проверяем, не настало ли время переключить светодиод, не прошла ли секунда? При помощи этой конструкции и создаётся нужная многозадачность, которой хватит для 99% всех мыслимых проектов, ведь таких “таймеров” можно создать очень много!

Данный код всё ещё мигает светодиодом раз в секунду, но помимо этого он с разными промежутками времени отправляет сообщения в последовательный порт. Если открыть его, можно увидеть следующий текст:

Это означает, что у нас спокойно работают 4 таймера с разным периодом срабатывания, работают “параллельно”, обеспечивая нам многозадачность: мы можем выводить данные на дисплей раз в секунду, и заодно опрашивать датчик 10 раз в секунду и усреднять его показания. Хороший пример для первого проекта! Давайте соберём простенькие метео-часы.

Как соединить несколько скетчей?

Сила Arduino как конструктора заключается в том, что абсолютно по любой железке вы сможете найти в Гугле подробное описание, библиотеку, схему подключения и пример работы: полностью готовый набор для интеграции в свой проект! Вернёмся к нашим метео-часам и попробуем “собрать” такой проект из скетчей-примеров, ведь именно для этого примеры и нужны! Нам понадобится:

  • Arduino NANO
  • Дисплей. Пусть будет LCD1602 с переходником на i2c
  • Модуль реального времени, возьмём DS3231
  • Термометр ds18b20

Начинаем гуглить информацию по подключению и примеру для каждой железки:

Из уроков из Гугла мы узнаём такую важную информацию, как схемы подключения: дисплей и часы подключаются к шине i2c, а датчик ds18b20 можно подключить в любой другой пин. Схема нашего проекта:

Качаем библиотеки для наших модулей и устанавливаем. Библиотеку дисплея нам дают прямо в статье: https://iarduino.ru/file/134.html, библиотеку для часов по своему опыту советую RTClib (та, что в статье – не очень удобная). В статье про датчик температуры нам рассказали про библиотеку DallasTemperature.h, ссылку – не дали. Ну чтож, поищем сами “DallasTemperature.h”, найдём по первой ссылке. Для неё нужна ещё библиотека OneWire, ссылку на неё дали в статье про термометр. Итого у нас должны быть установлены 4 библиотеки.

Сейчас наша цель – найти рабочие примеры для каждой железки, убедиться в их работоспособности и выделить для себя минимальный набор кода для управления модулем, это бывает непросто – в статьях бывают ошибки и просто нерабочий код: эти статьи чаще всего являются копипастой от людей, далёких от темы. Я взял пример работы с дисплеем из статьи, а вот часы и термометр пришлось смотреть в примерах библиотеки. Немного причешем примеры, оставим только нужные нам функции получения значений или вывода, я оставил всё что мне нужно в setup():

На сегодняшний день Ардуино является одним из самых простых способов освоить микроконтроллеры: благодаря простому интерфейсу, простоте (можно сказать даже примитивности) «языка Ардуино» программирование микроконтроллеров становится доступно даже школьникам. Однако всегда находятся энтузиасты старающиеся улучшить даже то, что и так кажется простым. В данном случае речь идет о «визуальном программировании», т.е. графических средах позволяющих не писать программы, а рисовать их.
Итак встречаем: Scratch, ArduBloсk и FLProg — три попытки сделать так, чтобы программирование стало доступно даже дошкольникам 🙂

Scratch
Страница проекта — s4a.cat/
В 2003 году группа исследователей под руководством Митчела Резника из MIT Media Lab решила сделать общедоступный язык программирования. В результате через 4 года появился Scratch — «среда для обучения школьников программированию».
В этой среде можно создавать и играть с различными объектами, видоизменять их вид, перемещать их по экрану, устанавливать формы взаимодействия между ними. Это объектно-ориентированная среда, в основе которой лежит принцип конструктора LEGO и в которой программы собираются из разноцветных блоков-кирпичиков команд точно так же, как собираются из разноцветных кирпичиков конструкторы Лего.
Среда русифицирована, для нее есть много инструкций и руководств на русском языке. Проекты, создаваемые в Scratch, выкладываются на сайте проекта scratch.mit.edu/, все они доступны для скачивания и использования. Среда доступна для работы ребенка с раннего возраста, немного умеющего читать и пользоваться мышью.
Основа среды – блоки команд, разделенные на несколько групп: движение, внешность, звук, перо, контроль, сенсоры, операторы, переменные. Встроенная «рисовалка» позволяет нарисовать нужный объект, а блоки команд (их нужно перетаскивать мышью) – задать программу действий, в том числе с применением условных операторов и циклов. Конечно, у Scratch отсутствует масса функций реального языка программирования, но и имеющихся достаточно для создания довольно сложных программ и игр. В самой программе имеется довольно большая база уже готовых нарисованных животных, домов, предметов и так далее, а кроме того, в качестве образца можно использовать любой из тысяч опубликованных в сети интернет программ примеров, сделанных взрослыми и детьми.
В 2008 году появился проект Scratch для Arduino (в оригинале: Scratch For Arduino или сокращённо — S4A) — это модификация Scratch, которая предоставляет возможность простого визуального программирования контроллера Arduino, а так же содержит новые блоки для управления датчиками и исполнительными механизмами, подключаемыми к Arduino.
S4A представляет собой скетч прошивки s4a.cat/downloads/S4AFirmware15.ino, которая загружается в Ардуино, делает его исполнительным устройством, программа выполняется на компьютере, Ардуино её физически выполняет, передавая сигналы на выходы платы. Ардуино в этом случае через Serial-соединение получает от Скретча команды какие порты в какой уровень установить и передает на ПК измеренные уровни с входов.
Более подробно можно узнать либо на странице проекта, либо посмотрев видео от Амперки — www.youtube.com/playlist?…OzZQGDFdoRfldtqbmNU6a-PIp

ArduBloсk
Страница проекта -blog.ardublock.com/
Имен разработчиков и их локализации мне найти не удалось, но данный проект активно продвигается разработчиком плат sparkfun, поэтому ИМХО это их проект.
Ardublock это графический язык программирования для Arduino, предназначенный для непрограммистов и простой в использовании. В отличии от Скретча ArduBloсk встраивается в среду Arduino IDE и генерит программый скетч, загружаемый в МК. Причем, после закачки в платформу, исполнение кода будет происходить автономно, т.е. не требуется непосредственное управление с компьютера по проводной или беспроводной связи.
Среди руссоязычного сообщества проект известен благодаря учителю-энтузиасту из Лабинска Александру Сергеевичу Аликину — geektimes.ru/post/258834/

FLProg
Страница проекта — flprog.ru/
Проект развивается силами одного человека — Сергея Глушенко. Основная идея заключается в том, чтобы адаптировать применяющиеся в области программирования промышленных контроллеров языки FBD и LAD к Ардуино.

FBD (Function Block Diagram) — графический язык программирования стандарта МЭК 61131-3. Программа образуется из списка цепей, выполняемых последовательно сверху вниз. При программировании используются наборы библиотечных блоков. Блок (элемент) — это подпрограмма, функция или функциональный блок (И, ИЛИ, НЕ, триггеры, таймеры, счётчики, блоки обработки аналогового сигнала, математические операции и др.). Каждая отдельная цепь представляет собой выражение, составленное графически из отдельных элементов. К выходу блока подключается следующий блок, образуя цепь. Внутри цепи блоки выполняются строго в порядке их соединения. Результат вычисления цепи записывается во внутреннюю переменную либо подается на выход контроллера.

Ladder Diagram (LD, LAD, РКС) — язык релейной (лестничной) логики. Синтаксис языка удобен для замены логических схем, выполненных на релейной технике. Ориентирован на инженеров по автоматизации, работающих на промышленных предприятиях. Обеспечивает наглядный интерфейс логики работы контроллера, облегчающий не только задачи собственно программирования и ввода в эксплуатацию, но и быстрый поиск неполадок в подключаемом к контроллеру оборудовании. Программа на языке релейной логики имеет наглядный и интуитивно понятный инженерам-электрикам графический интерфейс, представляющий логические операции, как электрическую цепь с замкнутыми и разомкнутыми контактами. Протекание или отсутствие тока в этой цепи соответствует результату логической операции (истина — если ток течет; ложь — если ток не течет). Основными элементами языка являются контакты, которые можно образно уподобить паре контактов реле или кнопки. Пара контактов отождествляется с логической переменной, а состояние этой пары — со значением переменной. Различаются нормально замкнутые и нормально разомкнутые контактные элементы, которые можно сопоставить с нормально замкнутыми и нормально разомкнутыми кнопками в электрических цепях.
Результатом работы FLProg является конечный код, который может быть подгружен в МК.

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

Как писать скетчи для ардуино

Вот и закончился базовый курс уроков программирования Arduino. Мы с вами изучили самые базовые понятия, вспомнили (или изучили) часть школьной программы по информатике, изучили большую часть синтаксиса и инструментов языка C++, и вроде бы весь набор Ардуино-функций, который предлагает нам платформа. Подчеркну – мы изучили C++ и функции Ардуино, потому что никакого “языка Arduino” нет, это ложное понятие. Arduino программируется на C или ассемблере, а платформа предоставляет нам всего лишь несколько десятков удобных функций для работы с микроконтроллером, именно функций, а не язык. Теперь перед нами чистый лист блокнота Arduino IDE и желание творить и программировать, давайте попробуем!

Структура программы

Прежде, чем переходить к реальным задачам, нужно поговорить о некоторых фундаментальных вещах. Микроконтроллер, как мы обсуждали в самом начале пути, это комплексное устройство, состоящее из вычислительного ядра, постоянной и оперативной памяти и различных периферийных устройств (таймеры/счётчики, АЦП и проч.). Обработкой нашего с вами кода занимается именно ядро микроконтроллера, оно раздаёт команды остальным “железкам”, которые в дальнейшем могут работать самостоятельно. Ядро выполняет различные команды, подгоняемое тактовым генератором: на большинстве плат Arduino стоит генератор с частотой 16 МГц. Каждый толчок тактового генератора заставляет вычислительное ядро выполнить следующую команду, таким образом Ардуино выполняет 16 миллионов операций в секунду. Много ли это? Для большинства задач более чем достаточно, главное использовать эту скорость с умом.

Зачем я об этом рассказываю: микроконтроллер может выполнить только одну задачу в один момент времени, так как у него только одно вычислительное ядро, поэтому реальной “многозадачности” нет и быть не может, но за счёт большой скорости выполнения ядро может выполнять задачи по очереди, и для человека это будет казаться многозадачностью, ведь что для нас “раз Миссисипи“, для микроконтроллера – 16 миллионов действий!

Основной парадигмой работы с микроконтроллером является так называемый суперцикл, то есть главный цикл программы, который выполняется сверху вниз (если смотреть на код) и начинает с самого начала, когда доходит до конца, и так далее. В Arduino IDE нашим суперциклом является loop(). В главном цикле мы можем опрашивать датчики, управлять внешними устройствами, выводить данные на дисплеи, производить вычисления и всё такое, но в любом случае эти действия будут происходить друг за другом, последовательно.

Помимо цикла у нас есть прерывания, которые позволяют реализовать некую “поточность” выполнения задач, особенно в тех ситуациях, когда важна скорость работы. Прерывание позволяет остановить выполнение основного цикла в любом его месте, отвлечься на выполнение некоторого блока кода, и после успешного его завершения вернуться к основному циклу и продолжить работу. Некоторые задачи можно решить только на прерываниях, не написав ни одной строчки в цикл loop()! Мы с вами изучали аппаратные прерывания, позволяющие прерваться при замыкании контактов. Такие прерывания являются внешними, то есть их провоцируют внешние факторы (человек нажал на кнопку, сработал датчик, и т.д.). Также у микроконтроллера есть внутренние прерывания, которые вызываются периферией микроконтроллера, и этих прерываний может быть не один десяток!

Одним из таких прерываний является прерывание таймера: по умолчанию Arduino IDE настраивает один из таймеров на счёт реального времени, благодаря этому у нас работают такие функции как millis() и micros(). Именно эти функции являются готовым инструментом для тайм-менеджмента нашего кода.

Многозадачность?

Большинство примеров к различным модулям/датчикам используют задержку delay() в качестве “торможения” программы, например для вывода данных с датчика в последовательный порт. Именно такие примеры портят восприятие новичка, и он тоже начинает использовать задержки. А на задержках далеко не уедешь!

Давайте вспомним конструкцию таймера на millis() из урока о функциях времени: у нас есть переменная, которая хранит время прошлого “срабатывания” таймера. Мы вычитаем это время из текущего времени, эта разница постоянно увеличивается, и по условию мы можем поймать тот момент, когда пройдёт нужное нам время. Будем учиться избавляться от delay()! Начнём с простого: классический blink:

Программа полностью останавливается на команде delay(), ждёт указанное время, а затем продолжает выполнение. Чем это плохо? (А вы ещё спрашиваете?) Во время этой остановки мы ничего не можем делать в цикле loop, например не сможем опрашивать датчик 10 раз в секунду: задержка не позволит коду пойти дальше. Можно использовать прерывания (например – таймера), но о них мы поговорим в продвинутых уроках. Сейчас давайте избавимся от задержки в самом простом скетче.

Первым делом внесём такую оптимизацию: сократим код вдвое и избавимся от одной задержки, используя флаг:

Хитрый ход, запомните его! Такой алгоритм позволяет переключать состояние при каждом вызове. Сейчас наш код всё ещё заторможен задержкой в 1 секунду, давайте от неё избавимся:

Что здесь происходит: цикл loop() выполняется несколько сотен тысяч раз в секунду, как ему и положено, потому что мы убрали задержку. Каждую свою итерацию мы проверяем, не настало ли время переключить светодиод, не прошла ли секунда? При помощи этой конструкции и создаётся нужная многозадачность, которой хватит для 99% всех мыслимых проектов, ведь таких “таймеров” можно создать очень много!

Данный код всё ещё мигает светодиодом раз в секунду, но помимо этого он с разными промежутками времени отправляет сообщения в последовательный порт. Если открыть его, можно увидеть следующий текст:

Это означает, что у нас спокойно работают 4 таймера с разным периодом срабатывания, работают “параллельно”, обеспечивая нам многозадачность: мы можем выводить данные на дисплей раз в секунду, и заодно опрашивать датчик 10 раз в секунду и усреднять его показания. Хороший пример для первого проекта! Давайте соберём простенькие метео-часы.

Как соединить несколько скетчей?

Сила Arduino как конструктора заключается в том, что абсолютно по любой железке вы сможете найти в Гугле подробное описание, библиотеку, схему подключения и пример работы: полностью готовый набор для интеграции в свой проект! Вернёмся к нашим метео-часам и попробуем “собрать” такой проект из скетчей-примеров, ведь именно для этого примеры и нужны! Нам понадобится:

  • Arduino NANO
  • Дисплей. Пусть будет LCD1602 с переходником на i2c
  • Модуль реального времени, возьмём DS3231
  • Термометр ds18b20

Начинаем гуглить информацию по подключению и примеру для каждой железки:

Из уроков из Гугла мы узнаём такую важную информацию, как схемы подключения: дисплей и часы подключаются к шине i2c, а датчик ds18b20 можно подключить в любой другой пин. Схема нашего проекта:

Качаем библиотеки для наших модулей и устанавливаем. Библиотеку дисплея нам дают прямо в статье: https://iarduino.ru/file/134.html, библиотеку для часов по своему опыту советую RTClib (та, что в статье – не очень удобная). В статье про датчик температуры нам рассказали про библиотеку DallasTemperature.h, ссылку – не дали. Ну чтож, поищем сами “DallasTemperature.h”, найдём по первой ссылке. Для неё нужна ещё библиотека OneWire, ссылку на неё дали в статье про термометр. Итого у нас должны быть установлены 4 библиотеки.

Сейчас наша цель – найти рабочие примеры для каждой железки, убедиться в их работоспособности и выделить для себя минимальный набор кода для управления модулем, это бывает непросто – в статьях бывают ошибки и просто нерабочий код: эти статьи чаще всего являются копипастой от людей, далёких от темы. Я взял пример работы с дисплеем из статьи, а вот часы и термометр пришлось смотреть в примерах библиотеки. Немного причешем примеры, оставим только нужные нам функции получения значений или вывода, я оставил всё что мне нужно в setup():

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

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

Что такое Arduino и для чего оно нужно?

Arduino — это электронный конструктор, который позволяет любому человеку создавать разнообразные электро-механические устройства. Ардуино состоит из программной и аппаратной части. Программная часть включает в себя среду разработки (программа для написания и отладки прошивок), множество готовых и удобных библиотек, упрощенный язык программирования. Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!

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

проекты на Arduino

Стартовый набор Arduino

Для того что бы начать изучать Arduino необходимо обзавестись самой платой микроконтроллера и дополнительными деталями. Лучше всего приобрести стартовый набор Ардуино, но можно и самостоятельно подобрать все необходимое. Я советую выбрать набор, потому что это проще и зачастую дешевле. Вот ссылки на лучшие наборы и на отдельные детали, которые обязательно пригодятся вам для изучения:

Базовый набор ардуино для начинающих: Купить
Большой набор для обучения и первых проектов: Купить
Набор дополнительных датчиков и модулей: Купить
Ардуино Уно самая базовая и удобная модель из линейки: Купить
Беспаечная макетная плата для удобного обучения и прототипирования: Купить
Набор проводов с удобными коннекторами: Купить
Комплект светодиодов: Купить
Комплект резисторов: Купить
Кнопки: Купить
Потенциометры: Купить

Среда разработки Arduino IDE

Для написания, отладки и загрузки прошивок необходимо скачать и установить Arduino IDE. Это очень простая и удобная программа. На моем сайте я уже описывал процесс загрузки, установки и настройки среды разработки. Поэтому здесь я просто оставлю ссылки на последнюю версию программы и на статью с подробной инструкцией.

Версия Windows Mac OS X Linux
1.8.2

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства. Обычно в этой функции декларируют режимы пинов, открывают необходимые протоколы связи, устанавливают соединения с дополнительными модулями и настраивают подключенные библиотеки. Если для вашей прошивки ничего подобного делать не нужно, то функция все равно должна быть объявлена. Вот стандартный пример функции setup():

Вы задумывались облегчить себе жизнь в быту? Чтобы были вещи, которые решали бы за вас повседневные, рутинные задачи. Умное устройство, которое бы осуществляло полезную функцию, например поливало огород, убирало комнату, переносило груз. Эти задачи может решать электронная плата Arduino . Но просто купить её будет недостаточно. Любому промышленному логическому контроллеру или микросхеме нужен “мозг”, чтобы выполнять определённую последовательность действий. Для свершений операций в нашем случае подойдёт язык программирования ардуино.

Из этой статьи вы узнаете:

Приветствую вас, друзья! Для тех, кто меня не знает — меня зовут Гридин Семён. Вы можете прочитать обо мне здесь . Сегодняшняя статья будет посвящена двум основным программам, без которых не будет у нас дальнейшего движения и взаимопонимания.

Общее описание языков программирования

Как я и писал выше, рассматривать мы с вами будем две популярные среды разработки. По аналогии с CoDeSyS 2.3 , можно разделить на графический редактор и “умный блокнот”. Это программы Arduino IDE и FLprog.

Основой среды разработки является Processing/Wiring — это обычный C++, дополненный функциями и различными библиотеками. Существует несколько версий для операционных систем windows, Mac OS и Linux.

В чём их принципиальное различие?? Arduino IDE — это среда разработки, в которой описывается код программы. А FLprog похож на CFC CoDeSyS, позволяющий рисовать диаграммы. Какая среда лучше? Обе хороши и удобны по своему, но если хотите заниматься контроллерами серьёзно, лучше всего изучить языки, похожие на СИ. Их главный плюс в гибкости и неограниченности алгоритма. Мне очень нравится Arduino IDE.

Описание Arduino IDE

Дистрибутив можно скачать на официальном сайте . Скачиваем архив, он занимает чуть более 100 мб. Установка стандартная, как и все приложения для Windows. Драйвера для всех типов плат должны быть установлены в пакете. И вот каким образом выглядит рабочее окно программы.

Среда разработки Arduino состоит из:

  • редактора программного кода;
  • области сообщений;
  • окна вывода текста;
  • панели инструментов с кнопками часто используемых команд;
  • нескольких меню

Настройки Arduino IDE

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

Дополнительная функциональность может быть добавлена с помощью библиотек, представляющих собой оформленный специальным образом код. В основном он находится в закрытом от разработчика доступе. Среда обычно поставляется со стандартным набором, который можно постепенно пополнять. Они находятся в подкаталоге libraries каталога Arduino.

Многие библиотеки снабжаются примерами, расположенными в папке example. Выбор библиотеки в меню приведет к добавлению в исходный код строчки:

Это директива — некая инструкция, заголовочный файл с описанием объектов, функций, и констант библиотеки. Многие функции уже разработаны для большинства типовых задач. Поверьте, это облегчает жизнь программисту.

После того как мы подключили электронную плату к компьютеру. Мы осуществляем следующие настройки — выбираем плату Arduino и Com-порт по которому будем соединяться.

Далее пишем простенькую программу для мигания 13-ого светодиода на плате. (есть в примерах example ) и загружаем в контроллер.

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

Есть ещё одна удобная вещь. Называется она Монитор последовательного порта ( Serial Monitor ). Отображает данные, посылаемые в платформу Arduino. Я обычно смотрю, какие сигналы выдают мне различные датчики, подключённые к плате.

Подключение библиотек

Существуют разные способы для добавления пользовательских функции. Подключить библиотеки можно тремя способами:

  1. С помощью Library Manager
  2. С помощью импорта в виде файла .zip
  3. Установка вручную.

1. С помощью Library Manager. В рабочем окне программы выбираем вкладку Скетч . После этого нажимаем на кнопку Подключить библиотеку . Перед нами откроется менеджер библиотек. В окне будут отображаться уже установленные файлы с подписью installed, и те, которые можно установить.

2.С помощью импорта в виде файла .zip. Часто в просторах интернета можно встретить запакованные в архивы файлы библиотек с расширением zip. В нём содержится заголовочный файл .h и файл кода .cpp. При установке не нужно распаковывать архив. Достаточно в меню Скетч — Подключить библиотеку — Add .ZIP library

3.Установка вручную. Сначала закрываем программу Arduino IDE. Наш архив мы сначала распаковываем. И файлы с расширением .h и .cpp переносим в папку с тем же названием, как и архив. Закидываем папку в корневой каталог.

Описание FLPprog

FLprog — это бесплатный проект независимых разработчиков, позволяющий работать с функциональными блоками, либо с релейными диаграммами. Эта среда удобна для людей — не программистов. Она позволяет визуально и наглядно видеть алгоритм при помощи диаграмм и функциональных блоков. Скачать дистрибутив можно на официальном сайте .

Я наблюдаю за проектом достаточно давно. Ребята развиваются, постоянно добавляют новый функционал и изменяют старый. Я вижу в этой среде перспективы. Так как она выполняет две важные функции: простоту и удобство использования .

Попробуем с вами создать простенький проект. Будем переключать 13 выход на светодиод.

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

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

После создания алгоритма, кликнем на кнопочку компилировать , программа даёт готовый скетч на IDE.

Мы с вами рассмотрели возможности и удобства программ для разработки алгоритмов на контроллере серии Arduino. Есть ещё программы, которые позволяют создавать структурные диаграммы и визуальные картинки. Но я рекомендую использовать текстовый редактор, потому что потом вам будет проще. Скажите, а какая среда вам удобнее всего и почему??

22 сентября я участвовал в Краснодаре на семинаре “Сенсорные панельные контроллеры ОВЕН СПК”. Проводили конференцию в фешенебельном и красивом отеле “Бристоль”. Было очень интересно и круто.

В первой части семинара нам рассказывали о возможностях и преимуществах продукции компании ОВЕН. После был кофе-брейк с пончиками. Я понабрал кучу всего, и пончиков, и печенья, и конфет, так как был очень голодным.=)

Во второй части семинара после обеда нам презентовали среду разработки CoDeSyS 3.5. Много чего рассказали про Web — визуализацию. Эта тенденция начинает набирать обороты. Ну конечно, управлять оборудованием через любой интернет — браузер. Это реально круто. Вот кстати говоря само оборудование в чемоданчике.

Я в ближайшем будущем опубликую серию статей по CoDeSyS 3.5. Так что, если кому интересно подписывайтесь или просто заходите в гости. Буду всегда рад.

Кстати чуть не забыл, следующая статья будет о подключении шагового двигателя к электронной плате Arduino. Будет интересно, не пропустите.

Arduino: один скетч под несколько платформ

Мир DIY на основе экосистемы Arduino цветет и пахнет. Количество плат, совместимых с Arduino становится все больше и больше. Какие-то платы полностью совместимы с Atmel AVR, какие-то имеют существенные отличия. Да и среди микроконтроллеров AVR могут быть значительные несоответствия, которые необходимо учитывать, если требуется написать скетч или библиотеку, которые должны без проблем работать на разных аппаратных платформах.

Различия между микроконтроллерами и платформами обычно заключается в следующих моментах (список далеко не полный):

  • Конкретные пины у разных микроконтроллеров могут иметь различные функции. К примеру, на одном микроконтроллере пин за номером 1 умеет делать PWM, а на микроконтроллере другого типа нет.
  • Могут различаться разрядности АЦП (используем для analogRead) и ЦАП (используем для analogWrite, т.е. для ШИМ). На одном микроконтроллере разрядность 8бит (изменение от 0 и до 254), на другом 10бит (измерение от 0 и до 1023), а на третьем 12бит.
  • Могут кардинально различаться даже способы указания пинов. Так, для Atmel AVR применяется просто числовое указание пинов 1, 2, 3 и т.п. А для экосистемы ESP используется наименование пинов D1, D2, D3 и т.п.

Если вы разрабатываете библиотеку или же скетч, которые должны нормально использоваться на разных платформах или же с разными микроконтроллерами, то имеет смысл данную возможность заложить, благо ее реализация вполне может быть осуществлена через так называемые макросы препроцессора компилятора.

По сути, макрос — это текстовой кусочек исходного кода, который перед компиляцией заменяется на свое значение. Иногда подобная замена может быть условной, что позволяет существенно изменять код программы при компиляции при разных условиях. В среде Arduino используется С++, язык очень мощный, позволяющий программисту сделать все и даже немного больше. Развивается С++ с 1983 года и с тех пор разработчики навертели в языке кучу предопределенных макросов, ознакомиться с которыми будет как минимум полезно.

При компиляции скетча или библиотеки Arduino IDE передает компилятору параметр mmcu=architecture или mmcu=MCU type. В данном параметре указывается конкретный микроконтроллер, под который идет компиляция или же определяется архитектура. Например, при компиляции под Atmega328p передается параметр mmcu=atmega328p. Далее компилятор, а для компиляции под AVR используется AVR Libc от Atmel создаются собственные макросы.

Во-первых, определяются два макроса __AVR и __AVR__ которые означают, что программа скомпилирована под платформу AVR. Во-вторых, определяется макрос обозначающий архитектуру, это может быть __AVR_ARCH__=1 или __AVR_MEGA__[5] и т.п. И в-третьих, определяется макрос обозначающий конкретный тип микропроцессора, например, __AVR_ATmega328P__. Подробнее об определяемых макросах компилятора при работе с AVR можно посмотреть в документации на AVR Libc.

Если разбираться дальше и погрузиться в дебри экосистемы ESP от Espressif под Arduino, то тут все немного путанее. Найти в документации по ESP для Arduino и в документации ESP для IDF описание макросов мне не удалось. Но есть лайфхак, даже два.

Итак, чтобы понять какие макросы передаются при компиляции конкретной платы, необходимо включить полный вывод при компиляции (осуществляется в настройках Arduino IDE), откомпилировать скетч под нужную плату и посмотреть параметры D, передаваемые компилятору. Это и будут искомые макросы. Например, при компиляции для Lolin D1 R2 & Mini Arduino IDE определяет следующие макросы:

  • DESP8266
  • DARDUINO_ESP8266_WEMOS_D1MINI
  • DARDUINO_ARCH_ESP8266
  • D__ets__

Соответственно можно по этим передаваемым макросам определить какая плата и какая архитектура вообще используется. Например, для определения архитектуры ESP можно использовать макрос __ets__, а для определения конкретного чипа ESP8266. Тут следует учесть, что для компиляции под ESP используется отличный от ARV компилятор.

Второй способ определения подходящего макроса по параметру, передаваемого компилятору — использовать информацию из boards.txt. У стандартных плат Arduino boards.txt лежит в директориях папки hardware вместе с установленным Arduino IDE. Например, под Windows это примерно тут C:\Program Files (x86)\Arduino\hardware\arduino\avr. Для архитектуры ESP файл с описанием плат располагается в AppData конкретного пользователя. В моем случае это тут C:\Users\vkrav\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\. Третьим же местом, где может располагаться файл boards.txt является папка для скетчей по умолчанию.

Итак, в файле boards.txt смотрим на предикаты build у конкретной платы. А для более точного понимания, что же именно и куда передается можно подсмотреть в файлике platform.txt, который располагается там же, где и boards.txt.

Проверка на примере

В приведенном ниже примере я проверю является ли плата, под которую компилируется скетч Atmega328p и если нет, то я использую определения под архитектуру ESP.

#ifdef __AVR_ATmega328P__
#define OK_1 15 // OK output for channel 1
#define OK_2 14 // OK output for channel 2
#define Button_1 2 // Button for channel 1
#define Button_2 3 // Button for channel 2
#define LED_1 7 // LED indicator for channel 1
#define LED_2 8 // LED indicator for channel 2
#define CompiledFor "ATmega328P 8Mhz, single chip"
#else
// Pins setup WeMos D1 Mini, Mini Pro, Mini Lite, Ai-Thinker
#define OK_1 D3 // OK output for channel 1
#define OK_2 D7 // OK output for channel 2
#define Button_1 D2 // Button for channel 1
#define Button_2 D5 // Button for channel 2
#define LED_1 BUILTIN_LED // LED indicator for channel 1
#define LED_2 D8 // LED indicator for channel 2
#define CompiledFor "ESP8266 chip"
#endif

В примере я использовал структуру из #ifdef, #else и #endif. Если при компиляции определяется, что программируется под плату Atmega328p, то используются пины 15, 14, 2, 3, 7, 8, а также создается текстовая константа, которая затем выводится в последовательный порт. Если же такой чип не обнаружен, то считается, есть идет компиляция под ESP и используются соответствующие пины D3, D7, D2, D5, D13, D8.


Опубликовано автором kvv в следующих категориях:
DIY Soft статья

Поделиться ссылкой:

Arduino IDE: разбираемся с меню Tools и некоторыми другими функциями.

Итальянцы молодцы. Запустили в мир DIY настоящего монстра. С появлением экосистемы Arduino весь рынок цифрового DIY получил мощнейший толчок. Тысячи, сотни тысяч, миллионы пользователей принялись покупать оригинальные и совместимые платы для их последующего программирования и использования в своих поделках. Причина такой популярности в первую очередь связывают с низким порогом для входа в эту среду. Вам не нужно тратить много денег на приобретение плат: открытый стандарт дал дорогу на рынок множеству последователей и копировщиков. Вам так же не стоит сильно заморачиваться над программированием: поставляемая «в комплекте» Arduino IDE упрощена настолько, насколько это возможно. Пользователь просто пишет код и не задумывается о настройках компилятора, о том, что программировать при помощи Arduino IDE можно разными программаторами, а иногда и вообще голые микросхемы.

И вот, наступает момент, когда стандартная Arduino IDE становится тесновата, а ее неудобство начинает просто выбешивать, особенно, если пользователь знаком с более продвинутыми средами разработки по другим платформам и языкам программирования. Кто-то начинает мигрировать на что-то более интересное, например, на Atom или VS.Code в смеси с PlatformIO, а кто-то старается выжать из Arduino IDE все, что только можно.

Сегодня я выступлю как раз в роли подобного «особо интересующегося персонажа» и попробую вместе с читателем разобраться чуть-чуть побольше в тонкостях Arduino IDE. Все ниженаписанное более-менее соответствует версии 1.8.9 Arduino IDE.

Темная тема для Arduino IDE

Очень многих раздражает простенькое оформление Arduino IDE в корпоративных цветах Arduino. Все такое белое и «слепое». Долго работать в таком цветовом решении не всегда комфортно, особенно если это ночь, вокруг темно и все спят.

Вариант темной темы под Mac. Скриншот с GitHub.

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

Меню Sketch

Я, как и большинство других пользователей Arduino IDE, загружаю свои скетчи в платы при помощи панели инструментов. Щелкнул на кнопку загрузки и скетч начал заливать в плату. Удобно. Но, как оказывается, меню Sketch (здесь и далее я буду использовать английский вариант интерфейса Arduino) содержит не мало интересных и полезных новшеств. Итак, кратенько пробежимся по ним.

Меню Sketch Arduino IDE

Пункты меню Very/Compile и Upload стандартны и знакомы всем. Именно они используются для проверки правильности кода и последующей нормальной загрузки. А вот пункт Upload using programmer для меня до недавнего времени оставался Terra incognita. Как оказалась, данный пункт необходимо применять при загрузки скетча без использования загрузчика (bootloader), но с использованием полноценного программатора. О загрузчиках и программаторах поговорим немного позже, пока же просто запомним этот пункт.

В этом же меню присутствует весьма полезный пункт Export compiled Binary. Применяется он в том же направлении, что и Upload using programmer. По умолчанию Arduino IDE компилирует исходный код в файл, который сохраняется во временную директорию и после завершения загрузки она должна очищаться. Временная директория находится в каких-то дебрях файловой системы, а искать там скомпилированный файл с непонятным наименованием — то еще удовольствие. Так вот функция Export compiled Binary как раз и применяется для того, чтобы сохранить уже откомпилированный скетч в виде бинарных-файлов в папке самого скетча. В дальнейшем скомпилированные скетчи могут быть прошиты при помощи внешнего программатора или же USB-TTL преобразователя.

Кстати, просмотреть папку скетча можно все через тоже самое меню Sketch при помощи пункта Show Sketch Folder. Кстати, при вызове Export compiled Binary компилируется сразу два файла: с и без загрузчика. Для чего это нужно, опять же немного ниже. При компилировании при помощи Export compiled Binary следует учитывать, что примеры из поставки Arduino так откомпилировать не выйдет. Папки, в которых хранятся эти скетчи имеют режим только для чтения, а IDE необходимо куда-то записать скомпилированные файлы (обычно в таком случае возникает ошибка «Export canceled, changes must first be saved.»). Поэтому тренируемся на своих собственных скетчах или же пересохраняем скетч в новую папку.

Меню Tools

Меню Tools в Arduino IDE дает куда больше интересного и полезного, нежели Sketch. Более того, сам вид меню зависит от того, какую платформу вы выбрали в качестве целевой.

Меню Tools Arduino IDE с выбранным микроконтроллером семейства AVR.

Начнем с общего и тех пунктов, которые есть в оригинальных платах, построенных на микроконтроллерах Atmel (ее все же купила Microchip).

Пункт Auto Format позволяет отформатировать ваш исходный текст по общепринятому в Arduino IDE стандарту. Отформатированный текст позволяет легче находить ошибки, да и сама программа выглядит опрятно. Так же, зачастую, при форматировании при помощи автоформата получается найти такие ошибки, как отсутствующие скобки, что при большом количестве вложений несколько затруднительно. Оная же функция вызывается и в самом редакторе в контекстном меню доступном по правой кнопке мышки.

Archive Sketch позволяет упростить навигацию по папке в которой хранятся все ваши скетчи. Напомню, что каждый скетч хранится в отдельной папке, куда складывается все, что к нему относится. Если скетчей у вас много, особенно если плодить версии в новых папках, то разобраться во всем этом нагромождении становится очень сложно. Для этого и можно применить функцию архивирования. Папка со скетчем будет сжата в архив ZIP, а затем стерта из каталога. Останется только архив.

Serial Plotter противовес Serial Monitor предназначен для вывода графика из данных выдаваемых в последовательный порт. Все, что от вас требуется для построения графика — выплевывать в порт цифры при помощи Serial.println(). Неплохой пример использования плоттера приведен на страницах проекта wikihandbk.

Приведенные выше пункты стандартны. Их использование, вкупе с Library Manager должны быть известны даже неопытным пользователям. А дальше попробуем погрузиться в чащобы Arduino IDE и мир программирования микроконтроллеров.

WiFi101 / WiFiNINA Firmware Updater

Сетевое взаимодействие для оригинальных плат Arduino всегда было ахиллесовой пятой. Их просто нет в стандартной поставке, а все решения в виде внешних плат настолько ди́ки, что просто пропадает всякое желание их использовать. По этой причине многие используют платы на основе ESP8266, которые дешевле, мощнее и сразу с WiFi на борту. Но итальянцы, да и ардуинщики вообще, ребята упорные, поэтому вместо того, чтобы переходить на нормальные платы, продолжают изобретать очередные ужасы, к которым и относятся WiFi101 и WiFiNINA.

WiFi 101 Shield. Взято откуда-то с просторов сети.

Собственно этот пункт меню предназначен для обновления прошивки и сертификатов соответствующих плат.

Arduino Uno с платой WiFi под библиотеку WiFiNINO

Дичь полнейшая и подобные платы лучше не использовать, так как они до жути непопулярны, стоят дорого, потребляют уйму энергии. В общем, гораздо проще и элегантнее все решается на базе плат семейства ESP. В целом на Arduino присутствует подробный туториал, где разжевано как и что обновляется при помощи данной функции.

ESP Exception Decoder

Плагин для Arduino IDE под непонятным названием ESP Exception Decoder предназначен для более легкой отладки программ под платформу ESP8266. Exception или «исключение» обозначает возникновение ошибочной ситуации которая не была корректно обработана кодом. Например, деление на 0 однозначно вызовет исключение, и работа программы будет прервана. В языке, на котором программируют в Arduino IDE нет возможности использовать блоки try {} catch {}, соответственно работа с исключениями невозможна (точнее по синтаксису он есть, но компилятор его отвергнет, по крайней мере для плат на основе AVR). Программист обязан предусматривать и проверять данные и предупреждать возникновение подобных ситуаций. Иначе результат может быть непредсказуемым.

На первоначальной экосистеме Arduino, построенной на Atmel AVR (об этом опять же дальше) нет места исключениям. И даже несмотря на то, что язык, применяемый для программирования в Arduino IDE есть ни что иное как диалект C++, в нем так же нет исключений и они не поддерживаются компилятором, ибо в AVR нет исключений, слишком там мало места для еще и исключений. Сильно жизнь это не осложняет, просто программы пишутся куда более аккуратно. А вот в экосистеме ESP, в том числе и под Arduino, исключения присутствуют.

И в этом возникает проблема. При возникновении исключительной ситуации, того же деления на 0, микроконтроллер, например, esp8266 выдаст в последовательный порт информацию о возникновении исключения, стек вызовов функций, где оно возникло, сохранит некоторые сведения во внутренней памяти (к ним можно будет обратиться после перезагрузки).

Вот такую вот информацию сохраняет esp8266 после перезагрузки. В этом случае произошла перезагрузка по питанию.

Система в чипах ESP более замороченная, чем в AVR и при возникновении нештатной ситуации выплевывает в последовательный порт некий стек адресов, по которым можно добраться до истинной причины возникновения ошибки. Но выдаются адреса в совсем нечитаемом человеком виде. Чтобы сопоставить строчку в исходном коде с конкретным адресом, выданным в стеке, и был придумал ESP Exception Decoder.

Намеренный вызов исключения на WeMos Mini

После возникновения ошибки необходимо перенести стек в декодировщик и он выдаст «путь» по которому можно дойти до строки в годе где и возникла исключительная ситуация. В некоторых случаях функция исключительно удобная. Ознакомиться с подробной инструкцией по применению декодировщика можно на страничке проекта ESP Arduino Core.

Get Board Info

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

Burn Bootloader

Наконец-то мы начинаем подбираться к действительно интересным пунктам меню. Начнем с пункта загрузки загрузчика (Burn Bootloader). Но для начала попытаемся понять, что такое bootloader и для чего он нужен. В старые далекие ламповые времена тоже существовали программируемые микросхемы. Но программировались они весьма жестким способом. Использовался специальный программатор, в который вставлялась микросхема, происходило таинство, и микросхему можно было использовать в оборудовании.

Сей способ с одной стороны достаточно прост, но с другой он очень неудобен. Ведь чтобы сменить прошивку на уже прошитой микросхеме, если это вообще возможно, ее необходимо вытащить из устройства, установить в программатор и повторить процедуру. Что далеко не всегда возможно, так как микросхема может быть впаянной в плату и без специализированного оборудования достать ее оттуда нельзя или же само устройство летает на спутнике. Именно для этих целей была придумана методика ISP (In-System Programming), что в переводе означает ни что иное как «внутрисхемное программирование». ISP не стоит путать с SPI (Serial Peripheral Interface). ISP это именно внутрисхемная прошивка, а SPI это стандарт взаимодействия между устройствами. И пусть даже вас не вводят в заблуждения сильно похожие разъемы и наименования контактов. ISP и SPI это разные вещи.

В общем случае ISP позволяет программировать микроконтроллер через любой его интерфейс и даже программироваться самостоятельно с изменением своего кода посредством своего собственного же кода. Но для осуществления подобных фокусов требуется некая программа, которая будет сидеть в микроконтроллере и управлять этим программированием. Именно она и называется загрузчиком (bootloader). И именно благодаря ей есть возможность прошивать микроконтроллеры просто подключив их к USB-порту, или же применив простейший программатор на параллельном порту компьютера (у кого они еще остались), а в некоторых случаях обновление прошивки можно загружать вообще по воздуху применяя прием OTA (Over The Air).

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

Для Arduino существует несколько вариантов загрузчиков. Стандартный, который прошивается еще при изготовлении платы Arduino, многие не любят. Дескать он притормаживает при загрузке устройства в ожидании передачи данных для прошивки и только спустя десять секунд запускает ваш прошитый скетч. Дело в том, что некоторые платы Arduino, в которых не реализован механизм DTR (Data Terminal Ready) / RTS (Ready To Send) действительно нужно прошивать очень быстро иначе bootloader просто передаст управление той микропрограмме, что уже находится в микропроцессоре. Вот и начали все, кому не лень, модифицировать штатный загрузчик или же писать свой собственный.

Стандартные загрузчики для плат Arduino

Где брать загрузчики? Вообще стандартный загрузчик можно загрузить прямо из Arduino. Для этих целей и предназначен пункт меню Burn Bootloader. А сами загрузчики из стандартной поставки можно найти в папке с установленным Arduino в поддиректории hardware. Если же вы используете платы отличные от Arduino AVR, например, ESP3288, то все дополнительные загрузчики и прочие инструменты можно найти в личном профиле пользователя (AppData\Local).

Загрузчик для плат семейства ESP

Но если вы скачиваете дополнительные загрузчики и хотите установить их в Arduino IDE, то можно использовать папку hardware в вашем каталоге для скетчей. После перезагрузки IDE загрузчики из этой папки так же будут доступны, однако не следует забывать про файл boards.txt который должен присутствовать в подпапках папки hardware. Если у вас вдруг нет текстового редактора или же вы испытываете трудности с редактированием boards.txt то есть решение. Один энтузиаст создал специальную программу Arduino BOARDS.TXT Editor, которая позволяет с легкостью вносить изменения в указанный файл.

Так, где же брать эти самые альтернативные загрузчики? Искать в сети. Поисковики выдают просто немыслимое количество разнообразных вариантов. Для начала можно остановиться на OptiBoot, попробовать калькулятор «формирующий» загрузчик под конкретную плату или начать просматривать ссылки с официальной страницы загрузчиков Arduino.

И подводя промежуточный итог, если нам нужно загрузить прошивку без загрузчика (так для нее останется больше места) в микроконтроллер, то подключаем его к программатору и загружаем прошивку через Sketch – Upload Using Programmer. Если же хотим вернуться к обычной и удобной загрузке скетчей через среду Arduino по USB и без прочих танцев африканских народов, то прошиваем загрузчик обратно (или же мы купили микроконтроллер без загрузчика) уже посредством Tools – Burn Bootloader. В обоих случаях незабываем про корректный выбор платы, программатора и прочих настроек.

И еще раз, если в плате установлен загрузчик, то после перезагрузки платы он первым получит управление, послушает немного выделенные порты в надежде если вдруг там кто-то хочет залить прошивку. Если признаков заливания прошивки нет, то он со спокойной душой передает управление основной программе. А если в плате нет загрузчика, то тогда управление после перезагрузки сразу передается основной программе. Все просто, по крайней мере на пальцах.

AVR и прочие

Для лучшего понимания дальнейшей информации я хочу привести некоторые сведения о самих микроконтроллерах с которых пошло-поехало Arduino. Мы уже знаем, что оригинальные Arduino построены на микроконтроллерах (больших интегральных схемах, которые можно программировать и которые могут работать и сами по себе без внешней обвязки, подавай только напряжение) от компании Atmel (нынче Microchip).

У компании Atmel наработано несколько линеек микроконтроллеров, но нас в первую очередь интересует линейка AVR (кстати, аббревиатура AVR официально никак не расшифровывается), так как именно на ней и построены оригинальные Arduino. Линейка появилась аж в 1996 году и, пожалуй, была одна из первых на рынке предложившей решение, где микроконтроллер и память (ОЗУ и ПЗУ) расположены в рамках одного единственного кристалла. Повторюсь, чтобы система работала достаточно только одной микросхемы AVR на которую подается питание. Все остальное у нее уже есть внутри.

AVR линейка делится на несколько основных групп:

  • tinyAVR – с уменьшенным количеством линий ввода-вывода, уменьшенным количеством памяти всех типов, обозначается как ATtinyxxx.
  • megaAVR – увеличенное количество памяти всех типов, увеличенное количество линий ввода-вывода, расширенный набор для периферии и тому подобное. Обозначается как ATmegaxxx.
  • XMEGA – ко всему увеличенному у megaAVR тут еще увеличили памяти и добавили встроенный контроллер для быстрой работы с памятью. Обозначается как ATxmegaxxx.

Именно микросхемы AVR обеспечивают поддержку таких функций как АЦП, ШИМ, SPI, I2C и прочих. Arduino же просто их использует (хотя с появлением более мощных микроконтроллеров, тех же esp8266, появилась возможность эмуляции вышеназванных функций программным способом).

И вопреки возможности прошивки AVR методом ISP посредством стандарта SPI через установленный загрузчик, для программирования микроконтроллеров применяется великое множество программаторов. Как простых и собираемых на коленке, так и сложных с внешним питанием и обилием всевозможных функций. Но прежде, чем мы перейдем к рассмотрению программаторов следует пояснить еще один момент. При программировании микроконтроллера с использованием внешнего программатора (без использования загрузчика) необходимо четко понимать, что такое fuses или не трогать настройки, связанные с ними, если такого понимания нет. Fuse/фьюзы/предохранительные биты — это настройки внутри микроконтроллера, в частности AVR. Они прошиваются точно так же, при помощи внешнего программатора (без применения ISP). И обычно применяются для настройки самого микроконтроллера, например, можно включить или отключить возможность самопрошивки контроллера, включение или отключение внешнего сброса устройства (и соответственно возможности его прошивки через bootloader), включение и отключение очистки памяти при перепрограммировании чипа и тому подобное. Подробнее ознакомиться с фьюзами можно (и нужно) в документации к конкретному контроллеру. К чипу ATmega328, одному из самых популярных чипов на Arduino, документация доступна на официальном сайте производителя.

Programmer:

Пожалуй, что пункт меню Tools под кодовым названием Programmer является самым таинственным местом всего Arduino IDE. Информации по данному пункту очень мало, и она настолько скудна что может привести к разочарованию даже самого стойкого прагматика. Очевидно, что данный пункт содержит выбор программаторов для программирования плат. И кажется, что одну и ту же плату можно запрограммировать кучей разных способов и программаторов. Но, а что же нам на этот счет говорит документация к Arduino IDE? А она нам вещает о том, что данный пункт меню Tools имеет смысл только при прошивке загрузчика. Во всех остальных случаях используемый «прошивальщик» зашит в тот самый boards.txt, что обсуждался немного ранее. Причем для микроконтроллеров AVR это всегда avrdude, а для ESP это всегда esptool. Кроме того, для плат AVR может применяться, в штатной поставке, целых два различных протокола «закачки» прошивки в микроконтроллер: avr109 и arduino. Разные протоколы, как не сложно догадаться, применяются для разных загрузчиков, установленных в конкретные микроконтроллеры.

В штатной поставке Arduino IDE с подключенной инфраструктурой ESP для прошивки загрузчика можно применить несколько типов программаторов. Кратко пройдемся по ним всем. По факту все AVR в Arduino IDE прошиваются посредством приблуды AVRDUDE (бывший AVRProg) и различия между «программаторами» только в используемом протоколе и настройках AVRDUDE. На текущий момент AVRDUDE поддерживает 39 программаторов, но в Arduino IDE используется только 14. Ознакомиться с настройками каждого из них можно в файле programmers.txt в той самой директории hardware, где складируется файлик boards.txt. Информация по настройкам для каждого из программатора доступна в файле avrdude.conf (располагается обычно в Arduino\hardware\tools\avr\etc) и в куцей документации к самому AVRDUDE.

AVR ISP

AVRISP есть ни что иное как фирменный программатор от Atmel. Он позволят программировать AVR. И похоже, что на этом все. Мне ну далось найти хоть сколько-нибудь достоверной информации про данный программатор, кажется, что он сошел со сцены и осел где-то в дебрях плат у аксакалов еще до появления Интернет.

Отладочная плата Atmel STK500. Фото производителя.

Единственное, что хоть как-то проливает свет на данный программатор, так это то, что он по факту является частью STK500 (такая отладочная плата для AVR от Atmel) версии 1, которая подкачается к компьютеру посредством последовательно порта.

AVRISP mkII

А вот AVRISP mkii является актуальным программатором, подключаемым к USB. По крайней мере о нем есть информация на сайте производителя и большинство безродных программаторов, которые продаются бесчисленными компаниями как раз и являются клонами именно этого программатора.

Фирменный программатор AVRISP mkII. Фото производителя.

Тем не менее, он так же является частью отладочной платы STK500, но уже версии 2, которая подключается к компьютеру уже по интерфейсу USB. Хотя, по отзывам очевидцев и версия 1 может использовать с USB посредством конвертера COM-USB.

USBtinyISP

Это один из программаторов, который можно собрать своими руками, он прост и дешев, а в качестве «сердца» у него используется чип tinyAVR. Вот только возникает вопрос – как же его прошивать, если он сам и предназначен для прошивки AVR?

Тем не менее, программатор поддерживается Arduino IDE и весьма популярен. Программатор был разработан в Нидерландах, но в настоящее время поддерживается AdaFruit.

ArduinoISP и ArduinoISP.org

Что подразумевали под этими двумя программаторами разработчики Arduino IDE остается только гадать, да угадывать. Сайт ArudinoISP.org дает перенаправление на туториал на сайте Arduino.cc по использованию Arduino as ISP. Единственное отличие этих двух от Arduino as ISP только лишь используемый протокол. Вероятно, что они были когда-то собраны в качестве поддержки особого загрузчика, а с течением времени исчезли с лица истории. По крайней мере в документации AVRDUDE никакого упоминания ни про arduinoisp ни про arduinoisporg просто нет.

USBasp

Еще один простой программатор, который можно собрать дома на коленке. И он тоже построен на чипе от Atmel. Проект был развернут немецкий программистом, а затем подхвачен всем миром. Как и с USBtinyISP чип от Atmel для программатора необходимо запрограммировать.

Parallel Programmer

Данный тип программатора считается одним из самый простых, если не самым простым. По сути «параллельный программатор» — распиновка параллельного порта компьютера и соответствующее программное обеспечение.

Для сборки данного программатора требуется компьютер с параллельным интерфейсом (раньше по нему было модно подключать принтеры) и всего три резистора двух номиналов. Подробная схема (от руки) и описание по сборке (с фотографиями) доступна на официальном сайте Arduino.

Arduino as ISP

Поскольку платы Arduino сами по себе являются микроконтроллерами, да еще и с навороченными входами/выходами, то их вполне можно использовать в качестве программаторов.

Для этого в плату Arduino закачивается скетч из примеров под именем ArduinoISP, соединяются проводки (между платой, в которую залит скетч и платой, которую нужно прошить), и прошивается загрузчик (не забываем выбрать программатор Arduino as ISP). Подробная инструкция доступна опять же на странице официального сайта Arduino.

Arduino Gemma

Если подходить формально, то Gemma это не программатор. Это микроскопическая плата от AdaFruit предназначенная для вшивания/встраивания в одежду/обувь. Она лишь частично совместима с Arduino, так как содержит очень мало вводов/выводов. Чтобы подключить ее к USB разработчику пришлось выдумать отдельный загрузчик, и отдельный PID для USB устройства. По этой причине прошивается Gemma как отдельный программатор (в реальности там встроенный USBtiny), имеет отдельный конфиг для AVRDUDE с жестко прописанным bootloader. Другими словами, прошить этой платой ничего нельзя, но зато ее можно прошить саму загрузчиком.

BusPirate as ISP

BusPirate это не только программатор, скорее это не совсем и вовсе не программатор, а одноплатный компьютер специализированный для изучения и программирования новых и неизвестных микропроцессоров. Его конструкция такова, что на одной плате собраны все мыслимые и не очень интерфейсы для исследования того, что же попало к вам в руки. Штука интересная и если вы уж работаете с таким, то должны знать, что с AVRDUDE у компьютера могут быть определенные проблемы, связанные с прошивкой самого BusPirate. Обходятся они, естественно, настройками AVRDUDE и некоторым шаманством с железом.

Atmel STK500 development board

Та самая отладочная плата, что упоминается в AVR ISP и AVR ISP mkII. В Arduino IDE не делается различия между версиями и предполагается, что AVRDUDE самостоятельно определит версию протокола обмена и осуществит самонастройку. Если же этого не происходит, то в programmers.txt нужно четко прописать stk500v1 или stk500v2 в качестве применяемого протокола.

Atmel JTAGICE3 (ISP mode) и Atmel JTAGICE3 (JTAG mode)

JTAGICE3 — современное решение для отладки чипов семейств AVR, SAM и Cortex. Разумеется, только тех чипов, что поддерживают внутричиповую отладку. Попутно эта коробочка еще и программирует их всех.

Atmel JTAGICE3 отладчик/программатор.

Продукт актуальный, у производителя имеется документация. Разница между программаторами только в применяемых протоколах. В ISP режиме применяется протокол JTAG3ISP, а в JTAG просто JTAG3.

Atmel-ICE (AVR)

Так же активный продукт Atmel и его можно купить. Как и JTAGICE3 он позволяет не только производить отладку у чипов, поддерживающих такую функцию, так и программировать их. Для прошивки используется протокол atmelice_isp. В общем использовать программаторы на подобие JTAGICE3 или Atmel-ICE только для прошивки 8-битных микроконтроллеров это как стрелять из пушки по клопам. Слишком уж мощные и дорогие решения для задачи, которая решается куда проще.

Обширное семейство ESP

Выше мы рассмотрели специфику прошивки контроллеров семейства AVR. Но при этом обойти не менее многочисленное и популярное семейство контроллеров ESP было бы просто некрасиво. Тем более, что при выборе одного из семейства, меню Tools значительно увеличивается в объеме. Пройдемся по меню и попробуем понять, что каждый из пунктов увеличенного меню означает. Здесь и далее я рассматриваю SDK ESP версии 2.5.0.

Меню Tools в Arduino IDE при выборе одной из плат семейства ESP.

Часть меню все же остается тем же самым, что и прежде, поэтому излишне повторяться не будем.

Upload speed

Позволяет выбрать скорость, с которой будет происходить загрузка прошивки и других частей в микроконтроллер. Платы семейства ESP могут комплектоваться мегабайтами памяти (в то время как AVR речь идет в лучшем случае о сотнях килобайт) и загрузка на скорости 9600 может занять непростительно долгий отрезок времени.

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

CPU Frequency

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

Flash Size

Здесь указывается каким образом разделять всю доступную ПЗУ для хранения кода программы и для файлов. Микроконтроллеры ESP поддерживают память SPIFFS (Serial Peripheral Interface Flash File System). По сути, SPIFFS это файловая система для последовательного доступа. И у программиста есть возможность определить, сколько памяти отводить для файловой системы (туда можно записать, например, HTML-файлы или картинки) и сколько для своего скетча. Но тут есть некоторая тонкость. На текущий момент, насколько мне известно, как минимум платы EPS8266 не могут закачать скетч размерностью более 1 мегабайта. Есть обходные пути, но ведь еще нужно умудриться написать скетч, который в компилированном виде будет занимать более 1 мегабайта. Поэтому рекомендуется использовать как можно больший SPIFF, дабы уменьшить время загрузки скетча.

В тоже самое время есть сведения от потерпевших, что платы ESP32 могут испытывать проблемы связанные с «не хватает места для скетча». Но проблемы эти всего лишь из-за еще сырой поддержки плат EPS32 в инфраструктуре ESP для Arduino.

Debug port

Пункт может принимать значения Disabled, Serial и Serial1. Данная настройка предназначена для вывода отладочной информации в последовательный порт (хотя включить ее можно и программно, например, через Serial.setDebugOutput(true)). Если в скетче инициализируется соответствующий порт (Serial или Serial1), то в него могут выводиться отладочные сообщения, которые не мешают выводу в этот же порт другой информации.

При инициализации и включении вывода отладочной информации рекомендуется устанавливать максимальную скорость работы порта. В противном случае, при большом объеме вывода могут наблюдаться фризы исполнения программы или же сброс буфера вывода. Подробнее о выдаче отладочных сообщений можно прочитать в статье на сайте проекта ESP8266 Core.

У ESP обычно присутствует два последовательных порта. Первый, Serial использует UART0 и GPIO1 (TX) с GPIO3(RX). Второй, Serial1 использует UART1 и только GPIO2 (TX). Соответственно Serial1 не может быть использован на прием. Тем не менее, в обоих случаях есть возможность программного переназначения пинов, как и скорости, четности и прочих характеристик.

Debug Level

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

lwIP Variant

Настройка предназначена для выбора варианта реализации сетевого стека IP. Прошу обратить внимание, тут именно lwIP (lightweight IP), первая буква L, а не i.

Вариант выбора IwIP

По умолчанию используется самый верхний вариант, уменьшающий использование памяти. Но если ваш микроконтроллер активно работает с сетью, то можно пожертвовать памятью и получить наивысшую скорость. Аналогично можно включить поддержку IPv6 или вернуться на стек версии 1.4, где такой поддержки не было вообще. Под features тут понимается всякого рода ICMP, IGMP и прочие навороты, без которых можно обойтись. Основная документация по версии ветки 2.х доступна на сайте разработчика. Постоянно растущий Wiki по теме lwIP доступен на страницах проекта FanDom.

VTables

Под VTables в IDE подразумевается механизм виртуальной таблицы для позднего связывания объектов. Не буду вдаваться в подробности, о них можно задумчиво почитать в Википедии. Остановлюсь лишь на самих доступных опциях, а их всего три:

  • Flash – постоянное запоминающее устройство, таблицы хранятся в файловой системе. Метод по умолчанию в репозитарии GitHub.
  • Heap – куча, оперативная память предназначенная для динамического выделения памяти.
  • IRAM – внутренняя память микроконтроллера.

Понятно, что самый быстрый способ хранения и обработки виртуальных таблиц это IRAM, а самый медленный Flash. Но тут следует так же смотреть на то, как активно работает программа с объектами, есть ли множественное наследование и как часто объекты создаются и уничтожаются. В обычных применениях такая таблица и вовсе может быть статической и отлично проживать на Flash, с другой стороны, она может быть весьма крупной и просто не влезать в IRAM (область ОЗУ для хранения кода программы).

Exceptions

Пункт меню позволяет включить или отключить использование исключительных ситуаций. О них мы уже рассуждали выше, в том числе и в разделе об ESP Exception Decoder. При включении исключений программист в коде уже может использовать структуры try {} catch {}, что увеличивает потребление памяти, но позволяет легче программировать сложные алгоритмы. Напомню, что try-catch будет работать только для плат семейства ESP. Отрадно замечать, что программисты работающие над библиотеками для семейства ESP для Arduino уже начали использовать механизм try {} catch {} в своем коде на GitHub.

Erase Flash

Пункт предлагает стирать внутреннюю память микроконтроллера в следующих пропорциях:

  • Only Sketch – стирает только пространство отведенное под скетч. Остальное остается нетронутым.
  • Sketch + WiFi Settings – пространство для скетча и настройки WiFi. Дело в том, что при подключении к точке доступа микроконтроллер запоминает параметры подключения и в следующий раз подключается к той же точке быстрее.
  • All Flash Contents – стирается все, включая файловую систему.

Прочее по ESP

В заключение статьи хотелось бы добавить, что при прошивке загрузчика в ESP всегда используется прошивальщик esptool. И всегда применяется один и тот же загрузчик eboot. Чтобы пользователь там не выставил в Programmer.

Итог

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

Однако, хочу надеться, что авторы Arduino IDE все же смогут удержать свое творение в приличных рамках и оставить его все таким же легким в освоении инструментом. Заодно хочу им напомнить, что документировать свое творение стоит постоянно иначе получается «не только лишь все, сегодня могут в завтра».

Update: разбираясь глубже с тем как настраивать свои собственные платы или же добавлять новые платы к Arduino IDE, наткнулся на исчерпывающую документацию по этому поводу.


Опубликовано автором kvv в следующих категориях:
DIY Soft не только лишь все статья

Поделиться ссылкой:

простых проектов Arduino Uno для начинающих

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

Если вы новичок в Arduino, обязательно загрузите нашу бесплатную электронную книгу ниже. Это руководство было создано для абсолютного новичка и поможет вам понять плату Arduino, а также ее части и компоненты.

БЕСПЛАТНАЯ электронная книга (PDF) — полное руководство для начинающих по Arduino

Для выполнения проектов, описанных в этом руководстве, вам необходимо убедиться, что у вас есть следующие предметы.

  • Плата Arduino Uno
  • Макет — половинный размер
  • Провода перемычки
  • Кабель USB
  • светодиод (5 мм)
  • Переключатель кнопочный
  • Резистор 10 кОм
  • Резистор 220 Ом

Нужны запчасти? Получите Arduino Starter Kit с Project Ebook

На этом этапе мы готовы загрузить бесплатное программное обеспечение, известное как IDE.Arduino IDE — это интерфейс, в котором вы будете писать наброски, которые сообщают плате, что делать.

Последнюю версию этого программного обеспечения можно найти на странице загрузки Arduino IDE.

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

После установки программного обеспечения на ваш компьютер откройте его. Это IDE Arduino и место, где будет происходить все программирование.

Найдите время, чтобы осмотреться и привыкнуть к нему.

  1. Строка меню: Предоставляет доступ к инструментам, необходимым для создания и сохранения эскизов Arduino.
  2. Кнопка «Проверить»: Компилирует код и проверяет орфографические и синтаксические ошибки.
  3. Кнопка загрузки: Отправляет код на подключенную плату, например, в данном случае Arduino Uno. Во время загрузки индикаторы на плате будут быстро мигать.
  4. Новый эскиз: Открывает новое окно, содержащее пустой эскиз.
  5. Имя эскиза: Когда эскиз сохранен, здесь отображается имя эскиза.
  6. Открыть существующий эскиз: Позволяет открыть сохраненный эскиз или один из сохраненных примеров.
  7. Сохранить эскиз: Сохраняет текущий открытый эскиз.
  8. Serial Monitor: Когда плата подключена, будет отображаться серийная информация вашего Arduino
  9. Область кода: В этой области вы составляете код эскиза, который сообщает доске, что делать.
  10. Область сообщений: В этой области отображается состояние сохранения, компиляции кода, ошибок и т. Д.
  11. Текстовая консоль: Показывает подробную информацию об ошибках, размер скомпилированной программы и дополнительную информацию.
  12. Плата и последовательный порт: Сообщает вам, какая плата используется и к какому последовательному порту она подключена.

На этом этапе вы готовы подключить Arduino к компьютеру. Подключите один конец USB-кабеля к Arduino Uno, а другой конец USB-кабеля — к USB-порту вашего компьютера.

После подключения платы вам нужно будет перейти к Tools , затем Board и, наконец, выбрать Arduino Uno.

Затем вы должны указать Arduino, какой порт вы используете на своем компьютере.

Чтобы выбрать порт, перейдите в Tools , затем Port , затем выберите порт, на котором указано Arduino.

Наконец-то пришло время сделать ваш первый проект Arduino. В этом примере мы заставим вашу плату Arduino мигать светодиодом.

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

Необходимые детали

  • Плата Arduino Uno
  • Макет — половинный размер
  • Провода перемычки
  • Кабель USB
  • светодиод (5 мм)
  • Резистор 220 Ом

Нужны запчасти? Получите Arduino Starter Kit с Project Ebook

Соедините детали

Вы можете построить свою схему Arduino, посмотрев на изображение макета выше или используя письменное описание ниже.В письменном описании мы будем использовать комбинацию букв и цифр, которая указывает на расположение компонента. Если мы упоминаем, например, h29, это относится к столбцу H, строке 19 на макете.

Шаг 1 — Вставьте черную перемычку в контакт GND (заземление) на Arduino, а затем в шину GND ряда макетов 15

Шаг 2 — Вставьте красную перемычку в контакт 13 на Arduino, а затем другой конец в F7 на макетной плате

Шаг 3 — Поместите ДЛИННУЮ ножку светодиода в H7

Шаг 4 — Поместите КОРОТКУЮ ножку светодиода в h5

Шаг 5 — Согните обе ножки резистора 220 Ом и поместите одну ножку в шину GND вокруг ряда 4, а другую ножку в I4

Шаг 6 — Подключите Arduino Uno к компьютеру через USB-кабель

Загрузить эскиз Blink

Теперь пора загрузить скетч (программу) в Arduino и сказать, что делать.В IDE есть встроенные примеры эскизов, которые вы можете использовать, что упрощает задачу для новичков.

Чтобы открыть скетч мерцания, вам нужно будет перейти в Файл > Примеры > Основы > Blink

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

Затем вам нужно нажать кнопку подтверждения (галочку), которая находится в верхнем левом углу окна IDE.Это позволит скомпилировать эскиз и искать ошибки. Как только появится сообщение «Готово компиляция», вы будете готовы загрузить его. Нажмите кнопку загрузки (стрелка вперед), чтобы отправить программу на плату Arduino.

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

Поздравляю! Вы только что завершили свой первый проект Arduino. Устранение неполадок — Если вы столкнулись с проблемой, не сдавайтесь, ознакомьтесь с разделом устранения неполадок ниже, чтобы узнать о наиболее распространенных проблемах.

Изменить код

Прежде чем мы перейдем к следующему проекту, давайте изменим часть кода в скетче «Blink», чтобы он работал по-другому. Игра со скетчем поможет вам начать понимать, как код управляет доской.

Оставьте плату Arduino подключенной и измените часть задержки кода с (1000) на (200).Нажмите кнопку «Проверить» в левом верхнем углу IDE, а затем нажмите «Загрузить». В результате светодиод на макетной плате должен мигать быстрее.

ПРИМЕЧАНИЕ — Arduino измеряет время в миллисекундах, а 1000 миллисекунд = 1 секунде. Исходный код (1000) включает светодиод на 1 секунду, а затем гаснет на 1 секунду. Изменяя код от (1000) до (200), он сокращает время между включением и выключением, что заставляет его мигать быстрее.

Теперь пора поговорить о переключателях и о том, как их можно включить в проекты Arduino.Переключатель — это электрический компонент, который замыкает цепь при нажатии и разрывает цепь при отпускании. В этом проекте мы будем использовать небольшой кнопочный переключатель для управления светодиодом.

Необходимые детали

  • Плата Arduino Uno
  • Макет — половинный размер
  • Провода перемычки
  • Кабель USB
  • светодиод (5 мм)
  • Переключатель кнопочный
  • Резистор 10 кОм
  • Резистор 220 Ом

Нужны запчасти? Получите Arduino Starter Kit с Project Ebook

Соедините детали

Вы можете построить свою схему Arduino, посмотрев на изображение макета выше или используя письменное описание ниже.В письменном описании мы будем использовать комбинацию букв и цифр, которая указывает на расположение компонента. Если мы упоминаем, например, h29, это относится к столбцу H, строке 19 на макете.

Шаг 1 — Подключите синюю перемычку от GND на Arduino к шине GND (синяя линия) на макетной плате рядом с A13

Шаг 2 — Подключите синюю перемычку от шины GND на макетной плате рядом с A17 к h29

Шаг 3 — Подключите красную перемычку от шины питания на макетной плате вокруг ряда A27 к h36

Шаг 4 — Подключите зеленую перемычку от контакта 2 на Arduino к J24 на макетной плате

Шаг 5 — Поместите одну ногу резистора 10 кОм в G19, а другую ногу в G24

Шаг 6 — Поместите кнопочный переключатель в F24, F26, E24 и E26

Шаг 7 — Поместите одну ногу резистора 220 Ом в D5, а другую ногу в G5

Шаг 8 — Вставьте короткую ножку светодиода в шину GND вокруг A5 и длинную ножку в B5

Шаг 9 — Подключите черную перемычку от контакта 13 на Arduino к I5 на макетной плате

Шаг 10 — Подключите красную перемычку от 5 В на Arduino к шине питания (+) рядом с A8

Шаг 11 — Подключите Arduino Uno к компьютеру через USB-кабель

Загрузить эскиз переключателя

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

Чтобы использовать переключатель, мы должны загрузить файл под названием «Кнопка», который можно найти здесь: Файл > Примеры > Цифровой > Кнопка

Теперь у вас должен быть полностью закодированный эскиз кнопки, как на изображении ниже.

Затем вам нужно нажать кнопку подтверждения (галочку), которая находится в верхнем левом углу окна IDE.Как только появится сообщение «Готово компиляция», вы будете готовы загрузить его. Нажмите кнопку загрузки (стрелка вперед), чтобы отправить программу на плату Arduino.

Нажмите кнопочный переключатель на макетной плате, и вы сможете включать и выключать светодиод, как показано в видео ниже.

Готовы к другим проектам? Ознакомьтесь с нашим следующим постом — 15 проектов макетов Arduino Uno

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

  1. Убедитесь, что светодиод действительно работает. Используйте батарейку типа «таблетка» 3 В и подсоедините ДЛИННУЮ ножку светодиода к (+), а КОРОТКУЮ ножку — к (-) батареи.
  2. Убедитесь, что правильная ножка светодиода подключена правильно. ДЛИННАЯ ветвь — к положительной, а КОРОТКАЯ — к отрицательной.
  3. Убедитесь, что Arduino IDE показывает правильную плату. Перейдите в Tools > Board , затем выберите Arduino Uno.
  4. Убедитесь, что IDE Arduino показывает правильный порт.Перейдите в Tools > Port , затем выберите порт, на котором указано Arduino.
  5. Убедитесь, что все соединения компонентов надежно закреплены на плате Arduino и макетной плате.

arduino / compile-sketches: действие GitHub Actions, которое проверяет, компилируются ли скетчи Arduino, и создает отчет с данными из компиляций

Это действие проверяет, компилируются ли скетчи Arduino, и создает отчет с данными из компиляций.

Содержание

Входы

cli-версия

Используемая версия интерфейса командной строки Arduino.

По умолчанию : "последний"

fqbn

Полное имя платы для использования при компиляции.

По умолчанию : "arduino: avr: uno"

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

платформы

Список устанавливаемых зависимостей платформ в формате YAML.

По умолчанию : зависимость платы будет автоматически определена из ввода fqbn , и последняя версия этой платформы будет установлена ​​через Boards Manager.

Если определена зависимость платформы от источника, отличного от Boards Manager, с тем же именем, что и зависимость от другой исходной платформы Boards Manager, они оба будут установлены, причем зависимость, не связанная с Boards Manager, перезапишет установку платформы Boards Manager.Это позволяет тестировать не выпускаемую версию платформы при использовании Boards Manager для установки зависимостей инструментов платформы. Пример:

 платформ: |
  # Установите последнюю версию плат Arduino SAMD и ее набор инструментов через Boards Manager
  - имя: "arduino: samd"
  # Установить платформу из корня репозитория, заменив установленную платформу BM
  - исходный путь: "."
    имя: "arduino: samd" 
Поддерживаемые источники платформы:
Менеджер плат

Ключи:

  • наименование - ( требуется ) наименование платформы в форме ПОСТАВЩИК: АРХИТЕКТУРА (e.г., arduino: avr ).
  • версия - версия платформы для установки.
    • По умолчанию : последняя версия.
  • source-url - URL-адрес Boards Manager платформы.
    • По умолчанию : индекс пакета Arduino, который позволяет устанавливать все официальные платформы.
Локальный путь

Ключи:

  • исходный путь - ( требуется ) путь для установки в качестве платформы.Предполагается, что относительные пути относятся к корню репозитория.
  • имя - ( требуется ) название платформы в форме VENDOR: ARCHITECTURE (например, arduino: avr ).
Репозиторий

Ключи:

  • source-url - ( требуется ) URL для клонирования репозитория. Он должен начинаться с git: // или заканчиваться на .git .
  • наименование - ( требуется ) наименование платформы в форме ПОСТАВЩИК: АРХИТЕКТУРА (e.г., arduino: avr ).
  • версия - Git ref репозитория для оформления заказа. Специальное название версии latest приведет к использованию последнего тега.
    • По умолчанию : репозиторий извлекается до конца ветки по умолчанию.
  • source-path - путь для установки в качестве платформы. Пути указаны относительно корня репозитория.
    • По умолчанию : корень репозитория.
Архив скачать

Ключи:

  • source-url - ( требуется ) URL для загрузки архива (например, https://github.com/arduino/ArduinoCore-avr/archive/master.zip ).
  • имя - ( требуется ) название платформы в форме VENDOR: ARCHITECTURE (например, arduino: avr ).
  • source-path - путь для установки в качестве платформы.Пути указываются относительно корневой папки архива или корня архива, если у него нет корневой папки.
    • По умолчанию : корневая папка архива.

библиотеки

Список устанавливаемых библиотечных зависимостей в формате YAML.

По умолчанию : "- исходный путь: ./" Это приводит к установке репозитория как библиотеки. Если нет зависимостей библиотек и вы хотите переопределить значение по умолчанию, установите вход библиотек в пустой список ( - библиотеки: '-' ).

Библиотеки

устанавливаются в пользовательскую папку Arduino по адресу ~ / Arduino / libraries .

Примечание : при использовании устаревшего формата списка, разделенного пробелами для этого ввода, тестируемый репозиторий всегда будет установлен как библиотека.

Поддерживаемые источники библиотеки:
Менеджер библиотеки

Ключи:

  • имя - ( требуется ) имя библиотеки, как определено в поле имя ее библиотеки.файл метаданных свойств.
  • версия - версия библиотеки для установки.
    • По умолчанию : последняя версия.

Примечания :

  • Библиотека будет установлена ​​в папку, соответствующую ее имени, но с заменой пробелов на _ .
  • Если зависимости определены автором библиотеки, эти библиотеки будут установлены автоматически.
Локальный путь

Ключи:

  • исходный путь - ( требуется ) путь для установки как библиотеки.Предполагается, что относительные пути относятся к корню репозитория.
  • имя-назначения - имя папки для установки библиотеки.
    • По умолчанию : папка будет называться в соответствии с именем исходного репозитория или подпапки.
Репозиторий

Ключи:

  • source-url - ( требуется ) URL для клонирования репозитория. Он должен начинаться с git: // или заканчиваться на .мерзавец .
  • версия - Git ref репозитория для оформления заказа. Специальное название версии latest приведет к использованию последнего тега.
    • По умолчанию : конец ветки по умолчанию.
  • source-path - путь для установки как библиотеки. Пути указаны относительно корня репозитория.
    • По умолчанию : корень репозитория.
  • имя-назначения - имя папки для установки библиотеки.
    • По умолчанию : имя в соответствии с именем исходного репозитория или подпапки.
Архив скачать

Ключи:

  • source-url - ( требуется ) URL для загрузки архива (например, https://github.com/arduino-libraries/Servo/archive/master.zip ).
  • source-path - путь для установки как библиотеки. Пути указываются относительно корневой папки архива или корня архива, если у него нет корневой папки.
    • По умолчанию : корневая папка архива.
  • имя-назначения - имя папки для установки библиотеки.
    • По умолчанию : имя соответствует имени исходного архива или подпапки.

эскизные траектории

Список путей в формате YAML, содержащих скетчи для компиляции. Поиск по этим путям будет выполняться рекурсивно.

По умолчанию : "- примеры"

cli-compile-flags

Список флагов в формате YAML для добавления к команде Arduino CLI, используемой для компиляции скетчей.Доступные флаги см. В справочнике по командам Arduino CLI.

По умолчанию : ""

подробный

Установите значение true, чтобы отображать подробный вывод в журнале.

По умолчанию : ложь

эскизы-отчет-путь

Путь для сохранения файла в формате JSON, содержащего данные из компиляций скетчей. Следует использовать только для хранения отчетов. Относительные пути указаны относительно GITHUB_WORKSPACE .Папка будет создана, если она еще не существует.

Этот отчет используется действиями arduino / report-size-deltas и arduino / report-size-Trends .

По умолчанию : "эскизы-отчеты"

github-токен

Токен доступа GitHub, используемый для получения информации из GitHub API. Требуется только для частных репозиториев с enable-deltas-report , установленным на true . Будет удобно использовать $ {{секретов.GITHUB_TOKEN}} .

По умолчанию : ""

включить-дельта-отчет

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

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

Если рабочий процесс запускается событием push , сравнение выполняется между отправляемой фиксацией и его непосредственным родительским элементом.

Дельты будут отображаться в журнале сборки GitHub Actions.

Этот отчет можно использовать с действием arduino / report-size-deltas .

По умолчанию : ложь

Как это работает

Скетч сначала компилируется с репозиторием в $ GITHUB_WORKSPACE в том состоянии, в котором он находился до шага действия. Данные компиляции заносятся в отчет по эскизам. Затем выполняется [ git checkout ] для ссылки Git, используемой в качестве основы для сравнения, и повторяется процесс компиляции + записи данных.Дельта - это изменение данных между двумя компиляциями.

Зависимости, определенные через библиотеки Платформы или Входы устанавливаются через символические ссылки, то есть зависимости от локальных путей в $ GITHUB_WORKSPACE отражают проверки дельт, даже если они установлены за пределами $ GITHUB_WORKSPACE .

включить отчет предупреждений

Установите значение true , чтобы действие записывало счетчик предупреждений компилятора для каждой компиляции эскиза в отчете по эскизам.

По умолчанию : ложь

Пример использования

 - использует: arduino / compile-sketches @ v1
  с участием:
    fqbn: 'arduino: avr: uno'
    библиотеки: |
      - имя: Сервопривод
      - название: Степпер
        версия: 1.1.3 

Объединить два эскиза Arduino вместе

Мы иногда используем партнерские ссылки в нашем контенте. Это вам ничего не будет стоить, но поможет нам компенсировать расходы на оплату труда нашей команды писателей. Вы можете поддержать нас прямо на BuyMeACoffee.Спасибо!

У вас есть несколько эскизов Arduino, которые вы хотите объединить в один?

Тогда следите за обновлениями этого урока!

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

В этом руководстве предполагается, что вы уже знаете, что такое Arduino, как создавать скетч и запускать код на своей плате. Если вы ничего не создавали в Arduino, то это руководство не будет иметь смысла.Я рекомендую сначала ознакомиться с нашим учебником "Четыре шага к написанию любой программы Arduino", прежде чем углубляться в это.

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

Объединить два эскиза в один

В этом примере мы условно добавим музыку к нашему анимированному черепу.Уже прошел Хэллоуин, но ничего страшного! Может быть, вы из тех, кто любит хранить украшения до Дня Благодарения!

У нас есть один скетч, который управляет музыкой черепа, а другой скетч управляет датчиками и сервоприводом для перемещения головы.

Возьмите копии обоих этих эскизов и следуйте им.

Сначала откройте третий пустой эскиз и назовите его «Merged-Skull.ino». Мы скомпилируем содержимое двух предыдущих файлов в объединенный файл. Я рекомендую делать это таким образом, а не брать контент из одного эскиза и вставлять его в другой.Это связано с тем, что вы можете столкнуться с проблемами компиляции или функциональными проблемами при передаче кода. Если у вас есть исходные файлы для работы (и они оба работают независимо), вы всегда можете вернуться к началу и начать все заново. Смешанный код становится некрасивым, поэтому полезно начинать с чистого листа.

Для начала мы начнем сверху вниз и перенесем глобальные переменные, setup (), и другие пользовательские методы в Merged-Skull.ino.

Затем мы скопируем содержимое метода loop () из Musical-Sketch.ino и вставьте его в новый метод с именем playSong () .

Наконец, мы вызовем playSong () везде, где мы хотим, чтобы песня играла. Обратите внимание, что это будет последовательная задача, поэтому песня должна закончиться, прежде чем мы вернемся и проверим, не сработал ли кто-то ультразвуковой датчик. Есть способы обойти многозадачность и многопоточность с помощью Arduino. Я расскажу, как это сделать, в одном из будущих туториалов.

Когда все будет готово, обязательно скомпилируйте код, загрузите его в Arduino и протестируйте.Убедитесь, что разводка контактов ввода / вывода соответствует контактам, указанным в коде, иначе это не сработает!

Если вы ищете более формализованное обучение Arduino, обязательно ознакомьтесь с нашим онлайн-курсом «Прототипирование Arduino для начинающих». Мы берем студентов, у которых нет опыта, к тому, чтобы они знали, как создавать, подключать и программировать нестандартные прототипы. Похоже, хорошо подходит? Посмотрите здесь.

Поддержка такого содержания

Добавление программ (эскизов) в среду разработки Arduino - Руководства

Введение

Это руководство содержит инструкции по добавлению игр и других программ в интегрированную среду разработки Arduino (IDE), чтобы вы могли загружать их в свой Arduboy.В мире Arduino программа называется скетч .

Вы уже должны были установить Arduino IDE в соответствии с инструкциями, содержащимися в кратком руководстве по Arduboy, и инструкциями, предоставленными организацией Arduino.

Расположение эскизов

IDE называет место, где хранятся ваши наброски, Sketchbook (имеет смысл, правда?), Но если это не было изменено, фактическая папка, скорее всего, будет называться Arduino .В этом руководстве он по-прежнему будет называться Sketchbook, поэтому замените правильное имя папки соответствующим образом.

По умолчанию папка для Sketchbook, использующая графическую среду (GUI) вашей операционной системы, будет:

  • Windows: папка Arduino в папке Documents
  • Mac: папка Arduino в папке Documents
  • Linux: папка Arduino в папке Home

Вы можете проверить папку, которую ваша IDE использует для Sketchbook, выбрав в меню IDE:
File> Preferences
На вкладке Settings вверху будет поле под названием Sketchbook location , которое будет содержать полный путь к вашей папке Sketchbook.(Вы можете изменить этот путь, чтобы использовать другую папку для вашего Sketchbook, но это не рекомендуется, если вы не уверены, что знаете, что делаете.)

У каждого эскиза будет своя собственная папка в Sketchbook. Хотя в этом нет необходимости, при желании вы можете упорядочить свои наброски по подпапкам в Sketchbook. Например, у вас могут быть подпапки с именем:

  • Экшн игры
  • Головоломки
  • Демо
  • Моя разработка

Вы можете вкладывать вложенные папки в любую глубину.

Примечание: В вашем Sketchbook будет папка с именем библиотеки
Оставьте папку библиотеки в покое и не пытайтесь помещать в нее эскизы.

Sketchbook, находящиеся в Sketchbook, можно открыть, выбрав из меню IDE:
File> Sketchbook
Если вы не можете найти эскиз, используя File> Sketchbook , значит, он установлен неправильно.

Файлы эскизов

Главный файл скетча будет иметь расширение .ino (последние три буквы из Arduino ). Когда файл .ino загружен в среду IDE, расширение не будет отображаться на его вкладке. Для многих эскизов это будет единственный необходимый файл, но возможно, что в эскизе может быть несколько файлов с расширением .ino .

Некоторые эскизы могут также содержать дополнительные файлы, содержащие дополнительный код для поддержки файлов .ino . Эти файлы будут иметь расширения .c .cpp или .h

Если вы получаете ошибку типа « Нет такого файла » при попытке проверить скетч или загрузить его в свой Arduboy, возможно, один или несколько из этих дополнительных файлов отсутствуют в папке скетча.

Имя папки эскиза

Имя папки, содержащей файл (ы) для скетча , должно иметь то же имя , что и основной файл .ino , с удаленным расширением .ino. Например. Если главный файл скетча называется SuperGame.ino папка должна называться SuperGame

Добавление эскизов в альбом для рисования

Вы можете добавлять наброски в свой альбом для рисования либо из среды IDE, либо с помощью средств вне среды IDE.

Многие эскизы поставляются в виде архива .zip или другого архивного файла, содержащего файл (ы) эскиза. Я считаю, что проще всего распаковать архив во временную рабочую папку, а затем скопировать или переместить необходимые файлы в Sketchbook. Это связано с тем, что извлеченные файлы и папки могут быть расположены не так, как они должны быть.Также могут быть лишние ненужные файлы, такие как шаблоны или иллюстрации, используемые для разработки эскиза.

Не загружайте файлы архива или другие файлы эскизов прямо в Sketchbook. Сохраните их в папке Загрузки или в другом месте, кроме Sketchbook. В большинстве случаев «рабочая папка» может быть той, которая создается при извлечении содержимого файла архива. Как только эскиз будет установлен в ваш Sketchbook, вы можете удалить архивный файл и рабочие папки, если хотите.

Некоторые эскизы, особенно те, которые состоят только из одного файла, могут быть перечислены на веб-странице в виде текста, но недоступны для загрузки. Вы можете скопировать и вставить этот текст прямо в среду IDE и сохранить его (см. « из текста на веб-странице » ниже).

Добавление загруженного скетча без использования IDE

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

  1. Если файл .zip или другой архив, распакуйте его в рабочую папку. В противном случае у вас должна быть рабочая папка, содержащая файлы .ino плюс все связанные файлы .c .cpp или .h , которые вы загрузили.
  • Создайте папку в вашем Sketchbook (или в подпапке под ней) с точно таким же именем, как у основного файла .ino , но без расширения .ino. Например. для SuperGame.ino назовите папку SuperGame

  • Скопируйте основной файл .ino и любые дополнительные файлы .ino , а также любые файлы .c .cpp или .h , находящиеся вместе в одной рабочей папке, в новую папку, созданную вами в Sketchbook. .

  • Особый случай: (На самом деле, это применимо ко многим архивам.) Если при извлечении файла архива создается папка или подпапка с таким же именем, как у файла .ino , то, скорее всего, архив был устроены правильно.Вы можете просто скопировать или переместить эту папку и ее содержимое в свой Sketchbook, вместо того, чтобы создавать папку и копировать отдельные файлы.
    Точно так же может просто папку немного переименовать. Например, для файлов .zip , загруженных с Github, вам может потребоваться удалить -master в конце имени папки.

Теперь у вас должна быть возможность открыть IDE и загрузить новый скетч, выбрав из меню:
Файл> Sketchbook
Загруженный скетч должен быть готов для проверки и / или загрузки.

Добавление эскиза с помощью IDE

Из загруженного файла (ов)
  1. Если это файл .zip или другой архив, распакуйте его в рабочую папку. В противном случае у вас должна быть рабочая папка, содержащая файлы .ino плюс все связанные файлы .c .cpp или .h , которые вы загрузили.
  • В среде IDE выберите в меню:
    Файл> Открыть ...
    Откройте главное .ino , который находится где-то в вашей рабочей папке. Если вы получите всплывающее окно с названием Moving , предлагающее переместить файл в папку с тем же именем, выберите OK . Обратите внимание, что перемещение основного файла .ino оставит связанные файлы .ino .c .cpp или .h , если таковые имеются, в их исходном местоположении, поэтому имейте это в виду для следующих шагов. Открытие файла .ino в среде IDE не перемещает его в Sketchbook, поэтому убедитесь, что вы выполнили следующий шаг .

  • Выберите в меню IDE:
    Файл> Сохранить как ...
    Откроется диалоговое окно для создания новой папки, содержащей файл .ino с тем же именем. Перейдите и сохраните его в своем Sketchbook или в подпапке Sketchbook.

  • Если в вашей рабочей папке (или в папке ниже, если файл всплывающее окно перенесено на основной .ino файл):

  • Выберите из меню:
    Эскиз> Добавить файл ...

  • Выберите файл. Он появится на новой вкладке в среде IDE.

  • Повторите эти действия для любых других файлов .ino .c .cpp или .h файлов.

Теперь эскиз должен быть готов для проверки и / или загрузки.

Из текста на веб-странице
  1. Когда вы запускаете IDE, окно редактирования может содержать базовый шаблон эскиза (только с пустыми функциями setup () и loop () ).В противном случае вы можете выбрать из меню IDE:
    Файл> Новый .
    На вкладке будет называться sketch_ <сегодняшняя дата> .
  • Удалите код шаблона из окна. (Вы можете использовать «щелчок правой кнопкой мыши»> Выбрать все , затем нажать клавишу удаления или использовать «щелчок правой кнопкой мыши»> Удалить .)

  • Скопируйте текст с веб-страницы и вставьте его в окно.

  • Если в списке есть другие файлы, которые необходимо включить, нажмите стрелку вниз в правом верхнем углу и выберите: Новая вкладка .При появлении запроса вы должны назвать файл так, как сказал автор ( .ino .c .cpp или .h ). Скопируйте текст файла в окно вкладки. При необходимости повторите.

  • Выберите в меню:
    Файл> Сохранить как ...
    Сохраните эскиз где-нибудь в Sketchbook, используя имя эскиза (то же самое, что и основной файл .ino без расширения).

Эскиз должен быть готов для проверки и / или загрузки.

Загрузка эскиза

Чтобы загрузить новый скетч в Arduboy, обратитесь к Краткому руководству.

Удачи!

Если вы хотите поговорить об этом руководстве , вы можете сделать это в своей собственной теме ИЛИ перейти к этой:

Продолжая обсуждение из раздела Добавление программ (скетчей) в Arduino IDE: Эта тема предназначена для продолжения обсуждения руководства: Добавление программ (скетчей) в Arduino IDE

эскизов и примеров кода с Arduino * IDE

Используя Intel.com Поиск

Вы можете легко выполнить поиск по всему сайту Intel.com несколькими способами.

  • Название бренда: Core i9
  • Номер документа: 123456
  • Кодовое название: Kaby Lake
  • Специальные операторы: «Ледяное озеро», Лед И Озеро, Лед ИЛИ Озеро, Лед *

Быстрые ссылки

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

Надстройка для Arduino IDE для использования платы разработки Teensy USB


Teensyduino - это программная надстройка для Arduino, запускать скетчи на Teensy и Teensy ++!

Бегущие зарисовки на крошке

Большинство программ, написанных для Arduino, работают на Teensy. Все стандартные Все функции Arduino (digitalWrite, pinMode, analogRead и т. Д.) Работают на Тинси. Teensyduino также совместим со многими библиотеками Arduino.

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

Все коммуникации осуществляются на полной скорости USB 12 Мбит / с. Последовательный порт включает встроенное управление потоком, поэтому эффективная скорость будет быть настолько быстрым, насколько ваш код может читать, но, в отличие от Arduino, вы не будете потеряете входящие данные, если ваш скетч не использует Serial.read () быстро. При реализации последовательного режима максимальная скорость составляет примерно Обычно достижимо 1 Мбит / сек.

Teensy имеет те же встроенные периферийные устройства, что и Arduio: аналоговые входы, SPI, I 2 C, PWM и настоящий последовательный порт. Для приложений которым нужен последовательный порт (MIDI, GPS-модули и т. д.), Teensy очень прост в использовании, потому что загрузка происходит через USB-порт, который не используется для серийного номера.

19 мая 2012 года была выпущена Arduino Leonardo на том же чипе ATMEGA32U4. как Teensy 2.0. В настоящее время ни одна плата Arduino не предлагает оборудования, аналогичного Teensy ++ 2.0.

Оба подростка 2.0 и Arduino Leonardo поддерживают последовательный порт USB, клавиатуру и мышь. Оба имеют аналогичную совместимость со всем кодом на базе Arduino. Но есть несколько различия:

крошечный 2,0

  • USB MIDI, диск, джойстик, управление RawHID и Flight Sim.
  • Оптимизированные digitalWrite, digitalRead, pinMode и т. Д.
  • 3,5 КБ дополнительной памяти для программ (меньший загрузчик)
  • Поддержка международных (не американских) клавиатур.
  • Малый форм-фактор.
  • Опция 3,3 В и меню «Инструменты»> «Скорость процессора».
  • Несерийный USB (нет сообщения об установке драйвера в Windows).
  • Эмуляция Uno reset, Serial.print () в setup () работает.

Ардуино Леонардо

  • Нерегулируемый вход питания 9 В для упрощения использования внешнего источника питания.
  • USB против 9V автоматический выбор мощности.
  • Форм-фактор щита Arduino (проверьте совместимость, некоторые поддерживают только Arduino Uno).
  • Разрешено аппаратное клонирование.
  • Торговая марка Arduino

Проекты Arduino для анимации диорам и макетов макетов железных дорог.

Это бесплатный альбом для рисования Arduino. Я содержит коллекцию проектов и руководств Arduino, которые вы можете использовать для анимации вашей модели железной дороги.

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

Если у вас есть какие-либо вопросы или вам нужна помощь с проектом, вы можете связаться с нами.

Платы Arduino, используемые для создания станции управления DCC.

Ваши руководства и проекты Arduino

Основы

Рекомендации по питанию

Arduino - всегда следует помнить об этом.

Как изменить и загрузить эскиз Arduino. -Основная информация, полезная для любого пользователя Arduino.

Как объединить эскизы Arduino -

Как использовать регистры сдвига. - Это объясняет, как вы подключаете светодиоды при управлении 3 или более коммутаторами.

Операции

Проходя через них, всегда имейте в виду, что вы можете получить личную помощь со всем, что использует Arduino, зайдя на форумы Arduino.

Стрелочные переводы, управляемые Arduino

Test Micro Server - полезно протестировать каждый Micro Servo перед использованием.

Установить исходное положение микросервера - сделайте это перед установкой сервопривода в свой проект.

Управление несколькими стрелками с помощью кнопок с мгновенным контактом Управление с помощью кнопок 1 или несколько машин с замедленным перемещением . - Эффективный способ добавить реализма вашему макету по очень низкой цене. Используйте для управления стрелками от Arduino Nano

Управление несколькими стрелками с помощью кнопок с мгновенным контактом Светодиоды на панели управления и на каждой ветви - страница редактируется. Пока мы редактируем, если вам нужен эскиз, свяжитесь с нами, и мы отправим его вам.

Управление несколькими стрелками с помощью переключателя DPDT Управление тумблером 1 или несколько машин с замедленным переключением . - Эффективный способ добавить реализма вашему макету по очень низкой цене. Используйте для управления стрелками с Arduino Nano. Позволяет добавлять светодиоды и другие функции анимации ко второму полюсу тумблера.

Управление несколькими стрелками с помощью светодиодных индикаторов переключателя SPDT на панели управления и каждой части стрелочного перевода - страница редактируется Пока мы редактируем, если вам нужен эскиз, свяжитесь с нами, и мы отправим его вам.

Управление поездом

Обнаружение блоков - Обнаружение модульных блоков с 3 аспектами -

Железнодорожные переезды

Железнодорожный переезд с автоматическими проблесковыми маячками - Проблесковые огни, активируемые датчиком. - Для использования на железнодорожном переезде без ворот. Огни включаются и выключаются, когда поезд проезжает через переезд.

Железнодорожный переезд с автоматическими воротами и мигалками - Железнодорожный переезд с воротами и фонарями.- Делает отличный анимированный переезд.

Светофор, управляемый Arduino

Одиночный светофор - Одиночный светофор -

Светофор на уровне улицы для 4-х полосного перекрестка - Светофоры -

Светофор плюс сигналы пешеходного перехода для 4-стороннего перекрестка - светофоры

Эффекты декораций

Ручной проблесковый маячок - Проблесковый маячок, активируемый кнопкой.- Для вас на автомобилях, грузовиках или в любом другом месте, где вам нужны мигалки.

LED Fires –Fire Effect - это универсальный эскиз, который можно использовать для освещения диорам, макетов железных дорог, домашних каминов и центральных элементов стола.

Эффект для дуговой сварки - Эффект для дуговой сварки -

Дополнительные идеи для анимации - Идеи для анимации - На этой странице анимации макета показаны проекты, которые будут добавлены в этот список проектов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *