Arduino IDE slide

Движение робота вперед, назад.

Описание Движение робота вперед, назад.

Мы предполагаем, что владелец конструктора уже знаком с контроллером Arduino и средой проектирования Arduino IDE. Поэтому в данном описании мы не будем рассказывать, как и где скачать и установить необходимые прораммы. 
Если вы с программированием Arduino сталкиваетесь в первый раз, пожалуйста познакомьтесь с подготовкой к работе на нашей странице:

http://startelectronics.ru/goods/Podgotovka-k-rabote-2
 
В гнезда блока управления R-5 устанавливается контроллер Arduino Nano. Поэтому и в настройках среды разработки Arduino IDE необходимо выбрать именно этот контроллер с процессором ATmega328

Arduino nano

Теперь уже приступаем непосредственно к программированию.
Программа для контроллера Ардуино обычно состоит из 3-х частей.
 
В первой части, как в обычной математической задаче описываются исходные данные. Мы присваиваем названия, назначение, функционал контактов контроллера. Записываем, какие библиотеки мы будем использовать в ходе выполнения программы.
 
Во второй части с названием Setup пишем уже непосредственно код программы. Но этот код исполняется только один раз за время работы программы. Это необходимо для того, что бы запрограммировать выходы, входы контроллера на все время действия программы
 
И третья часть программы loop представляет собой команды, которые исполняются процессором в течение всего периода работы процессора.
 
Рассмотрим простой пример кода для движения робота.
 
В первой части кода мы определяем, какими контактами платы Ардуино мы будем управлять драйвером и соответственно электромоторами,  придумаем название команд, что бы нам было понятно их назначение.
В блоке R-5 контакты Ардуино жестко подключены к входам драйвера.
Давайте посмотрим на рисунок ниже:

подключение ардуино


M_R_IN – вход драйвера, управляющий направлением вращения правого электромотора. Высокий уровень (HIGHT) – вращение вперед.
M_R_EN – вход драйвера, разрешающий вращение правого электромотора. Высокий уровень (HIGHT) разрешает вращение. При подаче на вход сигнала с широтно-импульсной модуляцией (ШИМ, PWM) вход управляет скоростью вращения.
M_L_IN вход драйвера, управляющий направлением вращения левого электромотора. Высокий уровень (HIGHT) – вращение вперед.
M_L_IN вход драйвера, разрешающий вращение левого электромотора. Высокий уровень (HIGHT) разрешает вращение. При подаче на вход сигнала с широтно-импульсной модуляцией (ШИМ, PWM) вход управляет скоростью вращения.
И у нас получается следующее:


Контакт Ардуино 2 – направление вращения правого мотора
Контакт Арудино 3 – разрешение вращения правого мотора. При работе ШИМ – регулировка скорости вращения.
Контакт Ардуино 4 – направление вращения левого мотора.
Контакт Ардуино 5 – разрешение вращения левого мотора. При работе ШИМ – регулировка скорости вращения.
 
Пишем код.


#define DIR_R   2 //  управлять направлением вращения правого мотора будем с контакта 2
#define SPEED_R  3  // управлять разрешением вращения и скоростью вращения правого //мотора  будем с контакта 3
#define DIR_L  4      //управлять направлением вращения левого мотора будем с контакта 4
#define SPEED_L 5 // управлять разрешением вращения и скоростью вращения левого //мотора будем с контакта 5
 
//В этой части кода больше не будем задавать ни каких параметров
 
 // приступаем ко второй части программы. Мы знаем, что в этой части кода команды //исполняются   только один раз

 
void setup()
{
  pinMode (DIR_R, OUTPUT); /
/ Драйвер управляется выходными сигналами с Ардуино.  
 //Поэтому мы определяем все контакты , как OUTPUT

  pinMode (SPEED_R, OUTPUT);
  pinMode (DIR_L, OUTPUT);
  pinMode (SPEED_L, OUTPUT);
}
 

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

void loop()
{
  digitalWrite (DIR_R, HIGH);
// Команда digitalWrite устанавливает на контакте 2 высокий 
  //уровень.  Для драйвера моторов это означает то, что мотор будет вращаться вперед
  digitalWrite (SPEED_R, HIGH); //  высокий уровень на контакте 3 разрешает драйверу
  //вращать электромотор

  digitalWrite (DIR_L, HIGH);
  digitalWrite (SPEED_L, HIGH);
  delay(1000);
// Вращаем 1 сек
 
  digitalWrite (DIR_R, HIGH);
  digitalWrite (SPEED_R, LOW);
// Низкий уровень запрещает вращение моторов
  digitalWrite (DIR_L, HIGH);
  digitalWrite (SPEED_L, LOW);
  delay(1000);
 
  digitalWrite (DIR_R, LOW);
// Включаем низкий уровень и мотор должен вращаться в  
 //обратную  сторону

  digitalWrite (SPEED_R, HIGH); //Разрешаем вращение мотора
  digitalWrite (DIR_L, LOW);
  digitalWrite (SPEED_L, HIGH);
  delay(1000);
 
  digitalWrite (DIR_R, LOW);
  digitalWrite (SPEED_R, LOW);
// Вращение запрещено
  digitalWrite (DIR_L, LOW);
  digitalWrite (SPEED_L, LOW);
  delay(1000);
}


Скопируйте текст программы и вставьте его в Arduino IDE.
После копирования обязательно проверьте, что бы комментарии в каждой строчке начинались с двух символов //.
После проверки загрузите код в контроллер. Установите контроллер в блок R-5 и включите питание робота.
 
Наш робот, исполняя написанный выше скетч, должен в течение одной секунды ехать вперед, затем на секунду остановиться и начать движение назад. И так как команда loop исполняется постоянно, то робот будет выполнять эти команды пока включено питание.
 




 

Другие проекты