极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14946|回复: 11

用红外遥控控制舵机,想做成电视音量那样,按住遥控,持续运转

[复制链接]
发表于 2015-4-17 23:17:11 | 显示全部楼层 |阅读模式
用红外遥控做项目,打算做成一按遥控上的一个键,舵机持续正向运转,再按另一个键,舵机持续反向运转,但是现在按一次,它只转一下,并非持续转,求助

  1. #include <IRremote.h>
  2. int RECV_PIN = A0;
  3. #include <Servo.h>
  4. Servo myservo1;
  5. int i = 90;
  6. int a;
  7. long LED1A = 0xE318261B;
  8. long LED1B = 0x511DBB;
  9. long LED2A = 0xEE886D7F;
  10. IRrecv irrecv(RECV_PIN);
  11. decode_results results;
  12. void setup()
  13. {
  14.   pinMode(RECV_PIN, INPUT);
  15. myservo1.attach(3);        //IO输出
  16.   Serial.begin(9600);
  17.   irrecv.enableIRIn();
  18. }

  19. void loop()
  20. {
  21.   if (irrecv.decode(&results))
  22.   {
  23.     Serial.println(results.value, HEX);//以16进制换行输出接收代码
  24.   Serial.println();//为了便于观看输出结果增加一个空
  25. {irrecv.resume();
  26. delay(5);}
  27.   // 接收下一个值}

  28.   if (results.value == LED1A )
  29.       
  30.      {  
  31. a=i;
  32. a+=5;
  33. myservo1.write(a);  
  34. i=a;
  35.   }
  36.   if (results.value == LED1B )
  37.       
  38.      {  
  39. a=i;
  40. a-=5;
  41. myservo1.write(a);  
  42. i=a;
  43.   }
  44. }
  45. delay(5);


  46. }
复制代码
回复

使用道具 举报

发表于 2015-4-18 04:42:37 | 显示全部楼层
有的遥控器按下不放只会发出一次码,那永远实现不了你的功能, 用摄像头观察下。
回复 支持 反对

使用道具 举报

发表于 2015-4-18 07:46:30 | 显示全部楼层


首先你要确定你舵机是可以连续旋转的

做个状态机,用按键切换状态
回复 支持 反对

使用道具 举报

发表于 2015-4-18 07:58:54 | 显示全部楼层
现在按一次,它只转一下,并非持续转,检测脉冲是否连续
回复 支持 反对

使用道具 举报

发表于 2015-4-18 08:18:27 | 显示全部楼层
你自己做一个红外发射器吧。
你手里的现成的mp3遥控器,不出意外,都是发NEC码的,不论哪个键,按下不放时,只会发出一次特定码,之后就一直在不断的重复发FFFFFF。
只能帮你到这儿了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-18 09:06:09 | 显示全部楼层
林定祥 发表于 2015-4-18 04:42
有的遥控器按下不放只会发出一次码,那永远实现不了你的功能, 用摄像头观察下。

嗯嗯,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-18 09:07:53 | 显示全部楼层
zoologist 发表于 2015-4-18 07:46
首先你要确定你舵机是可以连续旋转的

做个状态机,用按键切换状态

就是做一个往复的函数,用红外做切断吗?
我也这么想过,可是不知道怎么实现啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-18 09:08:13 | 显示全部楼层
suoma 发表于 2015-4-18 07:58
现在按一次,它只转一下,并非持续转,检测脉冲是否连续

怎么检测呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-18 09:08:41 | 显示全部楼层
wwwusr 发表于 2015-4-18 08:18
你自己做一个红外发射器吧。
你手里的现成的mp3遥控器,不出意外,都是发NEC码的,不论哪个键,按下不放时 ...

嗯,那我换个家用的遥控器试试
回复 支持 反对

使用道具 举报

发表于 2015-4-18 09:54:44 | 显示全部楼层
本帖最后由 zoologist 于 2015-4-18 09:57 编辑
15275285755 发表于 2015-4-18 09:07
就是做一个往复的函数,用红外做切断吗?
我也这么想过,可是不知道怎么实现啊


大不了你的舵机控制输出单独写在一个timer的中断里面

比如,你搞一个数组 output [100]  然后timer去读这个数组,根据数组指示进行输出

然后你收到的遥控信息直接去修改数组
回复 支持 反对

使用道具 举报

发表于 2015-4-18 11:04:13 | 显示全部楼层
15275285755 发表于 2015-4-18 09:08
怎么检测呢?

              示波器
回复 支持 反对

使用道具 举报

发表于 2015-4-18 17:03:42 | 显示全部楼层
15275285755 发表于 2015-4-18 09:08
怎么检测呢?

用手机的摄像头看红外发射,看他连续发光还是一次发光.
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-18 21:29 , Processed in 0.036385 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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