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

Чтобы ваши датчики работали, вам нужно научиться загружать встроенное ПО Arduino [называемые эскизы] в микроконтроллер. Команда Arduino уже создала так называемый IDE [Integrated Development Editor], который очень прост в использовании для разработки эскизов и загрузки их в устройство.

Установка среды разработки на компьютер

Команда Arduino написала довольно хорошее руководство по установке IDE, поэтому просто следуйте инструкциям для своей платформы [и не забудьте вернуться сюда после].

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

Установка библиотек датчиков

Библиотека MySensors 2.0.x доступна в Менеджере библиотек IDE. См. Следующие скриншоты о том, как загрузить и установить её.

Уроки Arduino #1 — структура программы и типы данных

Добавление официального MySеnsors HW в менеджер плат Arduino

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

В Arduino Uno и Nano встроены разъемы USB. Если все настроено правильно, вы можете просто подключить их к компьютеру с помощью стандартного кабеля USB и выбрать последовательное соединение в меню «Инструменты»> «Порт» в среде Arduino.

В Arduino Pro Mini нет встроенной USB-схемы, поэтому для загрузки в неё эскизов программного обеспечения необходимо использовать встроенный последовательный преобразователь USB-to-TTL.

Адаптер FTDI, который мы добавили в магазин, можно настроить для режима выхода 5В и 3.3В. Важно подбирать правильное напряжение при подключении 3,3 В Arduino Pro Mini.

Загрузка примерных эскизов

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

/libraries/MySensors/examples/

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

Если возникают какие-либо ошибки, то они будут отображаться в консоли в нижней части окна.

Базовая структура эскизов

Arduino эскизы должны содержать две основные функции — setup() и loop()

Setup() будет вызываться всякий раз, при подаче питания Arduino или после сброса. Loop() будет вызываться непрерывно.

Общее правило заключается в размещении всей логики: инициализации пишем в функции Setup(), а «работу» в функции loop().

Источник: mysensors.ru

Быстрый старт с Ардуино — отладочная плата Arduino UNO R3

Arduino — это компания, которая разрабатывает аппараты и программы для робототехники и не только. Фактически компания зародилась в 2003 году, когда Эрнандо Барраган в рамках учебной работы создал первую версию платформы Arduino Wiring.

Wiring является библиотекой языка программирования С/С++. Это «расширение» предназначено для работы с платами Arduino. Для передачи кода нашей плате используется среда разработки Arduino IDE. В ней и происходит написание программы.

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

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

Структура передаваемого сообщения в протоколе I2C

Регистры

Вот несколько регистров, задействованных аппаратным модулем TWI (Two Wire Interface, двухпроводный интерфейс):

Регистр Название Назначение
TWCR Регистр управления двухпроводным интерфейсом Управляет действиями модуля TWI
TWSR Регистр состояния двухпроводного интерфейса Сообщает статус действий TWI
TWDR Регистр данных/адреса двухпроводного интерфейса Содержит данные, которые вы хотите передать или приняли
TWBR Регистр битовой скорости двухпроводного интерфейса Управляет частотой тактового сигнала (SCL)

Установка Arduino IDE

Для использования среды Arduino IDE можно установить программу на свой компьютер или использовать онлайн-версию программы (необходима регистрация). Разберем, как установить программу на Windows 8/10.

  1. Переходим на официальный сайт Arduino. В пункте Download выбираем необходимую операционную систему.

Установка Arduino IDE

  1. Попадаем на страницу с возможностью пожертвовать деньги на дальнейшее развитие Arduino. Нажмем на кнопку «Just download», чтобы установить программу без пожертвований.
Читайте также:
Как перевести программу ccleaner на русский язык самостоятельно

Установка Arduino IDE

3. Нас отправляют на сайт Microsoft Store, где нажимаем «Получить».

Установка Arduino IDE

Программа установлена и готова к работе.

Оптимальное подключение ESP8266

