Практическое программирование Arduino/CraftDuino — начало


У нас уже была серия статей про программирование Arduino/Freeduino/CraftDuino. Там мы рассмотрели структуру программы, константы и специфичные для Arduino функции, которые собственно и составляют язык Wiring.

Теперь же настала пора практических занятий 🙂

0. Начало

Пожалуй, всё же стоит обозначить элементы управления Arduino IDE
Arduino IDE

Итак, слева направо:

компиляция (оригинальное название — проверка) кода
— стоп (остановка монитора COM-порта)
— новый скетч
— открыть скетч
— сохранить скетч
загрузить скетч в микроконтроллер Arduino/Freeduino
монитор последовательного (COM) порта

Самые важные для нас – первая и две последние кнопки 🙂

Т.о. цикл разработки скетча для Arduino можно представить так:
цикл разработки скетча для Arduino

Написание кода – компиляция – загрузка в МК.

Кажется — всё просто 🙂
Попробуем снова загрузить Blink 🙂
Открываем тестовый скетч из Examples — Digital — Blink
и нажмём кнопку компиляции

Компиляция прошла без ошибок о чём нам и сообщают – «Done compiling» 🙂

Остаётся подключить нашу ардуину к питанию и COM-порту и нажать кнопку выгрузки скетча на МК.
Во время выгрузки будут мигать светодиоды Rx и Тx – сигнализирующие приём и передачу сообщений через последовательный интерфейс ардуины 🙂
Если выгрузка прошла успешно – мы получим сообщение: «Done uploading.»

Т.к. джампер на плате установлен в Autoreset enable плата сама перезагрузится, произойдёт заливка скетча, снова перезагрузка и через 10 секунд ардуина начнёт весело мигать светодиодом 🙂

Впрочем, светодиод даже не обязательно вставлять в разъём – на плате уже есть сигнальный светодиод, подключённый к 13-му цифровому порту ардуины через ограничительный резистор.

Используя провода, изготовленные из витой пары,

схему можно перенести на макетную плату.

А если всё делать по-честному и подключать светодиод через ограничительный резистор, то получится такая простейшая схема:

,которая на макетной плате будет выглядеть так:

Теперь немножко переделаем скетч Blink т.о., чтобы плата сообщала нам через COM-порт когда светодиод горит, а когда нет.
Для этого нужно добавить всего три строчки кода:

int ledPin = 13;                

void setup()                   
{
  pinMode(ledPin, OUTPUT);      
  Serial.begin(9600);     // инициализация работы с COM-портом
}

void loop()                     
{
  digitalWrite(ledPin, HIGH);   
  Serial.print("H");      // светодиод горит – пишем H
  delay(1000);                  
  digitalWrite(ledPin, LOW);    
  Serial.println("L");    // светодиод погасили – пишем L
  delay(1000);                  
}

Компилируем и загружаем скетч в МК.

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

Ура! Работает 🙂
Сообщения из последовательного порта можно смотреть любой терминальной программой, например tutty:

выбираем наш COM-порт и любуемся:

Но что это – при любой новой попытке просмотреть сообщения COM-порта наша плата перезагружается!
Всё дело в джампере Autoreset enable, который так удобен при загрузке новых скетчей 🙂
Если джампер снять, то теперь каждое новое подключение к последовательному порту не будет вызывать перезагрузку ардуины, но новые скетчи придётся загружать после ручного нажатия на кнопку Reset, расположенную на плате.

читать далее: 1. Цифровой ввод — кнопка

По теме
Подготовка к работе с Arduino/CraftDuino
Программирование Arduino — статьи.
Книги про Arduino
книга на русском языке: Блокнот программиста Arduino (PDF 1.3 Mb)
Шпаргалка по Arduino
Возможные ошибки при работе с Arduino
Arduino, термины, начало работы
Разновидности плат Arduino, а также про клоны, оригиналы и совместимость
КМБ для начинающих ардуинщиков
Состав стартера (точка входа для начинающих ардуинщиков)


