加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Arduino DualShock 4 C.

发布时间:2020-12-16 07:20:51 所属栏目:百科 来源:网络整理
导读:我正在尝试使用DualShock 4(PS4)控制Arduino uno板.我很难编程操纵杆PS4.getAnalogHat(LeftHatY)我想用操纵杆控制电机;当我按下(i)向后按( – i)时,我希望电机前进,而当我不移动操纵杆时我没有速度.我能够向一个方向移动电机,速度增加,但我无法让另一个方向
我正在尝试使用DualShock 4(PS4)控制Arduino uno板.我很难编程操纵杆PS4.getAnalogHat(LeftHatY)我想用操纵杆控制电机;当我按下(i)向后按( – i)时,我希望电机前进,而当我不移动操纵杆时我没有速度.我能够向一个方向移动电机,速度增加,但我无法让另一个方向工作.我似乎无法在操纵杆值(PS4.getAnalogHat(LeftHatY)> 137 || PS4.getAnalogHat(LeftHatY)< 117)和电机值(0 - 255)之间建立连接. 我正在使用USB 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);

解决方法

您需要添加最小(117)和最大(137)公差的条件来移动电机.然后,将操纵杆的posibles值映射到电机速度范围

if (PS4.connected()) 
{
    int analogValue = PS4.getAnalogHat(LeftHatY);
    if (analogValue  > 137 || analogValue < 117)
    {
        int motorValue = y = map(x,117,137,255); 
        M3->setSpeed(motorValue); 
        PS4.setLed(Green);
        PS4.setLedFlash(100,100);
    }
}

一些错误处理可能会更好,但你可以从它开始.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读