Arduino ide 1.6.9에서 발생한 문제 오류:'TKD2'was not declared in this scope

12417 단어 arduino
이전에 arduino 링크 적외선 수신기로 리모컨이 보내는 지령을 받은 적이 있다.일부 주변 장치를 제어하다.github에서 다운로드한 라이브러리를 사용합니다.
요 며칠 또 쓸 때.문제에 부딪힌 것을 발견하다.첫 번째 오류는 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의 library가 제공하는 IRemote 라이브러리를 사용해서 썼지만 오류가 발생했습니다.
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로 컴파일하는 중 오류가 발생했습니다.
제가 사용하는 것은arduino입니다.cc 정부에서 제공한 리모컨의 예.https://www.arduino.cc/en/Tutorial/RobotRemoteControl
그의 이 예는 물건이 너무 많다.내가 필요 없는 게 많아.나는 단지 그의 원격 조종 수신 버튼 인코딩을 원할 뿐이다.됐어.그러나library의 cpp에 오류가 있음을 알립니다.
arduinoide가 제공하는 라이브러리의 cpp에 오류가 있는 것 같습니다.그래서.열어봐.오류가 표시된 이 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머리 파일을 찾았습니다.
#ifndef IRREMOTETOOLS_H
#define IRREMOTETOOLS_H

extern void beginIRremote();

extern bool IRrecived();

extern void resumeIRremote();

extern unsigned long getIRresult();

#endif

TKD2 성명도 없어요.
그리고 계속해서 D:\Tools\Arduino\libraries\RobotIRremote\src\IRremoteTools를 찾아오세요.cpp에 도입된 몇 가지.헤더 파일.TKD2라는 물건이 있는지 확인해 보세요.하지만나
#include "IRremote.h"
#include "IRremoteTools.h"

이 두 개 다 찾았어요.그냥 TKD2라는 게 없어요.... 에 이르다
#include 

이거 찾지 않아도 돼.아르두노의 환경에서 가져온 물건이기 때문이다.외부의library는 어떤 변수나 define을 여기에 넣지 않을 것이다.그래서 우리가 얻은 결론은 이arduinioide가 공식적으로 제공한 이 라이브러리 코드에 문제가 있다???시계가 나를 속인다.나는 책을 적게 읽는다.그러나 우리가 찾아낸 원인은 그가 공식적으로 제공한 라이브러리 파일 코드 오류...그래.
나는 정부에 가서 피드백 문제를 찾은 곳을 찾았다.일단 안에서 검색해 봤어요.어떤 사람은 1.6.7에 이 문제가 있다고 말했다.하지만그들이 쓰는 것은 까닭을 모르는 물건이거나공식 튜토리얼로 쓴 코드가 아니거나.그리고 댓글, 답장 같은 것도 잘 봤어요.그럼요. 여기 얘기 좀 할게요.내가 여기서 얻은 이 잘못은arduino에 따라.cc 공식 강좌의 코드를 원본 복사하여 붙여넣습니다.기본 문법 오류를 검사해도 문제없다.컴파일하면 이 오류가 나요.
error: 'TKD2' was not declared in this scope

arduino.cc 공식 리모컨 라이브러리 사용 강좌https://www.arduino.cc/en/Tutorial/RobotRemoteControl
다시 복사해서 붙여넣을게요.역시 이런 잘못이 있다.
아이고.우리 스스로 해결하자.
우리는 이 문제를 해결할 두 가지 방법이 있다.첫 번째: 잘못된 파일을 수정하는 이 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를 11로 바꾸거나 적외선 수신 헤드의 데이터 수신 포트를 삽입하는 IO 포트를 아래와 같이 바꾸세요.
#include "IRremote.h"
#include "IRremoteTools.h"
#include 

int RECV_PIN = 11; // 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;
}

나 여기 11로 바꿨어.
그럼요.이렇게 해서 포트를 수정해야 할 때arduinoide의library 라이브러리의 cpp 파일도 수정해야 합니다.이것은 좀 쓸데없는 말이다.자, 두 번째 개법.두 번째 방법.C++의 구문을 사용합니다.그럼요.너는 직접 나의 코드를 복사하면 충분하다.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

이 h 파일을
#ifndef IRREMOTETOOLS_H
#define IRREMOTETOOLS_H

extern void beginIRremote( int receivePin );

extern bool IRrecived();

extern void resumeIRremote();

extern unsigned long getIRresult();

#endif

extern void begin IRremote(int receive Pin);이 방법에 매개 변수를 추가한 다음 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;
}

바꾸다
#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
IRrecv *irr;
decode_results results; // container for received IR codes

void beginIRremote( int receivePin ){
    //irrecv.enableIRIn(); // Start the receiver
    irr = new IRrecv( receivePin );
    irr->enableIRIn(); 
}

bool IRrecived(){
    //return irrecv.decode(&results);
    return irr->decode(&results);
}

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

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

됐어.수정하고 나서저희가 사용하는 코드를 보도록 하겠습니다.
#include 
#include 

void setup() {
  Serial.begin(9600);

  beginIRremote(11); // Start the receiver
}

void loop() {
  if (IRrecived()) {
    unsigned long res = getIRresult();
    Serial.println( res );
    resumeIRremote(); // resume receiver
  }
}

그리고 컴파일

  4,772  ,  (14%)  。  32,256  。
 432 ,(21%) , 1,616 。 2,048 。

OK. 고쳤어.
다시 아두이노를 드리겠습니다.cc 공식 리모컨 라이브러리 사용 튜토리얼 주소https://www.arduino.cc/en/Tutorial/RobotRemoteControl

20160617


—–by brok1n

좋은 웹페이지 즐겨찾기