Знакомство с Arduino

Знакомство с Arduino

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

Распаковал плату, нашел подходящий USB-кабель, скачал с сайта Arduino IDE, подключил плату с помощью USB-кабеля к ноутбуку. Загорелась лампочка «On» — уже неплохо.

Arduino UNO SMD R3

К слову, мне досталась версия Arduino Uno SMD Version на микроконтроллере ATmega328.

Естественным первым желанием было подключение светодиодов, чтобы они мигали в соответствии с самописной программой. С помощью многичисленных пособий в интернете написал простую программу в Arduino IDE. К слову, Arduino ипользует язык Processing, который является, строго говоря, расширенным языком C/C++.

 Код моей первой Arduino программы таков:

int ledYellow = 13;  //Номер порта (видимо, самого Arduino)
int ledRed = 11;  
int ledGreen = 8;

// Эта функция вызывается при нажатии Reset.
void setup() {                
  // Инициализация отдельных портов на вывод.
  pinMode(ledYellow, OUTPUT);
  pinMode(ledRed, OUTPUT);
  pinMode(ledGreen, OUTPUT);
}

// Бесконечный главный цикл.
void loop() {
  digitalWrite(ledYellow, HIGH);   // Включить светодиод
  digitalWrite(ledRed, HIGH);
  delay(50);                       // Задержка на 50 мс.
  digitalWrite(ledYellow, LOW);    // Выключить светодиод.
  delay(450);
  digitalWrite(ledRed, LOW);
  digitalWrite(ledGreen, HIGH);
  delay(2000);
  digitalWrite(ledGreen, LOW);
  delay(2000);
}

Следующий шаг — загрузка программы в микроконтроллер. В случае с Arduino мне не понадобилось ничего, кроме USB-кабеля и Arduino IDE. Прямо в окне, где пишется исходный код, есть кнопка, нажатие которой приводит к загрузке написанной программы в микроконтроллер. На той плате, что оказалась у меня в наличии, используется еще один микроконтроллер Atmel AVR. Его задачей является преобразование последовательного сигнала с USB в паралелльный сигнал на основной (рабочий) микроконтроллер. Т.е. можно сказать, что Arduino Uno имеет свой встроенный ISP.

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

Arduino UNO SMD R3 в сборке

Светодиоды сразу заморгали в соответствии со значениями, выставленными в программе: не особо красиво и даже немного напрягающе, но, тем не менее, корректно и в соответствии с ожиданиями.

Из плюсов (установленных на скорую руку) отмечу:

  • действительно быстрый старт,
  • бесплатную IDE,
  • дешевизну платы (€11),
  • отсутствие проблем с загрузкой программы на микроконтроллер прямо из IDE,
  • наличие ICSP штекеров, которые дают надежду на то, что эту плату можно программировать не только из Arduino IDE, но и обычным ISP-программатором.

Конечно же, не обошлось и без минусов:

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

Следующие шаги в знакомстве с AVR с помощью Arduino будут:

  • вставить ассемблерный код под конктреную модель микроконтроллера в код в Arduino IDE,
  • запрограммировать Arduino помощью внешнего ISP-программатора в обход Arduino IDE.

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