програмирование motor control shild l293dd

urec
Offline
Зарегистрирован: 19.07.2016

Уважаемые программисты ардуино,кто программировал ардуино уно с motor control shild l293dd помогите с кодом новичку,чтобы  2 колеса вращались вперед ,5 сек. назад,затем поворот плево или вправо,короче чтобы робот ездил по помещению, и 2 мотора вращались в одном напраилении(для щетки и кулера),хочу сделать робот пылесос ,корпус уже сделал.перепробовал скетчи ,неработает или колеса крутят в одном направлении,спасибо тем кто поможет

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Так а что именно не получается? Выкладывайте свой код, с комментариями - вот тут мол, и тут, не работает как надо - и сразу поможем.

urec
Offline
Зарегистрирован: 19.07.2016

Пробовал програмировать свое изделие на подобие с сайта 

http://geekelectronics.org/arduino/vedroid-mobil-robot-na-arduino-chast-2-podklyuchaem-motor-shield.html

код:

#include <AFMotor.h> // Подключаем библиотеку для управления двигателями 

#include <Servo.h>   // Подключаем библиотеку для сервоприводом

//Создаем объекты для двигателей 
AF_DCMotor motor1(1); //канал М1 на Motor Shield — задний левый 
AF_DCMotor motor2(2); //канал М2 на Motor Shield — задний правый 
AF_DCMotor motor3(3); //канал М3 на Motor Shield — передний левый 
AF_DCMotor motor4(4); //канал М4 на Motor Shield — передний правый 
  
// Создаем объект для сервопривода 
Servo myservo; 
  
void setup() { 
   // Выбираем пин к которому подключен сервопривод 
   myservo.attach(9); // или 10, если воткнули в крайний разъём 
   // Поворачиваем сервопривод в положение 0 градусов при каждом включении
   myservo.write(0);  
   // Пауза 5 секунд 
   delay(5000);   
}

void loop() { 
//Устанавливаем скорость 100% (0-255) 
motor1.setSpeed(255); 
motor2.setSpeed(255); 
motor3.setSpeed(255); 
motor4.setSpeed(255); 
  
// Задаем направление движение 
// FORWARD - вперед 
// BACKWARD - назад 
// RELEASE - стоп 
  
// Движение вперед в течении 5 секунд с поворотом сервы на угол 90 градусов 
motor1.run(FORWARD); 
motor2.run(FORWARD); 
motor3.run(FORWARD); 
motor4.run(FORWARD); 
myservo.write(90); // Поворот сервы на угол 90 градусов 
delay(5000); 
  
// Поворот вправо в течении 2 секунд с поворотом сервы на угол 180 градусов

motor1.run(FORWARD); 
motor2.run(BACKWARD); 
motor3.run(FORWARD); 
motor4.run(BACKWARD);  
myservo.write(180); // Поворот сервы на угол 180 градусов 
delay(2000);

// Движение назад в течении 5 секунд с поворотом сервы на угол 90 градусов 
motor1.run(BACKWARD); 
motor2.run(BACKWARD); 
motor3.run(BACKWARD); 
motor4.run(BACKWARD); 
myservo.write(90); // Поворот сервы на угол 90 градусов 
delay(5000); 
  
//Поворот влево в течении 2 секунд с поворотом сервы на угол 0 градусов

motor1.run(BACKWARD); 
motor2.run(FORWARD); 
motor3.run(BACKWARD); 
motor4.run(FORWARD);

myservo.write(0); // Поворот сервы на угол 0 градусов 
delay(2000); 
  
// Остановка двигателей на 3 секунды с поворотом сервы на угол 90 градусов 
motor1.run(RELEASE); 
motor2.run(RELEASE); 
motor3.run(RELEASE); 
motor4.run(RELEASE); 
myservo.write(90); // Поворот сервы на угол 90 градусов 
delay(3000); 
}