Подключение ESP8266 Примечание USB-TTL
VCC ESP8266 подключайте к внешнему источнику питания >300мА, 3,3V
GND все контакты GND должны быть соединены вместе: ESP8266, USB-TTL и источника питания GND
TX (UTXD) RX
RX (URXD) TX
GPIO0 подтягивающий к питанию резистор 10k DTR (если на вашем USB-TTL не разведен пин DTR, то вам придется вручную переключать GPIO0 на землю для перевода ESP8266 в режим прошивки)
RESET (RSBT, REST) подтягивающий к питанию резистор 10k, также можете добавить кнопку, соединяющую RESET и GND для ручного сброса модуля RTS (если на вашем USB-TTL не разведен пин RTS, то вам придется вручную перезагружать модуль )
CH_PD (CH_EN) подтягивающий к питанию резистор 10k
GPIO15 (MTDO) подтягивающий к земле резистор 10k (для тех модулей, где выведен пин GPIO15)
GPIO2 подтягивающий к питанию резистор 10k (на схеме не показан, но рекомендуется для увеличения стабильности)
GPIO16 для успешного выхода из режима Deep Sleep необходимо соединить пины ESP8266 GPIO16 и RESET через резистор 470 Ом (на схеме не показан)

Примечания.

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

2. Если на вашем USB-TTL конвертере выведены пины CTS и DSR — для автозагрузки прошивки они вам не помогут, т.к. работают только на вход.

3. Для стабильной работы ESP8266 требуется источник стабилизированного питания 3,3 вольт, ток более 250 миллиампер. Использование питания от USB-TTL конвертера может привести к нестабильности в работе.

Минимальное подключение ESP8266

Минимальное подключение ESP8266 (повышенная стабильность)

Более подробно, со всеми деталями, о подключении ESP8266 вы можете прочитать в нашей статье ESP8266 – подключение и обновление прошивки

Горячие клавиши Arduino IDE

Для упрощения работы в Arduino IDE используются «горячие клавиши» или хоткеи, от английского hotkeys, что в переводе и означает «горячие клавиши». Это комбинации клавиш на клавиатуре, которые выполняют различные действия в операционной системе и программах. Все команды доступны через меню «Файл», но через хоткеи работать гораздо быстрее.

Меню Arduino IDE

Разберем горячие клавиши и их назначение.

Правка

Ctrl+Z отмена одной операции
Ctrl+Y возврат одной отмененной операции
Ctrl+F поиск по коду
Atrl+A выделение всего кода
Ctrl+P печать содержимого вкладки
Ctrl+X вырезать выделенный код
Ctrl+C копировать выделенный код
Ctrl+V вставить выделенный код

Компиляция и загрузка

Ctrl+R компиляция скетча
Ctrl+U загрузить скетч
Ctrl+Shift+U загрузить скетч с помощью программатора

Сохранение и работа с вкладками

Ctrl+S сохранить текущий скетч
Ctrl+Shift+S сохранить текущий скетч с выбором имени сохраняемого файла
Ctrl+W закрыть текущую вкладку
Ctrl+Shift+N новая вкладка
Ctrl+Alt+Стрелка вправо переключение на вкладку справа от активной
Ctrl+Alt+Стрелка влево переключение на вкладку слева от активной

Другое

Ctrl+N открыть новое окно редактора
Ctrl+O открыть существующий файл скетча
Ctrl+Слэш ( / или русская точка) закомментирование строки
Ctrl+K открыть папку со скетчами
Ctrl+T автоформатирование кода
Ctrl+Shift+M монитор порта
Ctrl+, (русская буква Б) страница настроек Arduino IDE.

Пользовательские типы (Pro)

В языке есть инструмент typedef, позволяющий создать свой тип данных, основанный на другом стандартном. Зачем? С одной стороны для удобства программиста, с другой – чтобы его запутать =) Я никогда им не пользовался, но для разбора чужих кодов из инторнета это знать нужно! Итак, typedef работает следующим образом: typedef тип имя; – создать новый тип данных имя на основе типа тип. Пример:

typedef byte color;

Создаёт тип данных под названием color, который будет абсолютно идентичен типу byte (то есть принимать 0-255). Теперь с этим типом можно создавать переменные:

