Как программировать ардуино для начинающих
Перейти к содержимому

Как программировать ардуино для начинающих

  • автор:

Ардуино для начинающих. Урок 3. Первые шаги

Это первое обучающее видео из цикла уроков по arduino для начинающих. В этом уроке мы узнаем: как подключить ардуино к компьютеру, как загрузить прошивку на микроконтроллер. А так же мы напишем свою первую прошивку для Arduino.

В этом уроке нам понадобится:

Arduino uno отлично подходит для начинающих. В комплекте есть провод: Купить
Макетная плата с модулем питания и проводами: Купить
Набор светодиодов из 100 штук разных цветов: Купить
Набор резисторов из 100 штук разных номиналов Купить

Как видите, список не маленький. И это только для первого урока. Если вы хотите купить все сразу не только для этого урока, но и для последующих то мы советуем вам купить полный стартовый набор arduino.

Ардуино для новичков.

Если у вас уже есть плата ардуино, то вам необходимо скачать и установить на свой компьютер Arduino IDE. Это простая и удобная программа для написания и отладки прошивок для ардуино. Я уже публиковал статью по установке и настройке Arduino IDE. Там все подробно расписано.

Если при подключении вашей ардуино в USB компьютер пишет, что устройство не опознано, это значит что вам надо установить драйвер ch340g.

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

 // Однострочный комментарий /* Многострочный комментарий */ int ledPin = 13; // Команды в функции setup выполняются только 1 раз при включении или после перезагрузки void setup() < pinMode(ledPin, OUTPUT); >// Инструкции в этой функции будут выполняться по кругу постоянно void loop()

Символы «//» означают однострочный комментарий. Это значит что строка после двух слэшей выполняться не будет. Комментарии можно использовать для описания действий программы для наглядности.
Или для скрытия части кода при отладке. Для скрытия кода чаще используется многострочный комментарий начинающийся с комбинации «/*» и заканчивающийся «*/».

Строка «int ledPin = 13;» означает, что мы объявляем переменную с типом данных int, именем ledPin и значением 13. Переменные используются для того чтобы код был более понятен. Поэтому надо называть переменные понятными именами, описывающими их содержимое. Так же переменные нужны для легкого изменения кода. В нашем маленьком примере переменная ledPin используется 3 раза. Если мы подключим внешний светодиод на другой пин и захотим использовать этот скетч, то нам надо будет только поменять значение переменной в одном месте, а не искать по всей программе и менять значения. Понятный и хорошо оформленный код, с комментариями и говорящими названиями переменных легко можно использовать в других проектах. Это позволит упростить и ускорить разработку прошивок.

На этом мы закончим наш урок по ардуино. Надеюсь вам все было понятно. Если нет, то вы можете задавать свои вопросы в комментариях ниже.

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

Для отправки комментария вам необходимо авторизоваться.

Все уроки по ардуино

Однажды появилась необходимость собрать все уроки, обучающие материалы (tutorials) с habrahabr и geektimes в одном месте и немного их систематизировать. В этом сборнике обучаек представлены более 100 статей на тему ардуино с пометкой «tutorial», либо содержащие несложные для новичков проекты на ардуино, а также немного видеоуроков по смежным темам. Статьи разделены на 10 тематик по сферам применения собранных устройств. Также хочется напомнить, что весь обучающий материал, опубликованный на habrahabr и geektimes является интерактивным: в любой момент можно задать вопрос автору в комментариях к статье. Как правило авторы на них отвечают. Этот сборник будет дополняться новыми обучайками (tutorials) по мере их публикации.

1. Знакомство, драйвера, среда разработки.(кликните, чтобы развернуть)

2. Роботы, радиоуправляемые машинки, лодки, танки.

3. Умный дом. Автоматизация в быту.

4. Ардуино в автомобиле.

5. Окружающая среда. Климат. Дача. Теплицы.

6. Велопроекты.

7. Бесполезные поделки, развлечения.

8. Реверс-инжиниринг и безопасность.

9. Автоматизация производства.

10. Здоровье. Медицина. Спорт.

P.S. Пишите в комментариях какие обучающие статьи с habrahabr и geektimes нужно добавить и в какой раздел.
P.P.S. Онлайн курс по ардуино на гиктаймс здесь.

Первые шаги в работе с Arduino

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

Мы будем разбирать платформу Arduino от покупки самого контроллера, до «заливания» кода программы (далее скетч*) и управления собственной моделью при помощи телефона на Android; далее напишем свой алгоритм, по которому наш робот будет сам выбирать путь, куда ему двигаться (следующий урок).

Вот такой робот у нас получится по истечению всех уроков (прошу прощения за качество, это стоп-кадр видео):

image

