欢迎来到天天文库
浏览记录
ID:58819342
大小:22.00 KB
页数:5页
时间:2020-10-25
《arduino遥控接收(mini遥控器全部按键响应).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、//初学时注意://无线遥控模块发射的高电平,接受时接收到的是低电平响应。为提高响应遥控灵敏度,//本文放宽了对时间的约束。//使用时://请先编辑功能模块函数(workfun),后添加到(switch)按键下。//------------------------workfun-------------------Voidmode1()//模块一{}Voidmode2()//模块二{}//................//可编辑需要遥控下执行的模块//-----------------------------------------------
2、---------//--------------默认接收引脚为数字8-----------------------intPulse_Width=0;//存储脉宽intir_code=0x00;//命令值//---------------timer------------------voidtimer1_init(void)//定时器初始化函数{TCCR1A=0X00;TCCR1B=0X05;//给定时器时钟源TCCR1C=0X00;TCNT1=0X00;TIMSK1=0X00;//禁止定时器溢出中断}//--------------deal--
3、-----------------------voidremote_deal(void)//执行译码结果函数{switch(ir_code){case0xff00://停止按键//要执行的函数例如Mode1();break;case0xf30c://0//要执行的函数break;case0xef10://1//要执行的函数break;case0xee11://2//要执行的函数break;case0xed12://3//要执行的函数break;case0xeb14://4//要执行的函数break;case0xea15://5//要执行的函数br
4、eak;case0xe916://6//要执行的函数break;case0xe718://7//要执行的函数break;case0xe619://8//要执行的函数break;case0xe51a://9//要执行的函数break;case0xfe01://vol+//要执行的函数break;case0xfd02://stop//要执行的函数break;case0xfb04://上一曲//要执行的函数break;case0xfa05://暂停//要执行的函数break;case0xf906://下一曲//要执行的函数break;case0xf70
5、8://下三角//要执行的函数break;case0xf609://vol-//要执行的函数break;case0xf50a://上三角//要执行的函数break;case0xf20d://EQ//要执行的函数break;case0xf10e://ST//要执行的函数break;}}//--------------------------------------charlogic_value()//判断逻辑值“0”和“1”子函数{while(!(digitalRead(8)));//低等待Pulse_Width=TCNT1;TCNT1=0;if(
6、Pulse_Width>=5&&Pulse_Width<=12)//低电平560us{while(digitalRead(8));//是高就等待Pulse_Width=TCNT1;TCNT1=0;if(Pulse_Width>=5&&Pulse_Width<=12)//接着高电平560usreturn0;elseif(Pulse_Width>=22&&Pulse_Width<=30)//接着高电平1.7msreturn1;}return-1;}//------------------------------------------voidpuls
7、e_deal()//接收地址码和命令码脉冲函数{inti;//执行8个0for(i=0;i<8;i++){if(logic_value()!=0)//不是0return;}//执行6个1for(i=0;i<6;i++){if(logic_value()!=1)//不是1return;}//执行1个0if(logic_value()!=0)//不是0return;//执行1个1if(logic_value()!=1)//不是1return;//解析遥控器编码中的command指令ir_code=0x00;//清零for(i=0;i<16;i++){
8、if(logic_value()==1){ir_code
9、=(1<
此文档下载收益归作者所有