Создали три переменные типа color, который тот же byte, только в профиль. Это всё! Есть ещё один важный момент, касающийся структур struct и перечислений enum – в кодах из интернета вы часто встретите использование typedef перед struct и enum. В чистом языке Си это имеет большой смысл, но в C++ это наоборот является проблемой. typedef в ардуино-прошивках используют программисты, которые пришли с Си и по привычке используют typedef, на плюсах делать этого не нужно.

Читайте также:
Установить программу savefrom net

Почему не нужно использовать typedef для struct и enum

В языке Си (без ++) при создании структуры/перечисления по ярлыку нужно писать слово struct/enum перед ярлыком, иначе будет ошибка. Либо саму структуру нужно объявить как typedef // НА СИ, НЕ ++ // делаем так struct myStruct < byte x; byte y; >; struct myStruct kek; // создать структуру kek // или так typedef struct myStruct < byte x; byte y; >; myStruct kek; // создать структуру kek В С++ (и на Ардуино) этого делать не нужно! Наоборот, typedef в этом применении может приводить к ошибкам. Например:

// используя typedef вы не можете // объявить структуру сразу. // Вот это приведёт к ошибке при // попытке обратиться к члену структуры typedef struct < byte x; byte y; >kek; // вот это тоже приведёт к ошибке typedef struct myStruct < byte x; byte y; >kek; // Единственным вариантом останется // работа по ярлыку typedef struct myStruct < byte x; byte y; >; myStruct kek; // вот серьёзно, нужны ли вам такие проблемы?

Шаблон программы. Функции setup() и loop()

Сама по себе программа напоминает дом. Наш «дом» состоит из 2х частей:

  1. Функция setup() выступает в качестве «фундамента дома».
  2. Функция loop() напоминает жилую часть дома: здесь и «живет» сама программа.

Шаблон программы в Arduino IDE

Запустим Arduino IDE и напишем шаблон программы:

void setup() < >void loop()

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

Если вы все написали правильно, то ваша функция станет другого цвета.

Разберем подробнее назначение каждой функции.

Функция setup()

Функция setup() — это подготовка. Это первая функция, выполняемая программой. Она выполняется только один раз сразу после включения платы или ее перезапуска кнопкой reset. setup() используется чтобы завести новые функции, настроить ПИНы платы, создать переменные. Функция должна быть включена в программу, даже если в ней нет никакого содержания.

Функция loop()

После функции setup() управление переходит к функции loop(). В переводе с английского loop — это петля. Функция делает в точности то, что означает её имя — непрерывно выполняется заново. Она позволяет программе что-то изменять, возвращать данные и управлять платой Arduino.

Функции setup() и loop() в Arduino IDE

Другие системы исчисления

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

Разные системы исчисления введены в первую очередь для удобства программиста. Теперь по сути: ардуино поддерживает (да в целом другого и не нужно) четыре классических системы исчисления: двоичную, восьмеричную, десятичную и шестнадцатеричную. Да, и до неё добрались.

Краткая напоминалка: 16-ричная система имеет 16 значений на один разряд, первые 10 как у десятичной, остальные – первые буквы латинского алфавита: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f. С десятичной системой всё просто, пишем числа так, как они выглядят. 10 это десять, 25 это двадцать пять, и так далее.

Двоичная (Binary) имеет префикс 0b (ноль бэ) или B, то есть двоичное число 101 запишется как 0b101 ИЛИ B101. Восьмеричная (Octal) имеет префикс 0 (ноль), например 012. Шестнадцатеричная (hexadecimal) имеет префикс 0x (ноль икс), FF19 запишется как 0xFF19.

Базис Префикс Пример Особенности
2 (двоичная) B или 0b (ноль бэ) B1101001 цифры 0 и 1
8 (восьмеричная) 0 (ноль) 0175 цифры 0 – 7
10 (десятичная) нет 100500 цифры 0 – 9
16 (шестнадцатеричная) 0x (ноль икс) 0xFF21A цифры 0-9, буквы A-F
Читайте также:
Программа повтора действий на компьютере

