用红外遥控控制舵机,想做成电视音量那样,按住遥控,持续运转
用红外遥控做项目,打算做成一按遥控上的一个键,舵机持续正向运转,再按另一个键,舵机持续反向运转,但是现在按一次,它只转一下,并非持续转,求助#include <IRremote.h>
int RECV_PIN = A0;
#include <Servo.h>
Servo myservo1;
int i = 90;
int a;
long LED1A = 0xE318261B;
long LED1B = 0x511DBB;
long LED2A = 0xEE886D7F;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
pinMode(RECV_PIN, INPUT);
myservo1.attach(3); //IO输出
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);//以16进制换行输出接收代码
Serial.println();//为了便于观看输出结果增加一个空
{irrecv.resume();
delay(5);}
// 接收下一个值}
if (results.value == LED1A )
{
a=i;
a+=5;
myservo1.write(a);
i=a;
}
if (results.value == LED1B )
{
a=i;
a-=5;
myservo1.write(a);
i=a;
}
}
delay(5);
} 有的遥控器按下不放只会发出一次码,那永远实现不了你的功能, 用摄像头观察下。
首先你要确定你舵机是可以连续旋转的
做个状态机,用按键切换状态
现在按一次,它只转一下,并非持续转,检测脉冲是否连续 你自己做一个红外发射器吧。
你手里的现成的mp3遥控器,不出意外,都是发NEC码的,不论哪个键,按下不放时,只会发出一次特定码,之后就一直在不断的重复发FFFFFF。
只能帮你到这儿了。 林定祥 发表于 2015-4-18 04:42 static/image/common/back.gif
有的遥控器按下不放只会发出一次码,那永远实现不了你的功能, 用摄像头观察下。
嗯嗯,谢谢 zoologist 发表于 2015-4-18 07:46 static/image/common/back.gif
首先你要确定你舵机是可以连续旋转的
做个状态机,用按键切换状态
就是做一个往复的函数,用红外做切断吗?
我也这么想过,可是不知道怎么实现啊 suoma 发表于 2015-4-18 07:58 static/image/common/back.gif
现在按一次,它只转一下,并非持续转,检测脉冲是否连续
怎么检测呢? wwwusr 发表于 2015-4-18 08:18 static/image/common/back.gif
你自己做一个红外发射器吧。
你手里的现成的mp3遥控器,不出意外,都是发NEC码的,不论哪个键,按下不放时 ...
嗯,那我换个家用的遥控器试试 本帖最后由 zoologist 于 2015-4-18 09:57 编辑
15275285755 发表于 2015-4-18 09:07 static/image/common/back.gif
就是做一个往复的函数,用红外做切断吗?
我也这么想过,可是不知道怎么实现啊
大不了你的舵机控制输出单独写在一个timer的中断里面
比如,你搞一个数组 output 然后timer去读这个数组,根据数组指示进行输出
然后你收到的遥控信息直接去修改数组 15275285755 发表于 2015-4-18 09:08 static/image/common/back.gif
怎么检测呢?
示波器 15275285755 发表于 2015-4-18 09:08 static/image/common/back.gif
怎么检测呢?
用手机的摄像头看红外发射,看他连续发光还是一次发光.
页:
[1]