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

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

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

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

Добавлен: 16.06.2025

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

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

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

Приложение А. О языке программирования Arduino

вход от переменного резистора

Переменные резисторы включают фотоприѐмники, термисторы, тензодатчики и т.д. Данный пример использует функцию чтения аналогового значения и задаѐт время паузы. Этим управляется скорость, с которой меняется яркость светодиода

LED.

int ledPin = 9;

// PWM для LED

int analogPin = 0;

// переменный резистор на аналоговом выводе 0

void setup () {}

// setup не нужен

void loop ()

{

for (int i=0; i<=255; i++)

// увеличивающееся значение для i

{

analogWrite (ledPin, i);

// устанавливаем уровень яркости по i

delay (delayVal());

// берѐм значение времени и паузы

}

for (int i=255; i>=0; i--)`

// уменьшающееся значение для i

{

analogWrite (ledPin, i);

// устанавливаем уровень яркости по i

delay (delayVal());

// берѐм значение времени и паузы

}

int delayVal()

{

int v;

// создаѐм временную переменную

v = analogRead (analogPin);

// читаем аналоговое значение

v /= 8;

// конвертируем 0 – 1024 в 0 – 128

return v;

// возвращаем окончательное значение

}

приложение | 154


Приложение А. О языке программирования Arduino

серво вывод

Любительские сервомашинки — это разновидность полу-автономного моторредуктора, который может поворачиваться на 1800. Всѐ, что нужно — это отправлять импульсы каждые 20 мС. В данном примере используется функция servoPulse для поворота мотора от 100 до 1700 и обратно.

int servoPin = 2; // привод соединѐн с цифровым выводом 2 int myAngle; // угол привода грубо 0 – 180

int pulseWidth; // переменная функции servoPulse() void setup ()

{

pinMode (servoPin, OUTPUT); // устанавливаем вывод 2 на выход

}

int servoPulse (int servoPin, int myAngle)

{

pulseWidth (myAngle * 10 + 600); // определяем паузу

digitalWrite (servoPin, HIGH);

// устанавливаем привод в HIGH

delayMicroseconds (pulseWidth); // микросекундная пауза

digitalWrite (servoPin, LOW);

// устанавливаем привод в LOW

}

void loop ()

{

// привод стартует с 10 и поворачивается до 170 градусов

for (myAngle = 10; myAngle <= 170; myAngle++)

{

servoPulse (servoPin, myAngle);

// отправляем вывод и угол

delay (20);

// обновляем цикл

}

// привод стартует со 170 и поворачивается до 10 градусов for (myAngle = 170; myAngle >= 10; myAngle--)

{

servoPulse (servoPin, myAngle);

// отправляем вывод и угол

delay (20);

// обновляем цикл

}

}

приложение | 155

Приложение А. О языке программирования Arduino

приложение | 156


Приложение Б. Работа с модулем Arduino в других средах разработки

Приложение Б. Работа с модулем Arduino в других средах разработки

Внимание! При работе с модулем Arduino в других средах разработки следует внимательно относиться к конфигурации микроконтроллера (Fuses). До тех пор, пока вы точно не знаете, к чему может привести изменение конфигурации, настоятельно советую загружать в модуль только программу (Flash).

В основном речь пойдёт о программах для Windows. Их установку и работу в Linux мы рассмотрим отдельно, как и программы для Linux, работающие с микроконтроллерами AVR. Советы по установке программ и самим программам можно найти на сайте RoboCraft, о котором часто упоминалось в книге, и на сайте DI HALT'а «Электроника для всех»:

http://easyelectronics.ru/

Первая из программ, это AVR Studio фирмы Atmel. Следуя советам бывалых, перед установкой этой программы следует установить программу WinAVR, которая и сама позволяет писать программы на Си и ассемблере.

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

Итак, установив обе программы в Windows, я использую Vista и версию AVR Studio 4.18, можно запускать программу, которая появится в основном меню в разделе Atmel AVR Tools. При запуске программы вначале открывается диалог, позволяющий создать новый проект или открыть существующий. От этого диалога можно отказаться, но не советую это делать в самом начале работы с программой.

Рис. 1. Диалог выбора продолжения работы с AVR Studio

Если снять галочку рядом с надписью «Show dialog at startup» (показывать диалог при запуске), то диалог не будет появляться.

Выбрав кнопку (в верхней части) «New Project», вы переходите в окно помощника создания нового проекта. Поначалу, пока не освоитесь полностью, обратите внимание на отмеченные ниже пункты:

приложение | 157

Приложение Б. Работа с модулем Arduino в других средах разработки

Рис. 2. Выбор языка программирования и атрибутов создаваемого файла

Отметив AVR GCC, вы предполагаете работу с языком Си. Проверьте, стоит ли галочка опции «Create folder». Иногда её нет, и файл сохраняется вместе со всеми остальными, что создаёт через некоторое время трудности в отыскании нужного файла. И местоположение файла, играет ли это роль в данном случае, не берусь судить, но лучше размещать свои проекты при работе с программами разработки в директориях, названных одним словом, написанным латиницей. Так будет меньше проблем. Например, некоторые программы не могут работать, если путь к нужным им файлам выглядит как «Program Files». Или, если ваша папка с документами обозначена как «Документы». Можно, конечно, проверить это, но лучше сразу вырабатывать привычку избегать подобных осложнений. Иногда они выявляются легко, но в ряде случаев сообщения об ошибках столь туманны, что и не сразу поймёшь, в чём дело.

Закончив с атрибутикой файла, можно нажать кнопку «Finish», если вам ничего больше не нужно, но лучше нажать кнопку «Next>>».

Рис. 3. Выбор отладочных средств и модели микроконтроллера

В этом окне диалога вы выбираете отладочные средства и модель вашего микроконтроллера. Если у вас есть программа Proteus, очень хорошая, но не бесплатная, то выбирайте Proteus VSM Viewer.

приложение | 158


Приложение Б. Работа с модулем Arduino в других средах разработки

Завершив выбор, можно закончить работу помощника создания нового проекта (Finish).

Я не буду рассказывать о том, как работать с AVR Studio – есть руководство, есть много сайтов в Интернете, где хорошо рассказывается об этом. То же и о работе с компилятором AVR GCC. Приведу только один пример «классической» программы для модуля Arduino.

Рис. 4. Первый проект для модуля Arduino

Текст программы я приведу ещё раз.

#include <avr/io.h> #include <util/delay.h> #define F_CPU 16000000UL

int main( void )

{

DDRB |= 1<<5; while(1)

{

PORTB |= 1<<5; _delay_ms(5000); PORTB &= ~(1<<5); _delay_ms(5000);

}

return 0;

}

Программу я «срисовал», выбрав самую простую. Первый оператор в основной программе устанавливает вывод RB5 (вывод 13 модуля Arduino) на выход. В цикле while этот вывод переводится в состояние высокого уровня, а после паузы в 5 секунд, в низкое.

Написав программу, в разделе «Build» основного меню выбираем команду «Build», и транслируем текст. Если нет ошибок, то вы получаете сообщение об удачном завершении, если есть ошибки, то они будут выведены с предупреждающими красными пометками и расшифровкой характера ошибки. Нам нужен hex-файл, который вы найдёте в папке проекта, где появится папка «default».

приложение | 159

Приложение Б. Работа с модулем Arduino в других средах разработки

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

Среда разработки AVR Studio позволяет написать код программы и отладить его. Но она предназначена и для загрузки программы в микроконтроллер. Однако, хотя в списке программаторов есть stk500, использовать эту возможность мне не удалось.

Рис. 6. Список программаторов

Найти этот список можно выбрав соединение с программатором.

Рис. 7. Переход к программатору

Возможно, проблема кроется в скорости работы с программатором. Вместе с тем, если вы вспомните, как мы поступили с hex-файлом для превращения модуля Arduino в осциллогаф, то можете аналогичным образом загрузить и полученную в AVRStudio программу. Программатор avrdude по мнению многих очень мощный. А его единственный недостаток, по мнению некоторых (вроде меня), в отсутствии пользовательского интерфейса. Но, читая статьи на вышеуказанных сайтах, я выбрал достаточно удобную оболочку. Называется она SinaProg. Она не требует установки на компьютер, вы её можете расположить по своему усмотрению там, где вам удобнее. Единственное, на что я советую обратить внимание сразу – версия программы. В версии 1.4.5.10 есть возможность изменить скорость работы с портом.

приложение | 160