1. Покупка деталей
2. Разбор каждой позиции
3. Сборка и программирование модели
4. Подключение к Android

1. Покупка деталей

Для начала следует выбрать контроллер. Большой выбор есть на официальном сайте Arduino, но в этом вопросе можно немного сэкономить, заказав аналогичную и полностью совместимую модель Freeduino.
1) Для данного проекта нам отлично подойдет модель UNO. Все параметры отлично подходят под наши критерии — это средний размер, возможность подключать различные модули, шилды, да и цена не так сильно кусается, как на более «старших» моделях. Заказывал её тут, пришла за 3 недели (г. Волгоград), качество отличное, проблем в эксплуатации не было.
2) Далее заказываем расходные материалы, шилды, модули, которые понадобятся нам для сборки. Для управления моторами нам, соответственно, понадобится следующая деталь: Motor Shield заказывал здесь. Доставили тоже быстро, упаковано всё было хорошо, без повреждений.
3) Для связи телефона с нашим роботом нам нужен Bluetooth-модуль, который заказывал вот тут. Нареканий в работе не наблюдал.
4) Конечно же, всё это должно иметь платформу, на которую мы всё это закрепим. Воспользуемся готовым вариантом.

Это все детали, которые жизненно необходимы для работы нашего робота, но есть ещё несколько вещей, которые, по моему мнению, здорово упрощают жизнь и работу с Arduino. Я решил отказаться от батареек, которыми питают саму платформу, я заказал себе маленький Power Bank, при помощи которого всё это дело запустится. Вот ссылка. На момент заказа курс был около 35р, поэтому все детали мне достались на много дешевле, чем на момент написания данного урока.

2. Разбор каждой позиции

Мы заказали детали и, пока дожидаемся извещения, чтобы скорее забрать наш заказ, можем более подробно изучить каждую позицию, да и вообще цель нашей работы.

Мы заказали Freeduino 2009 – аналог Arduino Duemilanove.

  • Микроконтроллер: ATmega328 (ATmega168 в ранних версиях платы)
  • Цифровые порты ввода/вывода: 14 портов (из них 6 с ШИМ-сигналом)
  • Аналоговые порты ввода: 6 портов
  • ППЗУ (Flash Memory): 32 K (16 К), из них 2 К используются загрузчиком
  • ОЗУ (SRAM): 2 Кбайт (1 Кбайт)
  • ПЗУ (EEPROM): 1024 байт (512 байт)
  • Тактовая частота: 16 МГц
  • Интерфейс с ПК: USB
  • Питание от USB, либо от внешнего источника, выбор с помощью перемычки

image

К данному модулю мы можем подключить до 4-х моторов, и программируя каждый на определенную мощность и скорость вращения. У данного модуля есть один минус- это отсутствие пинов, куда бы мы могли подключить последующию модули при помощи специальных кабелей, что мне немного усложнило задачу. Можно было заказать отдельно пины и перепаять их, но я решил просто припаять модули напрямую к motor shield.

Беспроводную связь нам обеспечит Bluetooth модуль, который имеет в комплекте провода для подключения к плате напрямую.

image

Платформа же имеет полный набор для сборки. В комплекте была даже отвертка, которой удобно собирать нашу модель.

image

3. Сборка и программирование модели

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

Bluetooth-модуль —> контроллер
VCC —> 5V
GND —> Gnd
TXD —> PIN-0
RXD —> PIN-1

Старайтесь не путать питание и землю, т.к. это может легко испортить ваши детали. Если деталь начала резко нагреваться, значит, вы что-то напутали.

image

Для программирования нам понадобится среда разработки Arduino — качаем.

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

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

#include // Подключаем библиотеку для управления двигателями #include // Подключаем библиотеку для работы с Serial через дискретные порты 

Далее создаем объекты для двигателей:

AF_DCMotor motor1(1); //канал М1 на Motor Shield AF_DCMotor motor2(2); //канал М2 на Motor Shield 

Канал M1 и M2 определяется легко- достаточно посмотреть на наш модуль и там около креплений с зажимами подписано M1, М2, М3, М4 соотвественно:

SoftwareSerial BTSerial(0, 1); // RX, TX, подключение БТ // Переменная для команд Bluetooth char vbt; //Переменные для запоминания скорости двигателей int vL, vR; /* Создаем переменную, на значение которой будет уменьшаться скорость при плавных поворотах. Текущая скорость должна быть больше этого значения. В противном случае двигатели со стороны направления поворота просто не будут вращаться */ int vspd = 200; void setup() < //Cкорость передачи данных по Bluetooth BTSerial.begin(9600); // Cкорость передачи данных по кабелю Serial.begin(9600); // Устанавливаем максимальную скорость вращения двигателей vspeed(255,255); >

