极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11944|回复: 2

新人求教:红外线遥控舵机,如何能做到按着按键不放的时候持续增加转向角度

[复制链接]
发表于 2017-5-7 00:40:52 | 显示全部楼层 |阅读模式
本帖最后由 xqxyk 于 2017-5-7 09:34 编辑

/*红外线遥控舵机,用长虹电视遥控器,按一次左或右方向键转动10度,按中心键返回90度,求教的问题是当持续按着左方向键或者右方向键的时候遥控器输出的编码是“4294967295”,如何能做到按着不放的时候持续增加转向角度,刚开始学习,不会发视频,请见谅,各位老师看一眼代码就清楚了。[email protected]*/

#include <Servo.h>

#include <IRremote.h>
Servo myservo;
int pos = 90;
int RECV_PIN = 11;//定义红外接收器的引脚为11
IRrecv irrecv(RECV_PIN); //解码结果放在decode_results构造的对象results里
decode_results results;
int ledpin=2;
int ledlpin=4;
int ledrpin=3;
void setup()
{
  myservo.attach(9);
irrecv.enableIRIn();
pinMode(ledpin,OUTPUT );
pinMode(ledlpin,OUTPUT );
pinMode(ledrpin,OUTPUT );
}
void loop()
{
if (irrecv.decode(&results)){ // 解码成功,收到一组红外线信号
   digitalWrite(ledpin,HIGH);
   switch(results.value){
     case 50160285:
     pos=pos-10;
     pos=constrain(pos,0,90);
     myservo.write(pos);
     digitalWrite(ledlpin,HIGH);
     break;
     case 50192925:
     pos=pos+10;
     pos=constrain(pos,90,180);
     myservo.write(pos);
     digitalWrite(ledrpin,HIGH);
     break;
     case 50155695:
     pos=90;
     myservo.write(pos);
     break;
   }
   delay(20);
   irrecv.resume();
}

else
{
   digitalWrite(ledpin,LOW);
   digitalWrite(ledlpin,LOW);
   digitalWrite(ledrpin,LOW);
}
}
回复

使用道具 举报

发表于 2017-6-15 07:50:17 | 显示全部楼层
顶一个  我也有同样的疑惑,这个好像和遥控器持续发送命令有关系
回复 支持 反对

使用道具 举报

发表于 2017-6-17 11:59:37 | 显示全部楼层
我记得重复按键后会不停发送ffff,你用红外接收模块从串口看下,在程序里用while判断fffff就重复执行舵机旋转
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-24 12:14 , Processed in 0.042350 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表