深山飞鱼 发表于 2014-1-23 20:49:44

求教小车速度控制问题

请大家帮帮忙用ps2手柄摇杆控制arduino小车速度怎么写

#include <PS2X_lib.h>
PS2X ps2x; // 定义ps2x为PS2X类变量
//int PS_LY;//存储PS2手柄左摇杆Y轴数据
//int PS_RX;//存储PS2手柄右摇杆X轴数据
int flag;//存储PS2手柄按键标识

int EN2 = 2; //定义电机1的I1接口
int EN3 = 3; //定义电机1的I2接口
int EN4 = 4; //定义电机2的I3接口
int EN5 = 5; //定义电机2的I3接口

/****定义小车前后左右动作****/
void qian(void) //qian前进
      {      
          digitalWrite(EN2,LOW);//低电位
          digitalWrite(EN3,HIGH);//高电位
          digitalWrite(EN4,LOW);
          digitalWrite(EN5,HIGH);   
      }
void hou(void)//hou后退
      {      
          digitalWrite(EN2,HIGH);
          digitalWrite(EN3,LOW);
          digitalWrite(EN4,HIGH);
          digitalWrite(EN5,LOW);            
      }
      
void ting(void)//ting停止
      {
          digitalWrite(EN2,LOW);   
          digitalWrite(EN3,LOW);
          digitalWrite(EN4,LOW);   
          digitalWrite(EN5,LOW);      
      }      
void setup()
{
   ps2x.config_gamepad(13,11,10,12, true, true);
   pinMode(EN2, OUTPUT);
   pinMode(EN3, OUTPUT);
   pinMode(EN4, OUTPUT);
   pinMode(EN5, OUTPUT);
    Serial.begin(9600);
}
void loop()
{
      ps2x.read_gamepad();//读PS2数据
      ps2x.read_gamepad(false, 255);
      int ps2_LY = 127;//手柄左摇杆Y值,中间默认为127
      int ps2_RX = 128;//手柄右摇杆X值,中间默认为128
      ps2_LY = ps2x.Analog(PSS_LY);
      ps2_RX = ps2x.Analog(PSS_RX);


if ( ps2_LY != 127 )
      //if(ps2x.Button(PSB_PAD_UP))
   {
   if ( ps2_LY < 127 )//摇杆前移

   {
       qian();
       delay(20);
       ting();
   }
   else if ( ps2_LY > 127 )//摇杆后移

   {

      hou();
      delay(20);
      ting();

   }

       }
elseif(ps2x.Button(PSB_PAD_DOWN))      
         {
         hou();
         delay(20);
         ting();
         }
   
elseif(ps2x.Button(false))   // 若没有按键按下   
         {
         ting();
         }
}

这样手柄摇杆不能控制速度

深山飞鱼 发表于 2014-1-23 21:01:43

请大家帮帮忙

fish6823 发表于 2014-1-31 12:04:20

你应该用L293模块来驱动电机,这样就能通调节PWM来控制电机的速度,然后在前进和后退里加一个循环不断改变PWM的占空比,调整电机的转速,这样就可以让小车逐步加速。
页: [1]
查看完整版本: 求教小车速度控制问题