“Joystick控制直流电机”的版本间的差异
(→设备) |
|||
第7行: | 第7行: | ||
==原理== | ==原理== | ||
− | + | 通过检测Joystick摇杆在水平和垂直两个方向上的模拟量来做出控制。在水平方向上控制电机的速度,用PWM来调节速度。在垂直方向上控制电机的方向,通过控制高低电平信号。 | |
==设备== | ==设备== | ||
第34行: | 第34行: | ||
[[File:_Joystick_motor.jpg|600px|center|thumb]] | [[File:_Joystick_motor.jpg|600px|center|thumb]] | ||
− | == | + | ==准备== |
− | *Setup | + | *Setup 1:将Joystick和Hub的A0,A1接起来。 |
− | [[File: | + | [[file:mCookie-Joystick-motor-sensor.JPG|600px|center]] |
− | *Setup | + | *Setup 2:将电机接到Motor的OUT1A,OUT1B引脚上。 |
− | [[file: | + | [[File: _304_DozingDonkey _Motor.jpg|600px|center]] |
− | [[File: | + | *Setup 3:将CoreUSB,Motor,Hub连接在一起。通过USB数据线将接入电脑。 |
+ | [[file:mCookie-Joystick-motor-pc.JPG|600px|center]] | ||
+ | |||
+ | ==调试== | ||
+ | *打开Arduino IDE,把原来IDE里的代码都删除,将下列代码复制到IDE中。 | ||
+ | <source lang="cpp"> | ||
+ | |||
+ | </source> | ||
+ | *选择正确的板卡和COM端口 | ||
+ | [[file:upload.JPG|600px|center]] | ||
+ | *编译 | ||
+ | **编译时会提示保存项目,用户可以自己命名保存到你的文件夹即可。 | ||
+ | *下载 | ||
+ | **编译成功后可以直接下载,提示下载成功表示程序下载完毕。 | ||
+ | [[file:upload-Joystick-motor.JPG|600px|center]] | ||
+ | *将激活后的电池盒与BM模块相连。'''Motor模块必须结合BM使用才能工作'''。 | ||
+ | [[File:CoreUSB_Ble_steup2.jpg|600px|center]] | ||
+ | [[file:mCookie-BMPin1.jpg|800px|center|pinout]] | ||
+ | [[file:mCookie-BMPin2.jpg|800px|center|pinout]] | ||
+ | *将电池盒与BM模块连接,所有模块都连接在一起。打开电源 | ||
+ | [[file:mCookie-Joystick-motor-all.JPG|600px|center]] | ||
+ | *结果 | ||
+ | **在水平方向上控制电机的速度,往右拨动速度越来越快,往左拨动速度越来越慢。 | ||
+ | **在垂直方向上控制电机的方向,往上拨动正转,往下拨动反转。 | ||
==软件调试== | ==软件调试== | ||
第49行: | 第72行: | ||
#define PIN_MOTORA 5 //电机输出引脚A | #define PIN_MOTORA 5 //电机输出引脚A | ||
#define PIN_MOTORB 6 //电机输出引脚B | #define PIN_MOTORB 6 //电机输出引脚B | ||
− | |||
</source> | </source> | ||
第77行: | 第99行: | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
==结果== | ==结果== | ||
− | + | 将Joystick的摇杆推到不同方向,可以看到电机的转速及方向也会跟着变化。 | |
==视频== | ==视频== | ||
|} | |} |
2015年11月24日 (二) 03:42的版本
Language | English |
---|
目的通过Joystick摇杆来控制直流电机的转动。 原理通过检测Joystick摇杆在水平和垂直两个方向上的模拟量来做出控制。在水平方向上控制电机的速度,用PWM来调节速度。在垂直方向上控制电机的方向,通过控制高低电平信号。 设备
准备
调试
软件调试
#define PI 3.1415926
#define JoystickX_PIN A1 //Joystick的X轴输出
#define JoystickY_PIN A0 //Joystick的Y轴输出
#define PIN_MOTORA 5 //电机输出引脚A
#define PIN_MOTORB 6 //电机输出引脚B
valueX = (float)(analogRead(JoystickX_PIN)-512);
valueY = (float)(analogRead(JoystickY_PIN)-512);
valueL = sqrt(sq(valueX)+sq(valueY));
angle = asin(valueX/valueL)*180/PI; //通过反三角函数计算摇杆的角度
motorSpeed = (int)(angle*255/180); //根据角度计算电机的转速
if(motorSpeed > 0) //角度为正,电机正转
{
digitalWrite(PIN_MOTORA, LOW);
analogWrite(PIN_MOTORB, motorSpeed);
}
else if(motorSpeed < 0) //角度为负,电机反转
{
digitalWrite(PIN_MOTORB, LOW);
analogWrite(PIN_MOTORA, abs(motorSpeed));
}
else //角度为零,电机停止
{
digitalWrite(PIN_MOTORA, LOW);
digitalWrite(PIN_MOTORB, LOW);
}
delay(500);
结果将Joystick的摇杆推到不同方向,可以看到电机的转速及方向也会跟着变化。 视频 |