Программирование Arduino — введение


Начнём небольшую серию статей про программирование плат Arduino.

Для программирования используется Arduino IDE, которую можно скачать на официальном сайте.
Текущая версия, как здесь уже писали — Arduino 0016. Есть версии для Windows (70 Mb), MacOS и Linux.
Рассмотрим версию для Windows — после скачивания архива его нужно распаковать.
Например, в
С:\utils\arduino-0016\
далее остаётся запустить run.bat и всё — Arduino IDE перед вами 🙂

1. Введение

Как мы уже выяснили Arduino/ Freeduino программируется на языке Wiring, которого на самом деле не существует, как и не существует и компилятора Wiring – написанные на Wiring программы преобразуются (с минимальными изменениям) в программу на языке C/C++, и затем компилируются компилятором AVR-GCC. Так что, фактически, используется специализированный для микроконтроллеров AVR вариант C/C++.

Однако, Вы получаете простую среду разработки, и набор базовых библиотек, упрощающих доступ к находящейся «на борту» микроконтроллера периферии.

Например, начать работу с последовательным портом на скорости 9600 бит в секунду, можно всего одной строчкой:

    Serial.begin(9600);

А при использовании «голого» C/C++ Вам бы пришлось разбираться с документацией на микроконтроллер, и вызывать нечто подбное:

  UBRR0H = ((F_CPU / 16 + 9600 / 2) / 9600 - 1) >> 8;
  UBRR0L = ((F_CPU / 16 + 9600 / 2) / 9600 - 1);
  sbi(UCSR0B, RXEN0);
  sbi(UCSR0B, TXEN0);
  sbi(UCSR0B, RXCIE0);

фактически, класс HardwareSerial
( \hardware\cores\arduino\HardwareSerial.h – здесь и далее путь указывается от директории установки Arduino IDE) инкапсулирует данные операции в функции begin (\hardware\cores\arduino\HardwareSerial.cpp)

void HardwareSerial::begin(long speed)
{
    *_ubrrh = ((F_CPU / 16 + speed / 2) / speed - 1) >> 8;
    *_ubrrl = ((F_CPU / 16 + speed / 2) / speed - 1);
    sbi(*_ucsrb, _rxen);
    sbi(*_ucsrb, _txen);
    sbi(*_ucsrb, _rxcie);
}

Раз уж мы открыли заголовочный файл \hardware\cores\arduino\HardwareSerial.h — обратите внимание, что так как по смыслу выполняемых задач экземпляр этого класса может быть только один (ведь COM-порт на плате всего один – верно?), то заодно происходит и объявление этого экземпляра в .h файле:

extern HardwareSerial Serial;

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

Подключение заголовочного файла класса работы с последовательным портом происходит строчкой

#include "HardwareSerial.h"

в файле
\hardware\cores\arduino\WProgram.h
,который, как мы уже знаем, подключается автоматически при компиляции скетча.

Далее кратко рассмотрим основные функции и особенности программирования Arduino/Freeduino.
Если Вы не знакомы с синтаксисом языков C/C++, советуем обратиться к любой литературе по данному вопросу, либо Internet-источникам.
Начать можно с википедии: http://ru.wikipedia.org/wiki/C++

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

По аналогии с описанием на официальном сайте проекта Arduino, под «портом» будем понимать контакт микроконтроллера, выведенный на разъем под соответствующим номером. Кроме того, существует порт последовательной передачи данных (COM-порт).

Более полная документация (на английском языке) представлена на официальном сайте проекта – http://www.arduino.cc.

читать дальше: 2. Программирование Arduino — структура программы, константы

Ссылки
http://arduino.cc/en/Reference/HomePage (или же в каталоге ArduinoIDE \reference\HomePage.html )
http://freeduino.ru/arduino/lang.html

По теме
Arduino/CraftDuino и WinAVR — программируем на чистом С
Переходим от Arduino к программированию ATtiny13 на C


0 комментариев на «“Программирование Arduino — введение”»

  1. Статья хорошая, спасибо, но пытаюсь за пустить run.bat и выдаёт раз через раз вот такие 2 ошибки «arduino cannot run because it could not create a folder to store your setting» и «arduino cannot run because it could not create a folder to store your sketch». Может подскажете в чём дело? Копирую в папку F:\utils\arduino-0016 (F: у меня основной жесткий)

    • IDE не получается создать папку для настроек и скетчей — возможно из-за ограничения прав на запись или путь до домашнего каталога содержит кириллицу. Но версия 0016 уже устарела, поэтому рекомендую попробовать более свежую версия Arduino IDE, которую можно найти на официальном сайте — arduino.cc/en/Main/Software

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

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака телеприсутствие управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение