YFROBOT创客社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 36000|回复: 23
打印 上一主题 下一主题

Arduino入门教程—基础实验篇十 红外遥控

[复制链接]

签到天数: 867 天

[LV.10]以坛为家III

跳转到指定楼层
楼主
发表于 2013-6-10 10:14:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 AllBlue 于 2013-8-15 20:22 编辑

红外遥控实验

红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。这次实验我们就做一个遥控LED 灯实验。
实验元件:

UNO 实验套装(UNO兼容板一块、USB数据线一根、优质面包板一块、彩色面包板线若干 )

红外接收管 一个

mini遥控器 一个

LED 一枚

电阻220欧 一个

我们使用的红外接收管型号为HS0038,它有3个引脚分别为 out(信号输出)、GND(地)、Vcc(电源正极);实物图如下:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 支持支持1 反对反对

签到天数: 867 天

[LV.10]以坛为家III

沙发
 楼主| 发表于 2013-9-7 16:34:22 | 只看该作者
本帖最后由 AllBlue 于 2013-9-7 16:36 编辑

误码而已,这是遥控器的构造比较简单,没有中断!
程序中加入消除抖动函数应该会好点吧,还有按按键的时候,一下一下按,要送开之后再去按按键,这样的话,就不会出现这样的情况了!
遥控器如果发送不出去,串口是不会接受到任何数据的哦!(红外的距离有限,距离远了就可能接受不到了)
回复 支持 反对

使用道具 举报

签到天数: 3 天

[LV.2]偶尔看看I

板凳
发表于 2014-10-9 11:34:37 | 只看该作者
亲爱的大哥,我把那个红外库也解压复制进去了为什么每次跑上面的程序都是出现这样的错误那?是我的版本和你的库文件不兼容吗?还是程序有误?
回复 支持 反对

使用道具 举报

签到天数: 3 天

[LV.2]偶尔看看I

地板
发表于 2014-10-9 12:07:15 | 只看该作者
老是出现这样的提示arduino\arduino-1.0.6\libraries\RobotIRremote\IRremoteTools.cpp:5: error: 'TKD2' was not declared in this scope
回复 支持 反对

使用道具 举报

签到天数: 3 天

[LV.2]偶尔看看I

5#
发表于 2014-10-9 12:09:26 | 只看该作者
亲爱的大哥,我把那个红外库也解压复制进去了为什么每次跑上面的程序都是出现这样的错误那?是我的版本和你的库文件不兼容吗?还是程序有误?老是出现: arduino\arduino-1.0.6\libraries\RobotIRremote\IRremoteTools.cpp:5: error: 'TKD2' was not declared in this scope
回复 支持 反对

使用道具 举报

签到天数: 867 天

[LV.10]以坛为家III

6#
 楼主| 发表于 2015-7-2 09:47:25 | 只看该作者
yankuankuan 发表于 2014-10-9 12:09
亲爱的大哥,我把那个红外库也解压复制进去了为什么每次跑上面的程序都是出现这样的错误那?是我的版本和你 ...

额,那么久才看到,这个错误之前也遇到过,其实就是库文件冲突了,我们需要使用的IRremote库和官方新版IDE自带的RobotIRremote库冲突!
我之前的解决方法都是换个低版本的IDE,其实就是没有RobotIRremote库的IDE。或者删除IDE中的RobotIRremote库(如果想保留,可以先将其压缩成压缩文件,然后再删除文件夹,用的时候再解压)。
如果你不想换低版本,也不想删除库文件的话。将IRremote库放在"C:\Users\Administrator\Documents\Arduino\libraries "即我的文档 > Arduino文件夹 > libraries文件夹中既可以,编译正常 。
放在安装路径下的libraries,编译错误提示如下:
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2015-10-26 18:28:51 | 只看该作者
Arduino:1.6.5 (Windows 7), 板:"Arduino Yún"

C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::mark(int)':
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:172:3: error: 'TCCR2A' was not declared in this scope
   TCCR2A |= _BV(COM2B1); // Enable pin 3 PWM output
   ^
In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
                 from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:88,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremoteInt.h:16,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:13:
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:172:17: error: 'COM2B1' was not declared in this scope
   TCCR2A |= _BV(COM2B1); // Enable pin 3 PWM output
                 ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::space(int)':
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:180:3: error: 'TCCR2A' was not declared in this scope
   TCCR2A &= ~(_BV(COM2B1)); // Disable pin 3 PWM output
   ^
