나는 C++/Arduino 전문가는 아니지만이 문제로 충분히 게임을했고 내가 할 수없는 곳에서 충분히 봤습니다. 그것을 알아 내라.Arduino - DHT 센서 칩 기반 헤더 선택 (ESP32 vs ESP8266)
다음은 DHT 라이브러리 (https://github.com/RobTillaart/Arduino/tree/master/libraries/)를 호출하는 센서 라이브러리 파일을 호출하는 Arduino 코드가 있습니다. 이 라이브러리에는 AVR 및 ARM 기반 칩과의 호환성을 유지하는 DHTStable과 AVR에 최적화 된 DHTLib의 두 가지 주요 버전이 있습니다. ESP8266 (DHTStable이 필요함)과 ESP32 (DHTlib와 함께 더 잘 작동 함)에 대해 동일한 스케치를 컴파일 중입니다.
바로 지금 컴파일하고 ESP32로 다운로드 한 다음 DHTLib 라이브러리를 이동하고 DHTStable을 복사 한 다음 ESP8266 용으로 컴파일하고 다운로드하십시오. 며칠이나 일주일 후에 다시 복사하고 붙여 넣습니다.
내 센서 라이브러리에서 이미 특정 명령에 대해 ESP32를 확인하고 있고 그렇지 않은 경우 #if defined(ARDUINO_ARCH_ESP32)
을 사용하는 ESP8266에 대한 명령을 수행하며 이는 명령에 적합합니다. 그러나 나는 정의를 위해 그것을 사용하려고 노력하고있다. 그리고 그것은 "다소"작용한다. 두 라이브러리 중 하나를 가져 와서 헤더와 cpp 파일의 이름을 내부적으로 모든 참조와 다른 이름으로 바꿔야합니다. 그렇다면 ESP32가 dht-avr.h (이름이 바뀌 었습니다) 또는 dht.h (원래의 것)를 사용한다면 어떻게 할 수 있습니까?
이 모든 것이 작동하지만 복제 할 때 git을 사용하여 라이브러리가 업데이트 될 때마다 업데이트가 이루어 지므로 모든 것을 이름을 바꿔야합니다. 그래서 #include <DHTlib\dht.h>
과 <DHTStable\dht.h>
을 시도했지만 이것들은 작동하지 않습니다 (라이브러리를 찾을 수 없습니다).
실제 포함 경로 또는 두 개의 다른 헤더를 동일한 것으로 지정할 때 수행 할 작업이 무엇입니까? If 문이 작동하기 때문에 저는 90 % (모든 이름을 계속 변경하면 100 %)입니다. 그러나 저는 자동으로 이것을 원합니다.
@BMelis는 경로의 오른쪽 트랙에 나를 넣습니다. 최종 코드는 다음과 같이 나타납니다.
#ifdef ARDUINO_ARCH_ESP32
#include "..\DHTlib\DHT.h"
#else
#include "..\DHTStable\DHT.h"
#endif
위의 하위 디렉토리에 대해 sooooo가 닫혀 있었고 방금 누락되었습니다. 댓글로 답변을 표시하고 첫 번째 게시물을 수정하면 형식이 지정된 텍스트를 추가 할 수 없습니다. – Allan