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

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{{Language| Joystick控制直流电机}} {| style="width: 800px;" |- | ==目的== 通过Joystick摇杆来控制直流电机的转动。 ==原理== 通过检测Joystick摇杆...")
 
设备
第14行: 第14行:
 
|模块||数量||功能
 
|模块||数量||功能
 
|-
 
|-
|[[Microduino-CoreUSB/zh]]||1||核心板
+
|[[mCookie-CoreUSB/zh]]||1||核心板
 
|-
 
|-
|[[Microduino-Sensorhub/zh]]||1||传感器转接板
+
|[[mCookie-Hub/zh]]||1||传感器转接板
 
|-
 
|-
| [[Microduino-Joystick/zh]]||1||摇杆传感器
+
|[[mCookie-Motor/zh]]||1||电机驱动
 
|-
 
|-
| [[Microduino-Robot/zh]]||1||机器人控制板
+
|[[mCookie-BM/zh]]||1||电池管理
 
|-
 
|-
| [[Microduino-Motor/zh]]||1||直流电机驱动模块
+
|[[mCookie-BM shield/zh]]||1||电池管理扩展
 
|-
 
|-
| [[Motor]]||1||电机
+
|[[Microduino-Joystick/zh]]||1||摇杆传感器
 
|}
 
|}
[[File:_Joystick_motor.jpg|600px|center|thumb]]
+
*其他设备
 +
**N20直流减速电机
 +
**2节电池
 +
**USB数据线
 +
**传感器连接线*1
 +
 
 +
[[File:_Joystick_motor.jpg|600px|center|thumb]]
  
 
==搭建硬件==
 
==搭建硬件==

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

Language English

目的

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

原理

通过检测Joystick摇杆在X,Y轴两个方向上的模拟量来控制直流电机转动的转速和方向。

设备

模块 数量 功能
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:将CoreUSB,Robot,Motor与Sensorhub叠堆。
  • Setup 2:将Joystick接到Sensorhub的A0,A1引脚上,电机接到Stepper的OUT1A,OUT1B引脚上。

软件调试

  • 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);

程序

[MicroduinoJoystickMotor]

结果

将Joystick的摇杆推到不同的角度,可以看到电机的转速及方向也会跟着变化。

视频