Arduino Mega + L298N + 2 движка + беспроводной геймпад PS2 + нужна помощь
- Войдите на сайт для отправки комментариев
Чт, 04/02/2021 - 15:18
Собрал шасси на гусеницах с двумя движками. Электроника Arduino Mega, L298N и беспроводной геймпад PS2. Нашёл скетч, подредактировал под себя контакты. ЗАРАБОТАЛО. Кнопками вперёд назад влево вправо.
Нашёл скетч для джойстиков PS2. Одним одна гусеница вперёд-назад, другим другая. ЗАРАБОТАЛО. НО появилась проблема с этим скетчем: при вкл. и выкл. PS2 дёргается сам, чаще назад, реже вперёд.
ПОМОГИТЕ найти ошибку или дополнить!!!!
// PS2 Tank by Igor Fonseca @2019 // Controls a robotic tank using a PS2 joystick, using D-pad buttons // based on an example using the PS2X library by Bill Porter 2011 // All text above must be included in any redistribution. // include libraries #include <PS2X_lib.h> // These are used to set the direction of the bridge driver. #define ENA 3 //ENA #define MOTORA_1 4 //IN3 #define MOTORA_2 5 //IN4 #define MOTORB_1 8 //IN1 #define MOTORB_2 7 //IN2 #define ENB 6 //ENB PS2X ps2x; // create PS2 Controller Class //right now, the library does NOT support hot pluggable controllers, meaning //you must always either restart your Arduino after you conect the controller, //or call config_gamepad(pins) again after connecting the controller. int error = 0; byte type = 0; byte vibrate = 0; void setup(){ // Configure output pins pinMode(ENA, OUTPUT); pinMode(MOTORA_1, OUTPUT); pinMode(MOTORA_2, OUTPUT); pinMode(ENB, OUTPUT); pinMode(MOTORB_1, OUTPUT); pinMode(MOTORB_2, OUTPUT); // Disable both motors digitalWrite(ENA,0); digitalWrite(ENB,0); // Start serial communication Serial.begin(57600); error = ps2x.config_gamepad(13,11,10,12, true, true); //setup pins and settings: GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error // Check for error if(error == 0){ Serial.println("Found Controller, configured successful"); } else if(error == 1) Serial.println("No controller found, check wiring or reset the Arduino"); else if(error == 2) Serial.println("Controller found but not accepting commands"); else if(error == 3) Serial.println("Controller refusing to enter Pressures mode, may not support it."); // Check for the type of controller type = ps2x.readType(); switch(type) { case 0: Serial.println("Unknown Controller type"); break; case 1: Serial.println("DualShock Controller Found"); break; case 2: Serial.println("GuitarHero Controller Found"); break; } } // Main loop void loop(){ if(error == 1) //skip loop if no controller found return; else { //DualShock Controller ps2x.read_gamepad(false, vibrate); // disable vibration of the controller int nJoyL = ps2x.Analog(PSS_LY); // read left stick int nJoyR = ps2x.Analog(PSS_RY); // read right stick nJoyL = map(nJoyL, 0, 255, 1023, -1023); nJoyR = map(nJoyR, 0, 255, -1023, 1023); // Perform movements based on both analog sticks if(nJoyR>50) { digitalWrite(MOTORA_1,HIGH); digitalWrite(MOTORA_2,LOW); analogWrite(ENA, 1023); } if(nJoyR<-50) { digitalWrite(MOTORA_1,LOW); digitalWrite(MOTORA_2,HIGH); analogWrite(ENA, 1023); } if (abs(nJoyR)<50) { analogWrite(ENA, 0); } if(nJoyL>50) { digitalWrite(MOTORB_1,HIGH); digitalWrite(MOTORB_2,LOW); analogWrite(ENB, 1023); } if(nJoyL<-50) { digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,HIGH); analogWrite(ENB, 1023); } if (abs(nJoyL)<50) { analogWrite(ENB, 0); } delay(50); } }
Задай вопрос автору
скачал с иностранного сайта, автора не найти
джойстик при подключении ставьте точно в среднюю точку
Почему дёргается?
analogWrite(ENB, 1023); - это бесценно.
b707, дёргается и при не подключенном джойстике
sadman41,
analogWrite(ENB, 1023); - это бесценно - поясните
https://www.arduino.cc/reference/en/language/functions/analog-io/analogw...
Раздел Parameters прочитайте
sadman41,
изменил, результат тотже
изменил, результат тотже
изменил, результат тотже
а так?
не помогло,
также хаотичные дёргания (почти всегда назад одновременно оба)
понимаю, что нужно выставить начальное положение, но не знаю как
Мы тоже не знаем, т.к. неведомо кто дёргает - наводка или пакет с пульта.
поставьте защитку не 50 а 100 к примеру, а вообще скетч надо переписать полностью, так как он явно не для avr
Вот как я делал для внучки
это я заменил меня интересует что выполняет
(abs(nJoyR)<50)
analogWrite(ENA, 255)
меня интересует что выполняет
(abs(nJoyR)<50) ?
это я заменил меня интересует что выполняет
(abs(nJoyR)<50)
analogWrite(ENA, 255)
меня интересует что выполняет
(abs(nJoyR)<50) ?
вы тему то почитайте, про тележку, там основные вопросы и заданы и решены )))
спасибо, попробую осилить
спасибо, попробую осилить
oboltus-РУ, это ваш проект?
Подогнал под себя совершенно другой скетч, предложенный oboltus-РУ
ситуация с самопроизвольным дёрганием осталась
подскажите, что здесь не так?
oboltus-РУ, это ваш проект?
ситуация с самопроизвольным дёрганием осталась Значит джойстик глючит! Я пробовал этот скейч и баг был во вращении гусиниц при повороте. При повороте в право или лево - они крутились назад - а не вперёд! Хотя шасси поворачивало в заданном направлении!
ещё раз повторюсь: если не использовать аналоговый джойстик, а пользоваться кнопками, то дёрганий нет
ещё раз повторюсь: если не использовать аналоговый джойстик, а пользоваться кнопками, то дёрганий нет
так моторы дёргаются одновременно
пины на ардуино - джойстик менял,
13-й пин не использую
так моторы дёргаются одновременно
пины на ардуино - джойстик менял,
13-й пин не использую
Подогнал под себя совершенно другой скетч, предложенный oboltus-РУ
ситуация с самопроизвольным дёрганием осталась
не помогло
и ещё моторы дёргаются только в одном направлении - вперёд
не помогло
не помогло
дело в том, что и при отключенном джойстике дёргается
когда заливаю скетч с управлением стрелками то всё нормально
дело в том, что и при отключенном джойстике дёргается
когда заливаю скетч с управлением стрелками то всё нормально
другого нет
Wolff_2020 - Вы где живёте? Может проще завтра новый моторшилд купить?
у нас в городе цена 350, у китайцев 100, жаба давит))))
попробую светодиод подключить минуя шилд
у нас в городе цена 350, у китайцев 100, жаба давит))))
подтяни A0 пин сопротивлением килоом 47 к земле, ты же его используешь для джойстика?
у меня беспроводной джойстик, А0 не используется
я цифру в аналог преобразовываю
у меня беспроводной джойстик, А0 не используется
я цифру в аналог преобразовываю
схема подключения соответствует?

И скейчь представленный мною то же для без проводного. Выложите свою схему подключенья - ибо где то у Вас косяк не программный !
схема подключения соответствует?

У меня нет резисторов.
Для чего они?
У меня нет резисторов.
Для чего они?
согласование уровней
У меня нет резисторов.
Для чего они?
согласование уровней