wopig 发表于 2016-4-26 09:26:37

请教一下miniQ小车的问题

使用遥控器转弯时,我想让小车旋转90°,然后继续直线行走,但是按下左转后,小车一直转圈
这个命令:
if (ir_item == 16591063) {
    setRomeoMotor(1, 10);
    setRomeoMotor(2, 50);
    delay(400);
    setRomeoMotor(1, 50);
    setRomeoMotor(2, 53);
}
直接使用是好用的,可以跑正方形,但是放到通信命令下就一直转圈

if (irrecv_10.decode(&results_10)) {
    ir_item=results_10.value;
    String type="UNKNOWN";
    String typelist={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
    if(results_10.decode_type>=1&&results_10.decode_type<=13){
      type=typelist;
    }
    Serial.print("IR TYPE:"+type+"");
    Serial.println(ir_item);
    delay(1000);
    irrecv_10.resume();
} else {
}
if (ir_item == 16615543) {
    setRomeoMotor(1, 50);
    setRomeoMotor(2, 53);

}//前进
if (ir_item == 16619623) {
    setRomeoMotor(1, -50);
    setRomeoMotor(2, -53);

}//后退
if (ir_item == 16591063) {
    setRomeoMotor(1, 10);
    setRomeoMotor(2, 50);
    delay(400);
    setRomeoMotor(1, 50);
    setRomeoMotor(2, 53);

}//左转90°,继续前进
if (ir_item == 16607383) {
    setRomeoMotor(1, 50);
    setRomeoMotor(2, 10);
    delay(400);
    setRomeoMotor(1, 50);
    setRomeoMotor(2, 53);

}//右转90°,继续前进
if (ir_item ==16621663) {
    if (!digitalRead(8) && digitalRead(9)) {
      setRomeoMotor(1, 10);
      setRomeoMotor(2, 50);

    } else {
      if (digitalRead(8) && !digitalRead(9)) {
      setRomeoMotor(1, 50);
      setRomeoMotor(2, 10);

      } else {
      setRomeoMotor(1, 50);
      setRomeoMotor(2, 53);

      }

    }

}//巡线
if (ir_item == 16580863) {
    setRomeoMotor(1, 0);
    setRomeoMotor(2, 0);

}//停止

}

dsweiliang 发表于 2016-4-26 14:06:54

帮顶

Cain 发表于 2016-4-26 14:46:09

我觉得是没有及时清除遥控器状态变量的问题,可以在执行完后主动清空一下ir_item的值

凌风清羽 发表于 2016-4-28 09:28:54

可以用一个6050解决这个问题,角度闭环控制

20060606 发表于 2020-8-19 05:05:17

没看懂啊
页: [1]
查看完整版本: 请教一下miniQ小车的问题