Далее нам понадобится помощь приложения на Android, команды которого мы и будем принимать и обрабатывать.

В этой части мы просто описываем функционал программы (скорость, переменные).

void loop() < //проверяем наличие данных для передачи if (BTSerial.available()) < // Принимаем команды, преобразуем код в соответствующий символ vbt = (char)BTSerial.read(); // Вперед if (vbt == 'F') < vforward(); >// Назад if (vbt == 'B') < vbackward(); >// Влево if (vbt == 'L') < vright(); >// Вправо if (vbt == 'R') < vleft(); >// Прямо и влево if (vbt == 'G') < vforwardright(); >// Прямо и вправо if (vbt == 'I') < vforwardleft(); vforwardright(); >// Назад и влево if (vbt == 'H') < vbackwardleft(); >// Назад и вправо if (vbt == 'J') < vbackwardright(); >// Стоп if (vbt == 'S') < vrelease(); >// Скорость 0% if (vbt == '0') < vspeed(0,0); >// Скорость 10% if (vbt == '1') < vspeed(25,25); >// Скорость 20% if (vbt == '2') < vspeed(50,50); >// Скорость 30% if (vbt == '3') < vspeed(75,75); >// Скорость 40% if (vbt == '4') < vspeed(100,100); >// Скорость 50% if (vbt == '5') < vspeed(125,125); >// Скорость 60% if (vbt == '6') < vspeed(150,150); >// Скорость 70% if (vbt == '7') < vspeed(175,175); >// Скорость 80% if (vbt == '8') < vspeed(200,200); >// Скорость 90% if (vbt == '9') < vspeed(225,225); >// Скорость 100% if (vbt == 'q') < vspeed(255,255); >> > 

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

// Вперед void vforward() < vspeed(vL,vR); vforwardRL(); >// Вперед для RL void vforwardRL() < motor1.run(FORWARD); motor2.run(FORWARD); >// Назад void vbackward() < vspeed(vL,vR); vbackwardRL(); >// Назад для RL void vbackwardRL() < motor1.run(BACKWARD); motor2.run(BACKWARD); >// Влево void vleft() < vspeed(vL,vR); motor1.run(BACKWARD); motor2.run(FORWARD); >// Вправо void vright() < vspeed(vL,vR); motor1.run(FORWARD); motor2.run(BACKWARD); >// Вперед и влево void vforwardleft() < if (vL >vspd) < vspeed(vL-vspd,vR); >else < vspeed(0,vR); >vforwardRL(); > // Вперед и вправо void vforwardright() < if (vR >vspd) < vspeed(vL,vR-vspd); >else < vspeed(vL,0); >vforwardRL(); > // Назад и влево void vbackwardleft() < if (vL >vspd) < vspeed(vL-vspd,vR); >else < vspeed(0,vR); >vbackwardRL(); > // Назад и вправо void vbackwardright() < if (vR >vspd) < vspeed(vL,vR-vspd); >else < vspeed(vL,0); >vbackwardRL(); > // Стоп void vrelease() < motor1.run(RELEASE); motor2.run(RELEASE); >// Изменение скорости void vspeed(int spdL,int spdR) < if (spdL == spdR) < vL=spdL; vR=spdR; >motor1.setSpeed(spdL); motor2.setSpeed(spdR); > 

В этом видео я подключал просто пропеллер к разъему M1 и изменял код программы, оставив только движение «вперёд» и «назад»:

А вот такой робот получился по окончании нашего урока:

В следующей части я объясню, как построить логику робота, подключим к нему дальномер, при помощи которого он будет ориентироваться в пространстве.

Уроки Ардуино (Arduino) для начинающих

База уроков по Arduino На сайте появился отдельный большой раздел текстовых уроков – максимально подробные уроки по программированию Arduino!

ПОЛЕЗНЫЕ СТАТЬИ

УРОКИ ARDUINO

Об этой странице Здесь представлены видео уроки с канала Заметки Ардуинщика (цикл «Базовые уроки»), совмещённые с текстовым материалом. Также на сайте есть более подробные текстовые уроки × Закрыть это предупреждение.

15.01.2019 конспект был обновлён: поправлено оформление и добавлена информация!

Добро пожаловать в цикл “Уроки Ардуино с нуля, для чайников, школьников и домохозяек”, это официальная страница проекта “Заметки Ардуинщика“. Цикл охватывает все стандартные операторы и функции Ардуино и построен таким образом, что от выпуска к выпуску у зрителя идёт плавное формирование “базы”, каждый последующий урок (видео урок) содержит в себе информацию из предыдущих, то есть уроки усложняются и становятся комплексными.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *