“Joystick控制直流电机”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
设备
第7行: 第7行:
  
 
==原理==
 
==原理==
通过检测Joystick摇杆在X,Y轴两个方向上的模拟量来控制直流电机转动的转速和方向。
+
通过检测Joystick摇杆在水平和垂直两个方向上的模拟量来做出控制。在水平方向上控制电机的速度,用PWM来调节速度。在垂直方向上控制电机的方向,通过控制高低电平信号。
  
 
==设备==
 
==设备==
第34行: 第34行:
 
[[File:_Joystick_motor.jpg|600px|center|thumb]]
 
[[File:_Joystick_motor.jpg|600px|center|thumb]]
  
==搭建硬件==
+
==准备==
*Setup 1:将CoreUSB,Robot,Motor与Sensorhub叠堆。
+
*Setup 1:将Joystick和Hub的A0,A1接起来。
[[File:CoreUSB_Robot_Sensorhub.jpg|600px|center|thumb]]
+
[[file:mCookie-Joystick-motor-sensor.JPG|600px|center]]
*Setup 2:将Joystick接到Sensorhub的A0,A1引脚上,电机接到Stepper的OUT1A,OUT1B引脚上。
+
*Setup 2:将电机接到Motor的OUT1A,OUT1B引脚上。
[[file:Microduino-sensorhub_Joystick.JPG|thumb|800px|center]]
+
[[File: _304_DozingDonkey _Motor.jpg|600px|center]]
[[File:Joystick_Motor_sensor.jpg|600px|center|thumb]]
+
*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>
 
==程序==
 
[[https://github.com/Microduino/Microduino_Tutorials/tree/master/MCookie_Tutorial/MicroduinoJoystickMotor MicroduinoJoystickMotor]]
 
  
 
==结果==
 
==结果==
将Joystick的摇杆推到不同的角度,可以看到电机的转速及方向也会跟着变化。
+
将Joystick的摇杆推到不同方向,可以看到电机的转速及方向也会跟着变化。
  
 
==视频==
 
==视频==
  
 
|}
 
|}

2015年11月24日 (二) 03:42的版本

Language English

目的

通过Joystick摇杆来控制直流电机的转动。

原理

通过检测Joystick摇杆在水平和垂直两个方向上的模拟量来做出控制。在水平方向上控制电机的速度,用PWM来调节速度。在垂直方向上控制电机的方向,通过控制高低电平信号。

设备

模块 数量 功能
mCookie-CoreUSB/zh 1 核心板
mCookie-Hub/zh 1 传感器转接板
mCookie-Motor/zh 1 电机驱动
mCookie-BM/zh 1 电池管理
mCookie-BM shield/zh 1 电池管理扩展
Microduino-Joystick/zh 1 摇杆传感器
  • 其他设备
    • N20直流减速电机
    • 2节电池
    • USB数据线
    • 传感器连接线*1

准备

  • Setup 1:将Joystick和Hub的A0,A1接起来。
  • Setup 2:将电机接到Motor的OUT1A,OUT1B引脚上。
  • Setup 3:将CoreUSB,Motor,Hub连接在一起。通过USB数据线将接入电脑。

调试

  • 打开Arduino IDE,把原来IDE里的代码都删除,将下列代码复制到IDE中。

  • 选择正确的板卡和COM端口
Upload.JPG
  • 编译
    • 编译时会提示保存项目,用户可以自己命名保存到你的文件夹即可。
  • 下载
    • 编译成功后可以直接下载,提示下载成功表示程序下载完毕。
  • 将激活后的电池盒与BM模块相连。Motor模块必须结合BM使用才能工作
CoreUSB Ble steup2.jpg
pinout
pinout
  • 将电池盒与BM模块连接,所有模块都连接在一起。打开电源
  • 结果
    • 在水平方向上控制电机的速度,往右拨动速度越来越快,往左拨动速度越来越慢。
    • 在垂直方向上控制电机的方向,往上拨动正转,往下拨动反转。

软件调试

  • Joystick及电机控制引脚定义。
#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
  • 计算Joystick摇杆所在的角度,然后根据角度大小控制电机的转速,根据角度的正负控制电机转动的方向。
    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的摇杆推到不同方向,可以看到电机的转速及方向也会跟着变化。

视频