加载中…
个人资料
Arduino-爱随心动
Arduino-爱随心动
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,378
  • 关注人气:4
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Arduino ide解决遇到的问题 error: 'TKD2' was not declared

(2016-12-20 21:25:22)
标签:

arduino

error'tkd2'

arduinoide解决遇到的

arduino链接红外接收

分类: arduion学习
解决Arduino ide  遇到的问题 error: 'TKD2' was not declared in this scope
今天开始学习arduino接红外接收器来接受遥控器发送的指令。控制一些外围设备。
使用简单的例子
//////////////////////////////////////////////////////////
///////arduino接红外接收器来接受遥控器发送的指令
//这段代码来自IRremote库中examples中的 IRrecvDemo
#include          //调用IRremote.h库
int RECV_PIN = 11;             //定义RECV_PIN变量为11
IRrecv irrecv(RECV_PIN);       //设置RECV_PIN(也就是11引脚)为红外接收端
decode_results results;        //定义results变量为红外结果存放位置

void setup(){
     Serial.begin(9600);          //串口波特率设为9600
     irrecv.enableIRIn();         //启动红外解码
}
 
void loop() {
     //是否接收到解码数据,把接收到的数据存储在变量results中
     if (irrecv.decode(&results)) {  
            //接收到的数据以16进制的方式在串口输出
            Serial.println(results.value, HEX); 
            irrecv.resume();  // 继续等待接收下一组信号
      }
}
//////////////////////////////////////////////////////////
编译发现遇到了个问题。首先一个错误是 
D:\Tools\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‘TKD2’ was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
exit status 1 
为开发板 Arduino/Genuino Uno 编译时出错。

提示我。TKD2没找到。 
然后还一个问题说是找到两个IRremote的库。使用了其中一个库。那个我们可以吧他给的路径的不是arduino ide安装目录的那个库删掉。使用arduino ide里的library提供的IRemote库来写 然而还是有这个错误。

看似是arduino ide提供的library里的一个cpp有错误。于是乎。用Notepad++打开看看。
打开错误提示的这个cpp文件。 
D:\Tools\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp

#include "IRremote.h"
#include "IRremoteTools.h"
#include

int RECV_PIN = TKD2; // the pin the IR receiver is connected to
IRrecv irrecv(RECV_PIN); // an instance of the IR receiver object
decode_results results; // container for received IR codes

void beginIRremote(){
    irrecv.enableIRIn(); // Start the receiver
}

bool IRrecived(){
    return irrecv.decode(&results);
}

void resumeIRremote(){
    irrecv.resume(); // resume receiver
}

unsigned long getIRresult(){
    return results.value;
}

我们发现他有个 TKD2 这个东西。但是没有找到具体的声明或者define 然后我们找他的h头文件。
也没有 TKD2 的声明

#include "IRremote.h"
#include "IRremoteTools.h"
这两个都找了。就是没有 TKD2 这个东西。 至于
这个就不用去找了。因为这是arduino的环境带的东西。外部的library肯定不会有某个变量或者define放到这里面去。 
所以 是 这个arduinio ide官方提供的这个库代码有问题????
我到官方找了反馈问题的地方。先在里面搜索了一下。有人说 1.6.7里面就有这个问题了。 
然而。他们用的 要么是不知所以然的东西。要么不是用官方教程写的代码。然后一些留言回复之类的也看的不知所云。
我自己想办法修改吧。 
第一种: 哪里报错修改哪里
修改报错文件的这个cpp 
D:\Tools\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp 
修改成如下:

##include "IRremote.h"
#include "IRremoteTools.h"
#include 

//int RECV_PIN = TKD2; // the pin the IR receiver is connected to
int my_RECV_PIN = 10;
IRrecv my_irrecv(my_RECV_PIN); // an instance of the IR receiver object
decode_results my_results; // container for received IR codes

void beginIRremote(){
my_irrecv.enableIRIn(); // Start the receiver
}

bool IRrecived(){
return my_irrecv.decode(&my_results);
}

void resumeIRremote(){
    my_irrecv.resume(); // resume receiver
}

unsigned long getIRresult(){
return my_results.value;
}

当然。这样要是用的时候需要修改端口的。但问题是解决了,可以测试试验了。编译成功显示
///////////////////////////////////////////////////
项目使用了 3,448 字节,占用了 (10%) 程序存储空间。最大为 32,256 字节。
全局变量使用了406字节,(19%)的动态内存,余留1,642字节局部变量。最大为2,048字节。
////////////////////////////////////////////////////////////////////////////////////////////////////
第二种方法。最简单了。看完IRremote.h 发现根本没有引用出错的那两个文件。
IRremoteTools.h 和 IRremoteTools.cpp ,直接删除得了。 

项目使用了 3,444 字节,占用了 (10%) 程序存储空间。最大为 32,256 字节。
全局变量使用了406字节,(19%)的动态内存,余留1,642字节局部变量。最大为2,048字节。

OK 改好了。
http://s7/mw690/006sFe21zy77m3JLEUK56&690ide解决遇到的问题 error: 'TKD2' was not declared" TITLE="Arduino ide解决遇到的问题 error: 'TKD2' was not declared" />

http://s4/mw690/006sFe21zy77m3LFD9113&690ide解决遇到的问题 error: 'TKD2' was not declared" TITLE="Arduino ide解决遇到的问题 error: 'TKD2' was not declared" />
发现个问题,按下遥控键不放,一直是FFFFFFFF ,为什么,如何改进呢!?
自己看来还得解决了个问题了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有