Arduino uno robot 4wd. Help!
- Войдите на сайт для отправки комментариев
Пт, 29/12/2017 - 00:18
Помогите! Не могу разобраться! Motor Shield — L298P, Adruino Uno, 4 мотора подклчены парами - левая и правая сторона, пробовал различные распиновки, скетчи. Не включается одна сторона. Что смотреть? Подскажите!
Зелёный провод неправильно припаян.
куда его надо припаять?
К синему
а если по контактам можно рассказть?
Вы еще не доперли, что вам намекают схему выложить?
хема 1:вообще ничего не идет
motor_L1 - (3-IN4)
motor_L2 - (4-IN3)
input_L - ШИМ левого двигателя (11-ENB)
motor_R1-(7-IN2)
motor_R2-(8-IN1)
input_R - ШИМ правого двигателя (10-ENA)
Схема2: работает одна сторона, зеркально меняешь - работает вторая а та замолкает
motor_L1 - (3-IN4)
motor_L2 - (4-IN3)
input_L - ШИМ левого двигателя (1-ENB)
motor_R1-(7-IN2)
motor_R2-(8-IN1)
input_R - ШИМ правого двигателя (нигде не работает-ENA)
// Объявляем переменные для хранения состояния двух моторов. int motor_L1, motor_L2; int motor_R1, motor_R2; //=============================================== // Функция инициализации управления моторами. void setup_motor_system(int L1, int L2, int R1, int R2) { // Заносятся в переменные номера контактов (пинов) Arduino. // Для левых motor_L1=L1; motor_L2=L2; // и правых моторов робота. motor_R1=R1; motor_R2=R2; // Переводятся указанные порты в состояние вывода данных. pinMode(motor_L1, OUTPUT); pinMode(motor_L2, OUTPUT); pinMode(motor_R1, OUTPUT); pinMode(motor_R2, OUTPUT); } //=============================================== // движение вперед. void forward() { // Если двигатель будет работать не в ту сторону, // поменять на нем контакты местами. digitalWrite(motor_L1, HIGH); digitalWrite(motor_L2,LOW); digitalWrite(motor_R1, HIGH); digitalWrite(motor_R2,LOW); } //=============================================== // Поворот налево с блокировкой левых колес. void forward_left() { // блокировка вращения левых колес. digitalWrite(motor_L1, LOW); digitalWrite(motor_L2, LOW); // правые колеса вращаются. digitalWrite(motor_R1, HIGH); digitalWrite(motor_R2, LOW); } //=============================================== // Поворот направо с блокировкой правых колес. void forward_right() { // левые колеса вращаются. digitalWrite(motor_L1, HIGH); digitalWrite(motor_L2, LOW); // блокировка вращения правых колес. digitalWrite(motor_R1, LOW); digitalWrite(motor_R2, LOW); } // Включаем движение назад. void backward() { // Смена направления вращения двигателей. digitalWrite(motor_L2, HIGH); digitalWrite(motor_L1,LOW); digitalWrite(motor_R2, HIGH); digitalWrite(motor_R1,LOW); } //=============================================== void _stop() { // Блокировка всех колес. digitalWrite(motor_L2, LOW); digitalWrite(motor_L1,LOW); digitalWrite(motor_R2, LOW); digitalWrite(motor_R1,LOW); } //=============================================== // Функция инициализации, выполняется один раз. void setup() { // Переменные – номера контактов (пинов) Arduino. // Для левых и правых моторов машинки. setup_motor_system(2,3,4,5); // Двигатели остановлены. _stop(); } //=============================================== // Основная программа. void loop() { // Пример движения робота задан жестко в программе // и повторяется в цикле. forward(); // едет вперед 1 секунду. delay(1000); forward_left(); // поворачивает налево 0,5 секунд. delay(500); forward(); // едет вперед 0,5 секунд. delay(500); forward_right(); // поворачивает направо 0,5 секунд. delay(500); _stop(); delay(500); backward(); // движется назад 0,8 секунд. delay(800); }Я понимаю что передние колеса должны крутиться по направлению движения робота вперед, а задние наоборот, при этом всём холостого хода я не наблюдаю из функции стоп.
// Объявляем переменные для хранения состояния двух моторов. //int motor_L1, motor_L2, motor_R1, motor_R2; int motor_LeftFront = 2, motor_LeftRear = 3, motor_RightFront = 4, motor_RightRear = 5; int RobotWheel[4] = {2,3,4,5}; //=============================================== void ChageState(int ST[4]){ for( int i=0 ; i<4 ; i++ ){ if(ST[i]!=0) digitalWrite( RobotWheel[i] , HIGH ); else digitalWrite( RobotWheel[i] , LOW ); } } //=============================================== // движение вперед. void forward() { ChageState(1,0,1,0); // Если двигатель будет работать не в ту сторону, поменять на нем контакты местами. } //=============================================== // Поворот налево с блокировкой левых колес. void forward_left() { ChageState(0,0,1,0); // блокировка вращения левых колес. } //=============================================== // Поворот направо с блокировкой правых колес. void forward_right(){ ChageState(1,0,0,0); // левые колеса вращаются. } // Включаем движение назад. void backward() { ChageState(0,1,0,1); // Смена направления вращения двигателей. } //=============================================== void _stop() { ChageState(0,0,0,0); // Блокировка всех колес. } //=============================================== // Функция инициализации, выполняется один раз. void setup() { // Переводятся указанные порты в состояние вывода данных. pinMode(motor_LeftFront, OUTPUT); pinMode(motor_LeftRear, OUTPUT); pinMode(motor_RightFront, OUTPUT); pinMode(motor_RightRear, OUTPUT); _stop(); // Двигатели остановлены. } //=============================================== // Основная программа. void loop() { // Пример движения робота задан жестко в программе // и повторяется в цикле. forward(); // едет вперед 1 секунду. delay(1000); forward_left(); // поворачивает налево 0,5 секунд. delay(500); forward(); // едет вперед 0,5 секунд. delay(500); forward_right(); // поворачивает направо 0,5 секунд. delay(500); _stop(); delay(500); backward(); // движется назад 0,8 секунд. delay(800); }Вопрос в том что одна сторона вообще не крутится
проверяйте распиновку
схему никто не видел.
grann, так что всё-таки у Вас - Motor Shield или отдельный модуль на L298? И наверное Вы думаете, что у Вас единственная существующая и известная всем модель того или другого. Из Вашего словесного описания схемы следует что ENA и ENB подключены к ардуино, а где они используются в скетче? Я не нахожу. Про питание вашей конструкции ничего не рассказали.
По существу вопроса, Ваша железка как и любая другая может быть неисправной. Но сначала нужно всё правильно подключить и правильно это использовать в скетче. А из Вашего описания уверенности, что всё сделано верно нет.