“红外控制舵机角度”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{{Language| 红外控制舵机角度}} {| style="width: 800px;" |- | ==目的== 通过红外遥控器控制舵机的角度。 ==原理== 利用红外接收传感器接收红...")
 
第14行: 第14行:
 
|模块||数量||功能
 
|模块||数量||功能
 
|-
 
|-
|[[Microduino-CoreUSB/zh]]||1||核心板
+
|[[mCookie-CoreUSB/zh]]||1||核心板
 
|-
 
|-
|[[Microduino-Sensorhub/zh]]||1||传感器转接板
+
|[[mCookie-Sensorhub/zh]]||1||传感器转接板
 
|-
 
|-
| [[Microduino-IR receiver/zh]]||1||红外接收传感器  
+
|[[Microduino-IR receiver/zh]]||1||红外接收传感器  
 
|-
 
|-
| [[Microduino-Servo/zh]]||1||舵机转接板
+
|[[Microduino-Servo Connector/zh]]||1||舵机连接板
|-
 
| [[Mirco Servo/zh]]||1||舵机
 
 
|}
 
|}
[[File:IR_servo.jpg|600px|center|thumb]]
+
*其他设备
 +
**舵机
 +
**红外遥控器
 +
**USB数据连接线
 +
**传感器连接线*2
 +
[[File:IR_servo.jpg|600px|center|thumb]]
 +
 
 +
 
  
 +
==准备==
 +
*Setup 1:将Microduino-Servo Connector和舵机连接,接到上一排排针上。
 +
[[file:mCookie-Servo Connector-sensor.JPG|600px|center]]
 +
*Setup 2:将Microduino-Servo Connector和Hub的模拟口IIC接起来。将红外接收传感器接到Hub的D10引脚上。
 +
[[file:mCookie-Servo Connector-IR-hub.JPG|600px|center]]
 +
*Setup 3:将所有设备连接在一起。通过USB数据线将接入电脑。
 +
[[file:mCookie-servo-IR-pc.JPG|600px|center]]
  
==搭建硬件==
+
==调试==
*Setup 1:将CoreUSB与Sensorhub叠堆。
+
*打开Arduino IDE,将下列代码复制到IDE中。
[[File:CoreUSB_10DOF_Sensorhub.jpg|600px|center|thumb]]
+
<source lang="cpp">
*Setup 2:将红外接收传感器接到Sensorhub的D10引脚上.
+
 
[[file:Microduino-sensorhub_rule.JPG|thumb|800px|center]]
+
</source>
[[File:ir_receive.jpg|600px|center|thumb]]
+
*选择正确的板卡和COM端口
*Setup 2:将舵机通过舵机转接板接到Sensorhub的D8引脚上.
+
[[file:upload.JPG|600px|center]]
[[File:servo_convert.jpg|600px|center|thumb]]
+
*编译
 +
**编译时会提示保存项目,用户可以自己命名保存到你的文件夹即可。
 +
*下载
 +
**编译成功后可以直接下载,提示下载成功表示程序下载完毕。
 +
[[file:upload-Joystick-servo.JPG|600px|center]]
 +
*结果
 +
**通过“+”舵机角度增加10°,“-”舵机的角度减少10°。
 +
**数字0-9分别对应指定的角度。
  
 
==软件调试==
 
==软件调试==
第116行: 第135行:
 
   }
 
   }
 
</source>
 
</source>
 
==程序==
 
[[https://github.com/Microduino/Microduino_Tutorials/tree/master/MCookie_Tutorial/MicroduinoRemoteServo MicroduinoRemoteServo]]
 
  
 
==结果==
 
==结果==

2015年11月24日 (二) 09:28的版本

Language English

目的

通过红外遥控器控制舵机的角度。

原理

利用红外接收传感器接收红外遥控器发射的红外信号,根据不同的红外信号控制舵机旋转到不同的角度。

设备

模块 数量 功能
mCookie-CoreUSB/zh 1 核心板
mCookie-Sensorhub/zh 1 传感器转接板
Microduino-IR receiver/zh 1 红外接收传感器
Microduino-Servo Connector/zh 1 舵机连接板
  • 其他设备
    • 舵机
    • 红外遥控器
    • USB数据连接线
    • 传感器连接线*2


准备

  • Setup 1:将Microduino-Servo Connector和舵机连接,接到上一排排针上。
  • Setup 2:将Microduino-Servo Connector和Hub的模拟口IIC接起来。将红外接收传感器接到Hub的D10引脚上。
  • Setup 3:将所有设备连接在一起。通过USB数据线将接入电脑。

调试

  • 打开Arduino IDE,将下列代码复制到IDE中。

  • 选择正确的板卡和COM端口
Upload.JPG
  • 编译
    • 编译时会提示保存项目,用户可以自己命名保存到你的文件夹即可。
  • 下载
    • 编译成功后可以直接下载,提示下载成功表示程序下载完毕。
  • 结果
    • 通过“+”舵机角度增加10°,“-”舵机的角度减少10°。
    • 数字0-9分别对应指定的角度。

软件调试

  • 红外遥控编码定义,此处采用NEC编码格式
//遥控器按键编码定义
#define INCREASE 0xFFA857   //增加+
#define DECREASE 0xFFE01F   //减少-
#define NUM_0 0xFF6897      //数字0
#define NUM_1 0xFF30CF      //数字1
#define NUM_2 0xFF18E7      //数字2
#define NUM_3 0xFF7A85      //数字3
#define NUM_4 0xFF10EF      //数字4
#define NUM_5 0xFF38C7      //数字5
#define NUM_6 0xFF5AA5      //数字6
#define NUM_7 0xFF42BD      //数字7
#define NUM_8 0xFF4AB5      //数字8
#define NUM_9 0xFF52AD      //数字9
 
Servo myservo;  // 舵机
     
int RECV_PIN = 10;    //红外接收引脚
IRrecv irrecv(RECV_PIN);   //红外接收
decode_results results;
 
int pos = 0;    //舵机角度
  • 接收红外遥控器信号,判断按键状态,控制舵机旋转到特定角度
if(irrecv.decode(&results))    //接收红外编码
  {
     switch(results.value)     //判断按键
     {
       case INCREASE:
         pos += 10;
         if(pos > 180)
            pos = 180;
         break;
       case DECREASE:
         pos -= 10;
         if(pos < 0)
           pos = 0;
         break;
       case NUM_0:
         pos = 0;
         break;
       case NUM_1:
         pos = 20;
         break;
       case NUM_2:
         pos = 40;
         break;
       case NUM_3:
         pos = 60;
         break;
       case NUM_4:
         pos = 90;
         break;
       case NUM_5:
         pos = 100;
         break;
       case NUM_6:
         pos = 120;
         break;     
       case NUM_7:
         pos = 140;
         break;
       case NUM_8:
         pos = 160;
         break;     
       case NUM_9:
         pos = 180;
         break;
       default:
         break; 
     }
     irrecv.resume();        //接收下一个信号
     myservo.write(pos);     //舵机旋转
     delay(100);     
  }

结果

红外遥控按下不同的按键 控制舵机旋转到不同的角度。

视频