In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
                 from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:88,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremoteInt.h:16,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:13:
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:180:19: error: 'COM2B1' was not declared in this scope
   TCCR2A &= ~(_BV(COM2B1)); // Disable pin 3 PWM output
                   ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::enableIROut(int)':
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:207:3: error: 'TCCR2A' was not declared in this scope
   TCCR2A = _BV(WGM20);
   ^
In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
                 from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:88,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremoteInt.h:16,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:13:
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:207:16: error: 'WGM20' was not declared in this scope
   TCCR2A = _BV(WGM20);
                ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:208:3: error: 'TCCR2B' was not declared in this scope
   TCCR2B = _BV(WGM22) | _BV(CS20);
   ^
In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
                 from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:88,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremoteInt.h:16,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:13:
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:208:16: error: 'WGM22' was not declared in this scope
   TCCR2B = _BV(WGM22) | _BV(CS20);
                ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:208:29: error: 'CS20' was not declared in this scope
   TCCR2B = _BV(WGM22) | _BV(CS20);
                             ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:211:3: error: 'OCR2A' was not declared in this scope
   OCR2A = SYSCLOCK / 2 / khz / 1000;
   ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:212:3: error: 'OCR2B' was not declared in this scope
   OCR2B = OCR2A / 3; // 33% duty cycle
   ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::enableIRIn()':
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:224:3: error: 'TCCR2A' was not declared in this scope
   TCCR2A = 0;  // normal mode
   ^
In file included from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\io.h:99:0,
                 from c:\program files (x86)\arduino\hardware\tools\avr\avr\include\avr\pgmspace.h:88,
                 from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:28,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremoteInt.h:16,
                 from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:13:
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:229:7: error: 'TCCR2B' was not declared in this scope
   cbi(TCCR2B,CS22);
       ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:229:3: note: in expansion of macro 'cbi'
   cbi(TCCR2B,CS22);
   ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:229:14: error: 'CS22' was not declared in this scope
   cbi(TCCR2B,CS22);
              ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:229:3: note: in expansion of macro 'cbi'
   cbi(TCCR2B,CS22);
   ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:230:14: error: 'CS21' was not declared in this scope
   sbi(TCCR2B,CS21);
              ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:230:3: note: in expansion of macro 'sbi'
   sbi(TCCR2B,CS21);
   ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:231:14: error: 'CS20' was not declared in this scope
   cbi(TCCR2B,CS20);
              ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:231:3: note: in expansion of macro 'cbi'
   cbi(TCCR2B,CS20);
   ^
In file included from C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:13:0:
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremoteInt.h:43:22: error: 'TCNT2' was not declared in this scope
#define RESET_TIMER2 TCNT2 = INIT_TIMER_COUNT2
                      ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:236:3: note: in expansion of macro 'RESET_TIMER2'
   RESET_TIMER2;
   ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp: In function 'void TIMER2_OVF_vect()':
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremoteInt.h:43:22: error: 'TCNT2' was not declared in this scope
#define RESET_TIMER2 TCNT2 = INIT_TIMER_COUNT2
                      ^
C:\Program Files (x86)\Arduino\libraries\IRremote\IRremote.cpp:266:3: note: in expansion of macro 'RESET_TIMER2'
   RESET_TIMER2;
   ^
Multiple libraries were found for "IRremote.h"

Used: C:\Program Files (x86)\Arduino\libraries\IRremote

Not used: C:\Program Files (x86)\Arduino\libraries\RobotIRremote

编译有误。

  报告将会包含更多的信息
  "在编译时,输出详细信息"
  在 文件>首选项 中启用
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2015-10-26 18:30:00 | 只看该作者
请问这是什么情况
回复 支持 反对

使用道具 举报

签到天数: 867 天

[LV.10]以坛为家III

9#
 楼主| 发表于 2015-10-27 09:29:21 | 只看该作者
dalaobai1 发表于 2015-10-26 18:30
请问这是什么情况

库文件冲突了,试试看7、8楼的方法。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2015-11-12 22:19:29 | 只看该作者
额  我想说  如果我用的是mbp自带的os系统  去哪里修改库文件呢。。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2  

GMT+8, 2024-11-21 17:37 , Processed in 0.057289 second(s), 32 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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