едиственное у него ардуино Mega 2560 и  Motor Drive Shield 2x L293D. код программирования там же, есть 2 только но, у меня ардуино уно р 3 и мотор контрол шилд l293dd (описание по сайту l293dd

http://www.chipdip.ru/product/motor-control-shield/ Также совмещается с ардуино.  Пробовал со скетча настроить без прграммироввания servo т.к в других его видео сообщается что есть глюк из за servo motor, да и воткнуть его куда. казалолсь бы всего то надо чтобы два мотора передних меняли направление, а задние постоянно вращались в одном направлении ,это для щетки и турбины,на моторе, в прошлом коменте описал не верно как кулер. В общем пробовал редактировать его скетч на свой лад, но не вышло.без servo компиляция прроходит успешноДА AF MOTOR через библиотеку загружал,даже прорбовал загружать отдельно тест от af mo0tor результат не положительный. а компиляция успешна.тестировал на 1 колесе на каждое реле. Понимаю что гдето совершаю ошибки. т,к . еще недавно стал заниматься этим делом, завелся, а не выходит.Кто может уделите время буду очень благодарен.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

urec пишет:

http://www.chipdip.ru/product/motor-control-shield/ Также совмещается с ардуино.  Пробовал со скетча настроить без прграммироввания servo т.к в других его видео сообщается что есть глюк из за servo motor, да и воткнуть его куда. казалолсь бы всего то надо чтобы два мотора передних меняли направление, а задние постоянно вращались в одном направлении ,это для щетки и турбины,на моторе, в прошлом коменте описал не верно как кулер. В общем пробовал редактировать его скетч на свой лад, но не вышло.без servo компиляция прроходит успешноДА AF MOTOR через библиотеку загружал,даже прорбовал загружать отдельно тест от af mo0tor результат не положительный. а компиляция успешна.тестировал на 1 колесе на каждое реле. Понимаю что гдето совершаю ошибки. т,к . еще недавно стал заниматься этим делом, завелся, а не выходит.Кто может уделите время буду очень благодарен.

Во-первых, правильно оформите код, в редакторе сообщения есть кнопочка "code" для вставки кода. Во-вторых - попробуйте не спеша перечитать то, что вы написали в процитированном мной тексте. Вам что-нибудь там понятно? Мне - нет, я вижу только сумбурный поток мыслей.

urec
Offline
Зарегистрирован: 19.07.2016
#include <AFMotor.h> // Подключаем библиотеку для управления двигателями 

#include <Servo.h>   // Подключаем библиотеку для сервоприводом

//Создаем объекты для двигателей 
AF_DCMotor motor1(1); //канал М1 на Motor Shield — задний левый 
AF_DCMotor motor2(2); //канал М2 на Motor Shield — задний правый 
AF_DCMotor motor3(3); //канал М3 на Motor Shield — передний левый 
AF_DCMotor motor4(4); //канал М4 на Motor Shield — передний правый 
  
// Создаем объект для сервопривода 
Servo myservo; 
  
void setup() { 
   // Выбираем пин к которому подключен сервопривод 
   myservo.attach(9); // или 10, если воткнули в крайний разъём 
   // Поворачиваем сервопривод в положение 0 градусов при каждом включении
   myservo.write(0);  
   // Пауза 5 секунд 
   delay(5000);   
}

void loop() { 
//Устанавливаем скорость 100% (0-255) 
motor1.setSpeed(255); 
motor2.setSpeed(255); 
motor3.setSpeed(255); 
motor4.setSpeed(255); 
  
// Задаем направление движение 
// FORWARD - вперед 
// BACKWARD - назад 
// RELEASE - стоп 
  
// Движение вперед в течении 5 секунд с поворотом сервы на угол 90 градусов 
motor1.run(FORWARD); 
motor2.run(FORWARD); 
motor3.run(FORWARD); 
motor4.run(FORWARD); 
myservo.write(90); // Поворот сервы на угол 90 градусов 
delay(5000); 
  
// Поворот вправо в течении 2 секунд с поворотом сервы на угол 180 градусов

motor1.run(FORWARD); 
motor2.run(BACKWARD); 
motor3.run(FORWARD); 
motor4.run(BACKWARD);  
myservo.write(180); // Поворот сервы на угол 180 градусов 
delay(2000);

// Движение назад в течении 5 секунд с поворотом сервы на угол 90 градусов 
motor1.run(BACKWARD); 
motor2.run(BACKWARD); 
motor3.run(BACKWARD); 
motor4.run(BACKWARD); 
myservo.write(90); // Поворот сервы на угол 90 градусов 
delay(5000); 
  
//Поворот влево в течении 2 секунд с поворотом сервы на угол 0 градусов

motor1.run(BACKWARD); 
motor2.run(FORWARD); 
motor3.run(BACKWARD); 
motor4.run(FORWARD);

myservo.write(0); // Поворот сервы на угол 0 градусов 
delay(2000); 
  
// Остановка двигателей на 3 секунды с поворотом сервы на угол 90 градусов 
motor1.run(RELEASE); 
motor2.run(RELEASE); 
motor3.run(RELEASE); 
motor4.run(RELEASE); 
myservo.write(90); // Поворот сервы на угол 90 градусов 
delay(3000); 
}

компиляция этого кода у меня прошла без ошибок, 

использую ардуино уно r 3 , и motor control shild l293dd

Хотел сделать чтобы два выхода на колеса давали направление изделия пылесоса,как на подобие с сайта  http://geekelectronics.org/arduino/vedroid-mobil-robot-na-arduino-chast-2-podklyuchaem-motor-shield.htm видео есть.

но на 4 колеса не надо как в сайте только 2,

3 выход  на щетку(направление должно быть 1 направление,без изменений вперед, постоянное, 4 выход таже ,чтобы срабатывал  в одном только направлени, это для мотора вентилятора. 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

У вас проблемы, как выпилить два лишних колеса из скетча? Комментируйте строчки  с motor3. и motor4.

urec
Offline
Зарегистрирован: 19.07.2016

Да именно,настроить выходы первый  и второй на колеса, а остальные моторы на 3 и 4 выходы настроить надо ,чтобы они при включении пылесоса крутили постоянно без перерыва до отключения пылесоса. C направлением вентилятора и щетки я разберусь ,если что поменяю полярности вращения

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

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