Файл: С чего начинаются роботы. О проекте Arduino для школьников (В.Н. Гололобов, 2011).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 1226

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Глава 4. Введение в язык программирования Arduino

С этим вопросом поможет разобраться картинка, которую я взял с сайта: http://robocraft.ru/.

Рис. 4.1. Расположение и назначение выводов контроллера и модуля Arduino

Все выводы моего модуля CraftDuino промаркированы, так что найти нужный вывод не составит труда. Можно подключать кнопку и резистор и проверять работу программы. Кстати, на вышеупомянутом сайте RoboCraft весь процесс отображён на картинках (но программа использует не совсем такие выводы!). Советую посмотреть.

Многие микроконтроллеры в своём составе имеют дополнительные аппаратные устройства. Так Atmega168, на основе которого собран модуль Arduino имеет UART, встроенный блок для связи с другими устройствами с помощью последовательного обмена данными. Например, с компьютером через COM-порт. Или с другим микроконтроллером с помощью его встроенного блока UART. Есть ещё и аналого-цифровой преобразователь. И формирователь широтноимпульсной модуляции.

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

// Fading LED by BARRAGAN <http://people.interaction-ivrea.it/h.barragan> int value = 0; // переменная для хранения нужного значения

int ledpin = 9; // светодиод подключен к digital pin 9

void setup()

{

// Нет необходимости вызвать функцию pinMode

}

void loop()

{

for(value = 0 ; value <= 255; value+=5) // постепенно зажигаем светодиод

{

analogWrite(ledpin, value); // значение вывода (от 0 до 255)

delay(30);

// ждѐм :)

}

for(value = 255; value >=0; value-=5) // постепенно гасим светодиод

{

analogWrite(ledpin, value); delay(30);

}

39

Глава 4. Введение в язык программирования Arduino

}

Если в предыдущей программе новой для нас была функция digitalRead(inPin), чтение цифрового ввода, то в этой программе новая для нас функция analogWrite(ledpin, value), хотя параметры этой функции — уже знакомые нам переменные. Об использовании аналогового входа, использовании АЦП (аналого-цифрового преобразователя), мы поговорим позже. А сейчас вернёмся к общим вопросам программирования.

Программирование это то, что доступно всем, но потребуется время, чтобы освоить и программирование, и какой-либо язык программирования. Сегодня есть ряд программ, помогающих освоить именно программирование. И одна из них имеет непосредственное отношение к модулю Arduino. Называется она Scratch for Arduino или сокращённо S4A. Найти и скачать эту программу можно по адресу: http://seaside.citilab.eu/scratch/arduino. Я не знаю, как точно переводится название программы, но «to begin from scratch» переводится, как «начать с нуля».

На сайте проекта S4A есть версии для Windows и Linux, но для последней операционной системы готовая к установке программа в версии дистрибутива Debian. Не хочу сказать, что её нельзя использовать с другими дистрибутивами Linux, но вначале посмотрим, как работать в программе с модулем Arduino в Windows.

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

Рис. 4.2. Переключатель языков интерфейса программы

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

40


Глава 4. Введение в язык программирования Arduino

Рис. 4.3. Список языков для использования в интерфейсе программы

… отмеченном, как «больше…».

Если ничего не предпринимать, то надпись в правом окне «Searching board…» остаётся, но модуль не находится. Чтобы модуль Arduino подключить к программе S4A, следует загрузить с сайта проекта ещё кое-что.

Рис. 4.4. Файл для загрузки в модуль Arduino для S4A

Этот файл не что иное, как программа для Arduino (Sketch). То есть, текстовый файл, который можно скопировать в редактор Arduino, откомпилировать и загрузить в модуль. После выхода из программы Arduino можно запустить программу S4A и теперь модуль находится.

41

Глава 4. Введение в язык программирования Arduino

Рис. 4.5. Подключение модуля к программе

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

42


Глава 5. Arduino, визуальное программирование

Глава 5. Arduino, визуальное программирование

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

Начинаю я этот процесс с загрузки версии для Debian на сайте разработчиков: http://seaside.citilab.eu/scratch/arduino. Все загружаемые файлы располагаются по завершении загрузки в папке «Загрузка» или «Downloads». Архивированные файлы, предназначенные для Linux, распаковываются менеджером архивов. Скачанный мной в openSUSE файл имеет расширение deb, но, используя Ark, тот самый менеджер архивов, его можно распаковать. В openSUSE с графическим менеджером KDE 4 для этого достаточно щёлкнуть правой клавишей мышки по файлу и выбрать пункт выпадающего меню «Распаковать во вложенную папку». В итоге появляется папка с именем S4A.

Заглянем в неё.

Рис. 5.1. Содержимое скачанной папки S4A

Два файла с расширением tar.gz подлежат дальнейшей разархивации.

Рис. 5.2. Выпадающее меню работы с архивированными файлами

В результате рядом с архивами появляется ряд файлов и папка, озаглавленная «usr». Из опыта работы с Linux я знаю, что в этой папке могут находиться файлы, которые при установке размещаются по адресу /usr корневой файловой системы. Если открыть эту папку, то,

43

Глава 5. Arduino, визуальное программирование

действительно, в ней можно увидеть еще три папки.

Рис. 5.3. Содержание распакованного файла

Эти три папки соответствуют разделам, которые можно увидеть, если открыть в файловом менеджере раздел «Корневая папка» в директории /usr.

Рис. 5.4. Разделы директории usr файловой системы