Основная фишка 16-ричной системы в том, что она позволяет записывать длинные десятиричные числа короче, например один байт (255) запишется как 0xFF, два байта (65 535) как 0xFFFF, а жуткие три байта (16 777 215) как 0xFFFFFF. Вы не представляете (или уже имеете представление), насколько удобно и понятно это позволяет работать с цветами и оттенками. Двоичная же система обычно используется для наглядного представления данных и низкоуровневых конфигураций различного железа. Например конфиг кодируется одним байтом, каждый бит в нём отвечает за отдельную настройку (вкл/выкл), и передав один байт вида 0b10110100 можно сразу кучу всего настроить, к этому мы вернёмся в уроке работа с регистрами из раздела продвинутых уроков. В документации по этому поводу пишут в стиле “первый бит отвечает за это, второй за то” и так далее.

Аппаратный модуль TWI

Смотрите следующую схему потока для записи на шину I2C:

Взаимодействие приложения с шиной TWI (I2C) во время типовой передачи

Ссылаясь на таблицу регистров, приведенную выше, операция записи I2C с использованием аппаратного модуля TWI вкратце будет выглядеть следующим образом:

  • Библиотека Wire конфигурирует микросхему ATmega так, что внутренний аппаратный модуль TWI использует свои выводы, которые жестко привязаны к двум аналоговым выводам (4 и 5 на Duemilanove).
  • Библиотека Wire устанавливает значение регистра TWCR для создания состояния START. Сначала она проверяет шину I2C, чтобы убедиться, что она свободна. Шина свободна, когда на обеих линиях и SDA, и SCL установлен высокий логический уровень (потому что устройство по умолчанию устанавливает выводы на шине в третье состояние «не подключено». Общий резистор подтягивает сигнал на шине к высокому уровню).
  • Что такое состояние START? Линия тактового сигнала SCL остается в состоянии логической 1, а мастер в это время меняет состояние на линии SDA на логический 0. Это уникальный момент, поскольку во время обычной передачи данных линии SDA изменяет состояние только тогда, когда на линии SCL установлен низкий логический уровень. Момент, когда сигнал на линии данных изменяется на логический 0, а на SCL логическая 1, является сигналом для всех устройств на шине I2C, с которыми мастер собирается начать взаимодействовать.

Операция чтения выполняется похожим образом.

Источник: elektrikipro.ru

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

Функция setup() вызывается, когда стартует скетч. Используется для инициализации переменных, определения режимов работы выводов, запуска используемых библиотек и т.д. Функция setup запускает только один раз, после каждой подачи питания или сброса платы Arduino.

void setup()

loop()

После вызова функции setup(), которая инициализирует и устанавливает первоначальные значения, функция loop() делает точь-в-точь то, что означает её название, и крутится в цикле, позволяя вашей программе совершать вычисления и реагировать на них. Используйте её для активного управления платой Arduino.

Новости

На выставке CES 2020 также было представлено новое поколение плат Arduino Portenta. Оно было разработано на требовательные промышленные приложения. Portenta H7 поддерживает код Arduino, Python и JavaScript, что делает его доступным для разработчиков с различными знаниями языков .

Производитель Arduino запускает новую серию плат Nano — Arduino Nano 33 BLE. Платы имеют те же размеры, что и плата Ардуино Нано, на чипе U-blox NINA-B306 с микроконтроллером Nordic nRF52840 и беспроводным модулем Bluetooth BLE

Последнее из блога

CashCode-SM 2073

Приветствую всех моих подписчиков и гостей канала.
Давненько я ничего не выкладывал. Вот и это видео не совсем в моём формате. Решил я купить себе 3-d принтер,
Вот я и избавляюсь от некоторых вещей. Все они в хорошем состоянии и покупались под какой-нибудь проект или просто для съёмок видеоурока. У меня накопилось уже много такого добра, так что начинается распродажа.

Сегодня я расскажу про функцию pinMode в Ардуино и нестандартном присваивании значений пинам Ардуино. Так же вы узнаете про состояние OUTPUT и INPUT, в чём разница и многое другое.

Источник: arduino-kid.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru