“第十一课--Microduino 红外控制舵机角度/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{| style="width: 800px;" |- | ==目的== 本教程将教大家使用红外来控制舵机转动,话不多说,请看原理图和代码 ==设备== '''Microduino-Core'''...")
 
程序
 
(未显示2个用户的9个中间版本)
第1行: 第1行:
 +
{{Language|Lesson_11--Microduino_Infrared_Controls_Servo_Angle}}
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-
第6行: 第7行:
  
 
==设备==
 
==设备==
'''[[Microduino-Core]]'''
+
*'''[[Microduino-Core/zh]]'''
'''[[Microduino-FT232R]]'''
+
*'''[[Microduino-USBTTL/zh]]'''
 
*其他硬件设备
 
*其他硬件设备
 
**面包板跳线  一盒   
 
**面包板跳线  一盒   
第15行: 第16行:
 
**舵机            一个
 
**舵机            一个
 
**USB数据连接线  一根
 
**USB数据连接线  一根
 +
 +
[[File:intermediateLesson11All1.jpg|600px|center|thumb]]
 +
[[File:intermediateLesson11All2.jpg|600px|center|thumb]]
  
 
'''舵机'''
 
'''舵机'''
 
[[File:第十一课-舵机.jpg|600px|center|thumb]]
 
[[File:第十一课-舵机.jpg|600px|center|thumb]]
 
舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。
 
舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。
 
  
 
==原理图==
 
==原理图==
第26行: 第29行:
  
 
==程序==
 
==程序==
<source lang="cpp">
+
[https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_Advanced/MicroduinoIRControlServeAngle MicroduinoIRControlServeAngle]
 
 
#include <IRremote.h>
 
#include <Servo.h>
 
 
 
int action;
 
int deg=0;
 
int t;
 
 
 
int RECV_PIN = 11;//定义红外接收器的引脚为11
 
IRrecv irrecv(RECV_PIN);
 
Servo servo;
 
decode_results results;
 
 
 
int deckey(unsigned long t)
 
{
 
  switch(t){
 
    case 0xFD08F7://按钮1的编码
 
    return 1;
 
    break;
 
    case 0xFD8877://按钮2的编码
 
    return 2;
 
    break;
 
    case 0xFD48B7://按钮3的编码
 
    return 3;
 
    break;
 
    case 0xFD28D7://按钮4的编码
 
    return 4;
 
    break;
 
    case 0xFDA857://按钮5的编码
 
    return 5;
 
    break;
 
    case 0xFD6897://按钮6的编码
 
    return 6;
 
    break;
 
    case 0xFD18E7://按钮7的编码
 
    return 7;
 
    break;
 
    case 0xFD9867://按钮8的编码
 
    return 8;
 
    break;
 
    case 0xFD58A7://按钮9的编码
 
    return 9;
 
    break;
 
    default:
 
    return 0;
 
    break;
 
  }
 
 
 
 
void setup()
 
{
 
  Serial.begin(9600);
 
  irrecv.enableIRIn(); // 初始化红外接收器
 
  servo.attach(9);//D9pin
 
  servo.write(0);
 
  t=0;
 
}
 
 
 
void loop() {
 
 
 
  deg=servo.read();
 
  if (irrecv.decode(&results))
 
  {
 
    action=deckey(results.value);
 
    Serial.println(results.value, HEX);//以16进制换行输出接收代码
 
    Serial.println(action);
 
    Serial.println();//为了便于观看输出结果增加一个空行
 
 
 
    switch(action)
 
    {
 
      case 1:
 
      servo.write(0);
 
      break;
 
      case 2:
 
      servo.write(20);
 
      break;
 
      case 3:
 
      servo.write(40);
 
      break;
 
      case 4:
 
      servo.write(60);
 
      break;
 
      case 5:
 
      servo.write(80);
 
      break;
 
      case 6:
 
      servo.write(100);
 
      break;
 
      case 7:
 
      servo.write(120);
 
      break;
 
      case 8:
 
      servo.write(140);
 
      break;
 
      case 9:
 
      servo.write(160);
 
      break;
 
    }
 
    delay(10);
 
    irrecv.resume();
 
  }
 
 
 
}
 
 
 
</source>
 
  
 
==调试==
 
==调试==
第140行: 第38行:
  
 
步骤三:搭建硬件电路,注意引脚接法;
 
步骤三:搭建硬件电路,注意引脚接法;
[[File:第十一课-Microduino红外控制舵机角度图1.jpg|600px|center|thumb]]
+
 
[[File:第十一课-Microduino红外控制舵机角度图2.jpg|600px|center|thumb]]
+
[[File:intermediateLesson11Connect1.jpg|600px|center|thumb]]
 +
[[File:intermediateLesson11Connect2.jpg|600px|center|thumb]]
 +
 
 +
 
 
步骤四:打开串口监视器,用遥控器对着红外接收器按键,会显示红外编码。
 
步骤四:打开串口监视器,用遥控器对着红外接收器按键,会显示红外编码。
 
[[File:第十一课-串口显示红外接收编码并转换为按键值.jpg|600px|center|thumb]]
 
[[File:第十一课-串口显示红外接收编码并转换为按键值.jpg|600px|center|thumb]]
第148行: 第49行:
 
按遥控机按键1,2,3,4.。。。,看舵机开始动了!
 
按遥控机按键1,2,3,4.。。。,看舵机开始动了!
 
==视频==
 
==视频==
 +
http://v.youku.com/v_show/id_XNjc1NjQ4Mzcy.html

2014年10月29日 (三) 04:29的最新版本

Language English

目的

本教程将教大家使用红外来控制舵机转动,话不多说,请看原理图和代码

设备

舵机

第十一课-舵机.jpg

舵机(英文叫Servo):它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。通过发送信号,指定输出轴旋转角度。舵机一般而言都有最大旋转角度(比如180度。)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。普通直流电机无法反馈转动的角度信息,而舵机可以。用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。

原理图

第十一课-Microduino红外控制舵机角度原理图.jpg

在原理图中,黑线为接地线都接到GUN,红线为电源线都接到5V电压,蓝线为红外接收器的信号线,黄线为舵机的信号线

程序

MicroduinoIRControlServeAngle

调试

步骤一:下载IRremote库 [1]

步骤二:把压缩包解压到Arduino IDE的libraries文件夹中

步骤三:搭建硬件电路,注意引脚接法;

IntermediateLesson11Connect1.jpg
IntermediateLesson11Connect2.jpg


步骤四:打开串口监视器,用遥控器对着红外接收器按键,会显示红外编码。

第十一课-串口显示红外接收编码并转换为按键值.jpg

结果

按遥控机按键1,2,3,4.。。。,看舵机开始动了!

视频

http://v.youku.com/v_show/id_XNjc1NjQ4Mzcy.html