【Makeblock 制造万物】使用航模遥控器控制机器人
本帖最后由 Makeblock 于 2016-1-4 12:05 编辑http://v.youku.com/v_show/id_XMTQyNDk5NjQwMA==.html
因为大多数 USB 无线手柄都只有 10-15m 的控制距离。为了实现更远距离的遥控,可以考虑使用航模遥控器。常见的航模遥控器都有一公里以上的遥控距离。这是一个 天地飞7的12位七通道航模遥控器和接收机。
与其他常见的航模遥控器接收机一样,这款接收机输出的信号也是频率为 50Hz 左右,高电平脉宽范围1ms-2ms 的方波。为了让 Arduino 识别这种信号,需要用到 Arduino 的 pulseIn 函数。pulseIn 函数可以识别高电平或低电平的脉冲时间,精确到微秒。另外,还需要用 RJ25 转杜邦线将 Orion 主板与接收机连接在一起。
将接收机和一台 Starter 坦克小车连接在一起,然后安装航模的图传系统。
编写代码,并烧录到 Orion 主板上。
#include "MeOrion.h"
#include "Arduino.h"
#include "Servo.h"
// 通道3:前进后退 通道2:出拳收拳 通道1:左右旋转
#define PIN_HIT 2
#define PIN_FB 12
#define PIN_SPIN 13
// RC 接收机脉冲时间相关的参数
#define MIN_TIME 1010
#define MAX_TIME 2010
#define MID_TIME 1510
#define TIME_RANGE 1000
#define HALF_RANGE 500
// 舵机角度
#define ANGLE_IN 45
#define ANGLE_OUT 130
MeDCMotor leftWheel(M1);
MeDCMotor rightWheel(M2);
// 舵机最大速度,300°/s
#define MAX_SERVO_SPEED 300.0
MePort servoPort(PORT_6);
Servo myServo;
void setup()
{
Serial.begin(9600);
myServo.attach(servoPort.pin1());
}
void loop()
{
long timeHit = pulseIn(PIN_HIT, HIGH, 30000);
long timeFb = pulseIn(PIN_FB, HIGH, 30000);
long timeSpin = pulseIn(PIN_SPIN, HIGH, 30000);
Serial.print(timeFb);
Serial.print(", ");
Serial.print(timeSpin);
Serial.print(", ");
Serial.println(timeHit);
if ((0 != timeHit) && (0 != timeFb) && (0 != timeSpin))
{
// 控制行走
float linearSpeed = -(timeFb - MID_TIME) * 255.0 / HALF_RANGE;
float angularSpeed = (timeSpin - MID_TIME) * 255.0 / HALF_RANGE;
float leftSpeed = linearSpeed + angularSpeed;
float rightSpeed = linearSpeed - angularSpeed;
leftWheel.run(leftSpeed);
rightWheel.run(rightSpeed);
// 控制出拳
if (timeHit - MID_TIME > 50)
{
myServo.write(ANGLE_OUT);
}
else if (timeHit - MID_TIME < -50)
{
myServo.write(ANGLE_IN);
}
}
谢谢分享学习一下 suoma 发表于 2016-1-5 00:03
谢谢分享学习一下
:lol:loveliness: suoma 发表于 2016-1-5 00:03
谢谢分享学习一下
:lol:loveliness: 赞赞赞。。 楼主你好,想问一下接收机怎么链接? 本帖最后由 jxnclzh 于 2017-4-4 17:34 编辑
看代码的意思,是不是杆推的动作越大,脉冲宽度越长?MIDTIME是不是摇杆置于中位时的脉冲宽度?同理MAXTIME是摇杆至于最上位的脉冲宽度,MINTIME是摇杆最下位的宽度,不知我说的对不对呢?感觉很有用,因为我也买了这个遥控器遥控机器人;P 为什么我找不到MeOrion.h库文件呢?系统一直报错,是什么原因
fatal error: MeOrion.h: No such file or directory
#include "MeOrion.h"
页:
[1]