Содержимое, скачанное ранее, папок bin, lib и share, как я полагаю, следует разместить в папки, отмеченные выше. Но, конечно, простому пользователю менять что-то в файловой системе никто не позволит. Поэтому в разделе основного меню «Система» находим пункт «Файловый менеджер», открывающий новое подменю, где есть «Менеджер файлов (с правами администратора)». Этот менеджер позволит перенести все нужные файлы в операционную систему. Ничего не выдумывая, открывая параллельно папки в двух проводниках, просто последовательно открывать нужные (они все названы) папки до появления файлов, а файлы копировать.

44


Глава 5. Arduino, визуальное программирование

Рис. 5.5. Перенос файлов программы в openSUSE

Особенно внимательно следует отнестись к папке share, поскольку она имеет много вложенных папок, и соответствующие папки следует отыскивать в файловой системе.

Завершив копирование, можно попытаться отыскать программу в основном меню. И, впрямь, на закладке «Приложения» в разделе «Разработка» (у меня ещё один раздел «Другие программы») появляется программа S4A. И её даже можно запустить. Но она после нескольких движений мышкой начинает виснуть...

Втерминале, а в openSUSE есть терминал с правами суперпользователя; от имени суперпользователя, предварительно подключив модуль Arduino, запускаем программу. И она работает. Теперь её можно запустить обычным образом.

Вдругих дистрибутивах Linux операции схоже с теми, что описаны выше, отличия не столь значительны. Хотя в Fedora 14 я просто сменил пользователя, войдя в систему под root, что делать, конечно, не следует, но так было проще всё разместить в нужных местах.

Установив программу в Linux, посмотрим, а для чего мы её устанавливали?

Во-первых, программа работает с модулем, показывая, что происходит на аналоговых и цифровых входах модуля. Что уже неплохо. Но не это главное. Главное, во-вторых — программа позволяет собирать программу, а не кодировать на языке Arduino.

Когда программа начинает работать, в левом окне есть ряд элементов, которые можно, подцепив мышкой, перенести в среднее окно — рабочее «сборочное» поле. Перенесём так элемент, который называется Start.

45

Глава 5. Arduino, визуальное программирование

Рис. 5.6. Перенос нужных программных элементов

Теперь, нажав клавишу с надписью «контроль» в окошке чуть выше, получим ряд новых элементов.

Рис. 5.7. Список элементов в группе «Контроль»

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

46

Глава 5. Arduino, визуальное программирование

Рис. 5.8. Добавление элементов в программу

Вернёмся к набору элементов, с которого начинали, нажав на клавишу «движение», и выберем элемент «digital 13 on», который перенесём и положим внутрь предыдущего.

Рис. 5.9. Команда включения цифрового вывода

Из набора элементов «контроль» возьмём элемент «ждать 1 секунду», который вставим внутрь элемента «всегда» под элемент «digital 13 on». Чтобы ускорить этот процесс, вставим элемент ожидания ещё раз, вернёмся к элементам движения и добавим элемент «digital 13 off» между двумя элементами ожидания.

Рис. 5.10. Программа Blink в графическом виде

Вам эта конструкция ничего не напоминает? Когда мы начинали описывать первую программу обычным языком, мы так и записывали её.

Дважды щёлкните по элементу «start» левой клавишей мышки и посмотрите на модуль Arduino

— молчавший до сих пор светодиод на выводе 13 исправно мигает раз в секунду.

Мы собрали программу, запустили её и заставили работать модуль согласно этой программе. И мы не написали ни строчки кода. Именно по этой причине я предпочитаю различать программирование и написание программного кода.

47


Глава 5. Arduino, визуальное программирование

Но, может быть, это работает ранее загруженная программа, а не нами собранная?

Остановим работу программы, вновь дважды щёлкнув мышкой по элементу «start». Щёлкнем левой клавишей по единичке элемента «ждать 1 секунду».

Рис. 5.11. Изменение параметров программных элементов

Впечатаем цифру 5 (как на нижнем элементе). Запустим программу... и убедимся, ничего мы не перепутали, светодиод мигает с интервалом раз в 5 секунд!

Мы не проверяли работу цифрового входа в «живом» виде. Не пора ли это сделать?

Соберём программу в S4A. Первые «кирпичики» те же, что и в предыдущей программе. Далее... нам понадобится выполнить условие: если кнопка нажата, включить светодиод, иначе выключить. Такой элемент есть — это «если... или...». В его верхней части есть «гнездо», куда можно вставить нужное нам условие «цифровой вход...».

Рис. 5.12. Добавление условия в элемент if ветвления программы

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

Рис. 5.13. Окончательное формирование программы

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

48

Глава 5. Arduino, визуальное программирование

Пора перейти к проверке. Но прежде небольшое предупреждение.

На схеме, приведённой в примерах, кнопка соединяется с выводом +5 В. Я бы советовал включить её несколько иначе.

Особенно, если вы проверяете все «на весу». При случайной ошибке может получиться так, как было у меня, из модуля пойдёт дымок, который очень подпортит настроение. А самый правильный путь — использовать макетную плату с переходными разъёмами (для Arduino Nano, думаю, найдётся подходящая панелька под микросхему).

Проверив правильность соединений на макетной плате, подключив к ней модуль Arduino, можно включить его в разъём USB компьютера и запустить программу S4A. Обратите внимание — когда вы между цифровым входом и землёй включили резистор 10 кОм, показания (в правом окошке программы) перестали случайным образом меняться между «false, ложно» и «true, истинно». Запускаем нашу программу двойным щелчком по элементу «start», добавим, зайдя в раздел основного меню «Редактировать», пошаговое выполнение.

Рис. 5.14. Добавление пошагового выполнения в отладочную процедуру

Можно ещё в пункте «установить единичный шаг...» выбрать скорость выполнения. И теперь, пока кнопка не нажата, мы видим, что светодиод не горит, а программа выполняется только в той части, где это задано.

49