红外控制舵机角度

来自Microduino Wikipedia
Hustshenyang@126.com讨论 | 贡献2015年7月4日 (六) 03:48的版本 (Created page with "{{Language| 红外控制舵机角度}} {| style="width: 800px;" |- | ==目的== 通过红外遥控器控制舵机的角度。 ==原理== 利用红外接收传感器接收红...")
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
Language English

目的

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

原理

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

设备

模块 数量 功能
Microduino-CoreUSB/zh 1 核心板
Microduino-Sensorhub/zh 1 传感器转接板
Microduino-IR receiver/zh 1 红外接收传感器
Microduino-Servo/zh 1 舵机转接板
Mirco Servo/zh 1 舵机


搭建硬件

  • Setup 1:将CoreUSB与Sensorhub叠堆。
  • Setup 2:将红外接收传感器接到Sensorhub的D10引脚上.
Microduino-sensorhub rule.JPG
  • Setup 2:将舵机通过舵机转接板接到Sensorhub的D8引脚上.

软件调试

  • 红外遥控编码定义,此处采用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);     
  }

程序

[MicroduinoRemoteServo]

结果

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

视频