14 комментариев на «“Практическое программирование Arduino/CraftDuino — начало”»

    • сковырнуть конденсатор CRS или порезать дорожку идущую к нему
      (лучше порезать — потом восстановить проще будет, при желании=)
      както так:

    • спасибо, пока правда воспользуюсь программным способом, всё равно свой софт писать

  1. Помогите, пожалуйста.
    Ubuntu 10.10
    Библиотека arduino 22
    Запускаю Example-Servo-Knob
    Отправляю на плату, а в ответ

    In file included from Knob.cpp:4:
    /home/sergei/arduino-0022/libraries/Servo/Servo.h:48:22: error: inttypes.h: Нет такого файла или каталога
    In file included from Knob.cpp:6:
    /home/sergei/arduino-0022/hardware/arduino/cores/arduino/WProgram.h:4:20: error: stdlib.h: Нет такого файла или каталога
    /home/sergei/arduino-0022/hardware/arduino/cores/arduino/WProgram.h:5:20: error: string.h: Нет такого файла или каталога
    /home/sergei/arduino-0022/hardware/arduino/cores/arduino/WProgram.h:6:18: error: math.h: Нет такого файла или каталога
    /home/sergei/arduino-0022/hardware/arduino/cores/arduino/WProgram.h:8:27: error: avr/interrupt.h: Нет такого файла или каталога
    In file included from /home/sergei/arduino-0022/hardware/arduino/cores/arduino/WProgram.h:10,
    from Knob.cpp:6:
    /home/sergei/arduino-0022/hardware/arduino/cores/arduino/wiring.h:28:20: error: avr/io.h: Нет такого файла или каталога
    In file included from /home/sergei/arduino-0022/hardware/arduino/cores/arduino/WProgram.h:13,
    from Knob.cpp:6:
    /home/sergei/arduino-0022/hardware/arduino/cores/arduino/WCharacter.h:23:19: error: ctype.h: Нет такого файла или каталога

    Где же все эти файлы брать???

    • возможно, поможет страничка:
      http://www.arduino.cc/playground/Linux/Debian
      скорее всего проблема в зависимостях:

      sudo apt-get install openjdk-6-jre gcc-avr avr-libc avrdude

      так же, нашлось небольшое руководство:

      Here is a quick tutorial to get Arduino up and running on Ubuntu 10.04:
      1. Download Arduino 00-22 — arduino.googlecode.com/files/arduino-0022.tgz
      2. Leave it in your Downloads folder
      3. Open Terminal
      4. Type sudo apt-get install gcc-avr avr-libc to install the compiler and libraries
      5. Type cd ~/Downloads to go to your Downloads folder
      6. To untar the file, type tar -vxzf arduino-0022.tgz
      7. To change directory to replace Serial library, type cd arduino-0022/lib
      8. To backup the original lib, type mv librxtxSerial.so librxtxSerial.so.orig
      9. Type find / -ls 2>&1 |grep -i librxtxSerial
      10. Type mv librxtxSerial.so.orig librxtxSerial.so
      11. To move up one directory, type cd…
      12. To execute Arduino, type ./arduino

    • нашел ответ, я разорвал цепь, но теперь не хотят загружаться скетчи

    • нажимаю кнопку аплоад, потом жму ресет, идет компилинг но полностью скетч не загружается

    • Жать надо позже, когда мигнёт светодиод RX.
      Но попасть в нужный момент может оказаться не так просто=)
      Дрампер можно запаять — надо загрузить — замкнули, не нужен авторезет — разомкнули, как на крафтдуино=)

    • А с какой целью, позвольте полюбопытствовать?

    • Припаял я переключатель.
      У меня почему то при заливки выше приведенного скетча программы Tutty ничего не показывал думал из за Autoreset enable, но в итоге все равно ничего не показывает, хотя встроенная консоль IDE все отображает.

  2. Зугрузил скетч с посылкой данных в терминал, видно как led мигает, идет передача. Гаснет-идет передача. Но монитор порта ничего не выводит. Tutty тоже. baud вна мониторе стоит 9600. Что делать?

    • если сам порт выбран правильно, то всё должно работать 🙂

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

Arduino

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

Разделы

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

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

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

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