《arduino遥控接收(mini遥控器全部按键响应)》由会员分享,可在线阅读,更多相关《arduino遥控接收(mini遥控器全部按键响应)(5页珍藏版)》请在金锄头文库上搜索。
1、/初学时注意: / 无线遥控模块发射的高电平,接受时接收到的是低电平响应。为提高响应遥控灵敏度,/本文放宽了对时间的约束。/使用时: /请先编辑功能模块函数(workfun),后添加到(switch)按键下。/-workfun-Void mode1()/模块一Void mode2()/模块二/./可编辑需要遥控下执行的模块/-/-默认接收引脚为数字8-int Pulse_Width=0;/存储脉宽 int ir_code=0x00;/命令值/-timer-void timer1_init(void)/定时器初始化函数 TCCR1A = 0X00; TCCR1B = 0X05;/给定时器时钟源
2、TCCR1C = 0X00; TCNT1 = 0X00; TIMSK1 = 0X00;/禁止定时器溢出中断/-deal-void remote_deal(void)/执行译码结果函数 switch(ir_code) case 0xff00:/停止按键/要执行的函数例如 Mode1(); break; case 0xf30c:/ 0 /要执行的函数 break; case 0xef10:/ 1 /要执行的函数 break; case 0xee11:/ 2 /要执行的函数 break; case 0xed12:/ 3 /要执行的函数 break; case 0xeb14:/ 4 /要执行的函数 b
3、reak; case 0xea15:/ 5 /要执行的函数 break; case 0xe916:/ 6 /要执行的函数 break; case 0xe718:/ 7 /要执行的函数 break; case 0xe619:/ 8 /要执行的函数 break; case 0xe51a:/ 9 /要执行的函数 break; case 0xfe01:/ vol+ /要执行的函数 break; case 0xfd02:/ stop /要执行的函数 break; case 0xfb04:/ 上一曲 /要执行的函数 break; case 0xfa05:/ 暂停 /要执行的函数 break; case 0
4、xf906:/ 下一曲 /要执行的函数 break; case 0xf708:/ 下三角 /要执行的函数 break; case 0xf609:/ vol- /要执行的函数 break; case 0xf50a:/ 上三角 /要执行的函数 break; case 0xf20d:/ EQ /要执行的函数 break; case 0xf10e:/ ST /要执行的函数 break; /-char logic_value()/判断逻辑值“0”和“1”子函数 while(!(digitalRead(8); /低等待 Pulse_Width=TCNT1; TCNT1=0; if(Pulse_Width=
5、5&Pulse_Width=5&Pulse_Width=22&Pulse_Width=30) /接着高电平1.7ms return 1; return -1;/-void pulse_deal()/接收地址码和命令码脉冲函数 int i; /执行8个0 for(i=0; i8; i+) if(logic_value() != 0) /不是0 return; /执行6个1 for(i=0; i6; i+) if(logic_value()!= 1) /不是1 return; /执行1个0 if(logic_value()!= 0) /不是0 return; /执行1个1 if(logic_val
6、ue()!= 1) /不是1 return; /解析遥控器编码中的command指令 ir_code=0x00;/清零 for(i=0; i16;i+ ) if(logic_value() = 1) ir_code |=(1=1800) /当高电平持续时间超过100ms,表明此时没有按键按下 ir_code = 0xff00; return; /如果高电平持续时间不超过100ms TCNT1=0X00; while(!(digitalRead(8); /低等待 Pulse_Width=TCNT1; TCNT1=0; if(Pulse_Width=130&Pulse_Width=60&Pulse
7、_Width=30&Pulse_Width=5&Pulse_Width=12)/560us return; /-void setup() /- pinMode(8,INPUT);/设置红外接收引脚为输入 /其他初始化void loop() timer1_init();/定时器初始化 while(1) remote_decode(); /译码 remote_deal(); /执行译码结果 在能力与知识结构方面,要求学生应具有扎实的专业和日语语言基础,熟练掌握日语听、说、读、写、译的基本技能;了解日本社会及日本文化等方面的基本知识,熟悉日本国情,具有一定的日本人文知识及运用这些知识与日本人进行交流的能力。