1. ホーム
  2. アルドゥイーノ

Arduino ide 1.6.9のエラーに関する問題: 'TKD2' はこのスコープで宣言されていません。

2022-02-28 07:32:52
<パス

以前は、リモコンから送信されたコマンドを受信するためにIRレシーバをリンクするためにArduinoを使用していました。いくつかの周辺機器を制御します。githubからダウンロードしたライブラリを使用しました。

最近また使おうと思ったら 問題が見つかりました。まずエラーは
D:\ToolsArduino

RobotIRremote

IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope

int RECV_PIN = TKD2; // IRレシーバが接続されているピン

            ^


終了ステータス 1
開発ボードArduino/Genuino Uno用のコンパイルに失敗しました。

tkd2 が見つからないとプロンプトが表示されました。
また、「IRremoteのライブラリが2つ見つかりました」という質問もありました。ライブラリのうち1つが使用されていました。arduino ideのインストールディレクトリではない、彼の出したパスのライブラリを削除すればいいのです。arduino ideのライブラリで提供されているIRemoteライブラリを使用して書き込めばいいのですが、それでもこのエラーは出ます。

D:\ToolsArduino.cpp:5:16: error: 'TKD2' was not declared in this scope

int RECV_PIN = TKD2; // IRレシーバが接続されているピン

            ^


終了ステータス 1
開発ボードArduino/Genuino Uno用のコンパイルに失敗しました。

arduino.cc で提供されている公式のリモートコントロールサンプルを使用しています。
https://www.arduino.cc/en/Tutorial/RobotRemoteControl

この例では、彼は物を持ちすぎています。私が必要としないものがたくさんあります。私は彼のリモコン受信ボタンのコードが欲しいだけです。それで十分です。しかし、ライブラリのcppの1つにエラーがあることを示唆しています。

arduino ideが提供するライブラリのcppのいずれかにエラーがあるようです。そこで 開いて見てください。
エラーが示唆するこのcppファイルを開いてみてください。
D:\ToolsArduinoArduinolibrariesRobotIRremotesrcIRremoteTools.cpp

#include "IRremote.h"
#include "IRremoteTools.h"
#include 
We find that he has a TKD2 thing. But there's no specific declaration or definition found above and then we look for his h header file.
#ifndef IRREMOTETOOLS_H
#define IRREMOTETOOLS_H

extern void beginIRremote();

extern bool IRrecived();

extern void resumeIRremote();

extern unsigned long getIRresult();

#endif
There is also no TKD2 declaration
Then go on to D:\Tools\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp 

There are several .h header files introduced inside. Look for the TKD2 thing.
However. I bar #include "IRremote.h" #include "IRremoteTools.h" I looked for both of these. There's just no such thing as TKD2. As for
#include 
There's no need to go looking for this one. Because this is something that comes with the arduino environment. The external library will definitely not have a variable or a definition to put in here. 

So, we conclude that there is something wrong with the official library code provided by arduinio ide ????I'm not very well read. I don't read much. But as far as we can find out the reason is that his official library file code is wrong 。。。。 Okay. I went to the official place to find feedback on the problem. First, I searched in there. Someone said the issue was in 1.6.7.
However. They're using either something that they don't know what it is. Either the code was not written with the official tutorial. And then some of the message responses and such are also uninformative to read.
Of course here's what I'm going to say. I'm getting this error here. It's written according to the code in the official arduino.cc tutorial, copied and pasted from the original. And checked for basic syntax errors. Compiling gives this error error: 'TKD2' was not declared in this scope Tutorial on using the official arduino.cc remote library
https://www.arduino.cc/en/Tutorial/RobotRemoteControl Again, I copied and pasted directly. Still have this error. Oops. Let's just fix it ourselves. It's easier too. We have two ways to solve this problem.
The first.
Modify this cpp of the error report file
D:\Tools\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp
right? #include "IRremote.h" #include "IRremoteTools.h" #include TKD2 in there is changed to 11 or the IO port that you use to plug the IR receiver head into for data reception
Change it to something like this
#include "IRremote.h" #include "IRremoteTools.h" #include I changed it here to 11 Of course. So if you need to change the port. I also have to change the cpp file of the library of the arduino ide. That's a bit of a crap shoot. Here's a second way to do it.
The second way. It's written in C++ syntax.
Of course. You can just copy my code and that's enough.
Modify
D:\Tools\Arduino\libraries\RobotIRremote\src\IRremoteTools.h
#ifndef IRREMOTETOOLS_H #define IRREMOTETOOLS_H extern void beginIRremote(); extern bool IRrecived(); extern void resumeIRremote(); extern unsigned long getIRresult(); #endif Modify this h file to #ifndef IRREMOTETOOLS_H #define IRREMOTETOOLS_H extern void beginIRremote( int receivePin ); extern bool IRrecived(); extern void resumeIRremote(); extern unsigned long getIRresult(); #endif It is the extern void beginIRremote( int receivePin );
This method adds a parameter
Then we modify the
D:\Tools\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp #include "IRremote.h" #include "IRremoteTools.h" #include Change to #include "IRremote.h" #include "IRremoteTools.h" #include OK. After the modifications are made. Let's look at the code we're using #include Then compile The project uses 4,772 bytes, which takes up (14%) of the program memory. The maximum is 32,256 bytes. Global variables use 432 bytes, (21%) of dynamic memory, leaving 1,616 bytes for local variables. This is a maximum of 2,048 bytes. OK Changed it. Again, the official arduino.cc remote control library tutorial address
https://www.arduino.cc/en/Tutorial/RobotRemoteControl 20160617 --by brok1n
#ifndef IRREMOTETOOLS_H #define IRREMOTETOOLS_H extern void beginIRremote(); extern bool IRrecived(); extern void resumeIRremote(); extern unsigned long getIRresult(); #endif