Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Arduino DualShock 4 C++;_C++_Arduino_Ps4 - Fatal编程技术网

C++ Arduino DualShock 4 C++;

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 | |模

我试图用DualShock 4(PS4)控制Arduino uno板。我对操纵手柄编程有困难
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);}