C++ Arduino DualShock 4 C++;
我试图用DualShock 4(PS4)控制Arduino uno板。我对操纵手柄编程有困难C++ Arduino DualShock 4 C++;,c++,arduino,ps4,C++,Arduino,Ps4,我试图用DualShock 4(PS4)控制Arduino uno板。我对操纵手柄编程有困难PS4.getAnalogHat(LeftHatY)我想用操纵手柄控制电机;当我向上按(++I)时,我希望电机前进;当我向下按(--I)时,电机后退;当我不移动操纵杆时,电机没有速度。我能把马达向一个方向移动,速度会提高,但我不能让另一个方向工作。我似乎无法在操纵杆值(PS4.getAnalogHat(LeftHatY)>137 | | PS4.getAnalogHat(LeftHatY)137 | |模
PS4.getAnalogHat(LeftHatY)
我想用操纵手柄控制电机;当我向上按(++I
)时,我希望电机前进;当我向下按(--I
)时,电机后退;当我不移动操纵杆时,电机没有速度。我能把马达向一个方向移动,速度会提高,但我不能让另一个方向工作。我似乎无法在操纵杆值(PS4.getAnalogHat(LeftHatY)>137 | | PS4.getAnalogHat(LeftHatY)<117)
和电机值(0
-255
)之间建立连接
我用的是USB屏蔽和马达屏蔽
我需要帮助找出第一个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);
for(int i=0;isetSpeed(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);
}
}
if(PS4.connected())
{
int analogValue=PS4.getAnalogHat(LeftHatY);
如果(模拟值>137 | |模拟值<117)
{
int motorValue=y=map(x,117,137,0,255);
M3->设定速度(电机值);
PS4.已设置(绿色);
PS4.设置闪存(100100);
}
}
通过一些错误处理可能会更好,但您可以从它开始。uint16\u t s=PS4.getAnalogHat(RightHatY);
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);
}
如果(PS4.getAnalogHat(RightHatY)<117)
{
s=map(s,117,0,0,250);
M3->运行(前进);
M3->设定速度;
PS4.已设置(绿色);
PS4.设置闪存(100100);
}
如果(PS4.getAnalogHat(RightHatY)>137)
{
s=map(s,137,0,0,-250);
M3->运行(向后);
M3->设定速度;
PS4.已设置(绿色);
PS4.设置闪存(100100);
}
这就是我最初提出的问题的解决方案。使用Dualshock 4和Arduino电机护罩对电机进行变速控制。非常感谢您的帮助。我正在为机器人/底盘进行3d打印零件,这就是为什么我不进行编程的原因。if(PS4.connected()){if(PS4.getAnalogHat(LeftHatY)>137 | | PS4.getAnalogHat(LeftHatY)<117{M3->setSpeed(PS4.getAnalogHat(LeftHatY));PS4.setLed(绿色);PS4.setLedFlash(100100);}