私はC++/Arduinoのエキスパートではないと言って始めますが、私はこの問題で十分にプレイしました。それを理解する。Arduino - チップベースのDHTセンサーヘッダーを選択してください(ESP32 vs ESP8266)
私はセンサーライブラリーファイルを呼び出しているArduinoコードをいくつか持っていて、DHTライブラリー(https://github.com/RobTillaart/Arduino/tree/master/libraries/)を呼び出しています。このライブラリには、AVRおよびARMベースのチップとの互換性を維持するDHTStableとAVRに最適化されたDHTLibの2つの主要なバージョンがあります。私は、ESP8266(DHTtableが必要)とESP32(DHTlibでうまくいく)の両方について同じスケッチを編集しています。
今私はコンパイルしてESP32にダウンロードします。すると、DHTLibライブラリを移動し、DHTStableをコピーしてからコンパイルし、ESP8266用にダウンロードします。数日または1週間後、私はこれをコピーして貼り直します。
私のセンサーライブラリでは、すでに特定のコマンドでESP32をチェックしていますが、ESP32でない場合は#if defined(ARDUINO_ARCH_ESP32)
を使用してESP8266のコマンドを実行しています。しかし、私は定義のためにそれを使用しようとしており、それは "ちょっと"働いています。私は2つのライブラリのうちの1つを取って、ヘッダーとcppファイルの名前を、内部的にすべての参照と別のものに変更しなければなりません。それから私の場合、ESP32がdht-avr.h(名前が変更されたもの)、dht.h(オリジナルのもの)を使用している場合はifを実行できます。
これはすべて動作しますが、gitを使用してクローンを更新し、ライブラリが更新されるたびに更新が行われるため、すべてをリネームする必要があります。だから、#<DHTlib\dht.h>
と<DHTStable\dht.h>
をインクルードしてみましたが、これらは動作しません(ライブラリが見つかりません)。
実際のインクルードパスを呼び出すか、2つの異なるヘッダーを同じ名前で呼び出すことができますか? If文は動作しているので、私は90%あります(100%はすべて名前を変更します)が、私は本当にこれが自動であることを望みます。
@BMelisは正しい道に私をパスに入れました。最終的なコードは次のようになりました。
#ifdef ARDUINO_ARCH_ESP32
#include "..\DHTlib\DHT.h"
#else
#include "..\DHTStable\DHT.h"
#endif
私はsoooooを閉じて、上記のサブディレクトリを逃しました。コメントは書式付きテキストを追加することができないので、答えとしてマークし、最初の投稿を編集する。 – Allan