Я пытаюсь управлять платой Arduino uno, используя DualShock 4 (PS4). У меня проблемы с программированием джойстиков PS4.getAnalogHat(LeftHatY)
Я хочу управлять мотором с помощью джойстика; Я хочу, чтобы мотор двигался вперед при нажатии вверх (++i
) назад, когда я нажимаю вниз (--i
), и нет скорости, когда я не двигаю джойстик. Я могу двигать двигатель в одном направлении, и скорость увеличивается, но я не могу заставить работать другое направление. Я не могу установить связь между значениями джойстика (PS4.getAnalogHat(LeftHatY) > 137 || PS4.getAnalogHat(LeftHatY) < 117)
и значения двигателя (0
— 255
).
Я использую USB Shield и Motor Shield.
Мне нужна помощь в выяснении первого оператора if.
Вот код, который у меня есть:
if (PS4.connected())
{
if (PS4.getAnalogHat(LeftHatY) > 137)
{
M3->setSpeed(255));
PS4.setLed(Green);
PS4.setLedFlash(100 ,100);
}
}
Я хочу, чтобы значение M3 увеличивалось при увеличении угла джойстика:
for (int i=0; i<=255; ++i)
M3->setSpeed(i);
Вы должны добавить условие min(117)
а также max(137)
толерантность к движению мотора. Затем сопоставьте возможные значения джойстика с диапазоном скорости двигателя.
if (PS4.connected())
{
int analogValue = PS4.getAnalogHat(LeftHatY);
if (analogValue > 137 || analogValue < 117)
{
int motorValue = y = map(x, 117, 137 , 0, 255);
M3->setSpeed(motorValue);
PS4.setLed(Green);
PS4.setLedFlash(100 ,100);
}
}
Может быть лучше с некоторой обработкой ошибок, но вы могли бы начать с этого.
uint16_t s = PS4.getAnalogHat(RightHatY);
if (PS4.getAnalogHat(RightHatY) < 117 )
{
s = map (s, 117, 0, 0, 250);
M3->run(FORWARD);
M3->setSpeed(s);
PS4.setLed(Green);
PS4.setLedFlash(100, 100);
}
if (PS4.getAnalogHat(RightHatY) > 137)
{
s = map (s, 137, 0, 0, -250);
M3->run(BACKWARD);
M3->setSpeed(s);
PS4.setLed(Green);
PS4.setLedFlash(100, 100);
}
Это решение проблемы, которую я изначально задавал. Регулирование скорости двигателя с помощью Dualshock 4 & Arduino Моторный щит. Большое спасибо за помощь. Я занимался 3D-печатью деталей для робота / шасси, поэтому я взял перерыв на программирование.