質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

同じフォルダ内のヘッダファイルをインクルードしたのに”No such file or directory”でエラーになる。

MaeharaKenji
MaeharaKenji

総合スコア83

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

1回答

0グッド

0クリップ

445閲覧

投稿2022/10/13 13:51

編集2022/10/13 21:48

前提

現在ESP32C3搭載基板のプログラム作成を行っています。

実現したいこと

マルチタスク機能やAWSへのmqtt機能を使ったプログラムを作成しています。

発生している問題・エラーメッセージ

・OnDemandAP.ino
・AWSIotSecrets.h

この2つのファイルを同じフォルダに入れてビルドを実行したところ、次のようなエラーが出てしまいます。
エラーの解消方法をご教示の程宜しくお願い致します。

[Starting] Verifying sketch 'OnDemandAP.ino' [Warning] Output path is not specified. Unable to reuse previously compiled files. Build will be slower. See README. 構成をロード中… パッケージを初期化中… ボードを準備中… 検証中… 「WiFi.h」に対して複数のライブラリが見つかりました OnDemandAP:10:10: fatal error: AWSIotSecrets.h: No such file or directory 使用済:C:\Users\myUser\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\WiFi 未使用:C:\Program Files (x86)\Arduino\libraries\WiFi #include "AWSIotSecrets.h" ^~~~~~~~~~~~~~~~~ compilation terminated. exit status 1 [Warning] Failed to generate IntelliSense configuration. [Error] Verifying sketch 'OnDemandAP.ino': Exit with code=1

該当のソースコード

なお、このヘッダファイルは下記のコードです。こちらの内容に何か問題などありますでしょうか?

c

1//ヘッダーファイル名”AWSIotSecrets.h” 2 3#define SECRET 4#define THINGNAME "MAIN_DEV_0010" 5 6const char WIFI_SSID[] = "*******"; 7const char WIFI_PASSWORD[] = "*******"; 8const char AWS_IOT_ENDPOINT[] = "*********.iot.us-west-2.amazonaws.com"; 9 10// Amazon Root CA 1 11static const char AWS_CERT_CA[] PROGMEM = R"EOF( 12-----BEGIN CERTIFICATE----- 13(省略) 14-----END CERTIFICATE----- 15)KEY"; 16 17// Device Private Key 18static const char AWS_CERT_PRIVATE[] PROGMEM = R"KEY( 19-----BEGIN RSA PRIVATE KEY----- 20(省略) 21-----END CERTIFICATE----- 22)EOF"; 23 24// Device Certificate 25static const char AWS_CERT_CRT[] PROGMEM = R"KEY( 26-----BEGIN CERTIFICATE----- 27(省略) 28-----END RSA PRIVATE KEY----- 29)KEY"; 30 31

c

1//メインのinoファイル "OnDemandAP.ino"  2 3//#include <WiFi.h> //https://github.com/esp8266/Arduino 4#include <WebServer.h> 5#include <DNSServer.h> 6#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager 7 8#include "FS.h" 9#include "SPIFFS.h" // ①ライブラリを読み込み 10 11#include <DS3232RTC.h> 12#include "AWSIotSecrets.h" 13#include <WiFiClientSecure.h> 14#include <MQTTClient.h> 15#include <ArduinoJson.h> 16 17 18 19#define FORMAT_SPIFFS_IF_FAILED true 20 21 22#define Button_D0 D0 23#define Button_D1 D1 24#define Button_D2 D2 25#define Button_D3 D3 26 27#define OPEN 0 28#define CLOSE 1 29 30#define INPUT_CHAT_TIME 300 31 32DS3232RTC myRTC(false); 33 34char s2[80];//文字格納用 35char time_message[20];//文字格納用 36 37//struct tm timeInfo;//時刻を格納するオブジェクト 38 39int gButton_D0_State = CLOSE; 40int gButton_D1_State = CLOSE; 41int gButton_D2_State = CLOSE; 42int gButton_D3_State = CLOSE; 43 44int gRecieveCount = 0; 45 46 47#define FORMAT_SPIFFS_IF_FAILED true 48 49 50const char* AWS_IOT_PUBLISH_TOPIC = "node/airsensor"; 51 52const int WIFI_TIMEOUT_MS = 20000; 53const int MQTT_TIMEOUT_MS = 5000; 54 55WiFiClientSecure net = WiFiClientSecure(); 56MQTTClient client = MQTTClient(256); 57//CRC8 crc; 58//ST7032_asukiaaa lcd; 59 60double temperature; 61double humidity; 62uint32_t particle; 63 64 65void delay_with_client_loop(unsigned long ms) { 66 unsigned long start = millis(); 67 while((millis() - start) < ms) { 68 client.loop(); 69 //Serial.println("AWS looping"); 70 } 71 //Serial.println("AWS loop end"); 72} 73 74void connectWiFi() { 75 if(WiFi.status() == WL_CONNECTED) { 76 return; 77 } 78 79 WiFi.begin(); 80 Serial.println("Connecting to Wi-Fi"); 81 82 83 int wifi_connecting = 0; 84 while ((WiFi.status() != WL_CONNECTED) && (wifi_connecting <= WIFI_TIMEOUT_MS)){ 85 delay(500); 86 wifi_connecting += 500; 87 Serial.print("."); 88 } 89 if(WiFi.status() != WL_CONNECTED) { 90 Serial.println("Wi-Fi Timeout"); 91 WiFi.disconnect(); 92 93 delay(30000); 94 ESP.restart(); 95 return; 96 } 97 98 // Configure WiFiClientSecure to use the AWS IoT device credentials 99 net.setCACert(AWS_CERT_CA); 100 net.setCertificate(AWS_CERT_CRT); 101 net.setPrivateKey(AWS_CERT_PRIVATE); 102 return; 103} 104 105void connectAWS() { 106 if(client.connected()){ 107 return; 108 } 109 110 // Connect to the MQTT broker on the AWS endpoint we defined earlier 111 client.begin(AWS_IOT_ENDPOINT, 8883, net); 112 client.setTimeout(1000); 113 114 Serial.println("Connecting to AWS IOT"); 115 116 int client_connecting = 0; 117 //while ((!client.connect(THINGNAME)) && (client_connecting <= MQTT_TIMEOUT_MS)) { 118 while ((!client.connect(gSerialName.c_str())) && (client_connecting <= MQTT_TIMEOUT_MS)) { 119 Serial.print("."); 120 delay(100); 121 client_connecting += 100; 122 } 123 if(!client.connected()){ 124 WiFi.disconnect(true, true); 125 126 Serial.println("AWS IoT Timeout!"); 127 128 delay(30000); 129 ESP.restart(); 130 return; 131 } 132 133 Serial.println("AWS IoT Connected!"); 134 135 return; 136} 137 138void publishMessage() 139{ 140///文字制限のため省略 141} 142 143 144void setup_AWSIotMqtt() { 145 146 //WiFi.mode(WIFI_STA); 147 //WiFi.setAutoConnect(false); 148 149 // Configure WiFiClientSecure to use the AWS IoT device credentials 150 net.setCACert(AWS_CERT_CA); 151 net.setCertificate(AWS_CERT_CRT); 152 net.setPrivateKey(AWS_CERT_PRIVATE); 153} 154 155void TASK_AWSIotMqtt(void *args) { 156 157 //delay(5000); 158 159 160 #if 1 161 while(1) 162 { 163 Serial.printf("%s - run\r\n",__func__); 164 delay(9000); 165 } 166 #endif 167 168} 169 170 171 172 173 174 175String gSerialName; 176 177 178void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ 179///文字制限のため省略 180} 181 182void readFile(fs::FS &fs, const char * path){ 183///文字制限のため省略 184} 185 186 187 188 189void SerialNameReadFile(fs::FS &fs, const char * path){ 190///文字制限のため省略 191} 192 193 194 195void writeFile(fs::FS &fs, const char * path, const char * message){ 196///文字制限のため省略 197} 198 199 200void appendFile(fs::FS &fs, const char * path, const char * message){ 201///文字制限のため省略 202} 203 204 205 206void setup_DoorChecker() { 207 208 pinMode(Button_D0, INPUT_PULLUP); 209 pinMode(Button_D1, INPUT_PULLUP); 210 pinMode(Button_D2, INPUT_PULLUP); 211 pinMode(Button_D3, INPUT_PULLUP); 212 213 pinMode(D6, INPUT); 214 pinMode(D7, INPUT); 215 pinMode(D8, INPUT); 216 217 218} 219 220void currentTime() { 221 tmElements_t tm; 222 myRTC.read(tm); 223 224 sprintf(time_message, " %04d/%02d/%02d %02d:%02d:%02d", 225 tm.Year + 1970, tm.Month, tm.Day, 226 tm.Hour, tm.Minute, tm.Second);//人間が読める形式に変換 227} 228 229void TASK_ButtonChecker(void *args) { 230 // put your main code here, to run repeatedly: 231 //delay(5000); 232 233 String wrfile = "/log_test.txt"; 234 235 //File fw = SPIFFS.open(wrfile.c_str(), "w");// ⑥ファイルを書き込みモードで開く 236 //const char * message; 237 238 setup_DoorChecker(); 239 240 241 #if 1 242 while(1) { 243 Serial.printf("%s - run\r\n",__func__); 244 delay(5000); 245 } 246 #endif 247} 248 249 250 251struct tm timeInfo;//時刻を格納するオブジェクト 252char s[20];//文字格納用 253 254TaskHandle_t thp[2];//マルチスレッドのタスクハンドル格納用 255 256void multiTaskSetup() { 257 258 xTaskCreatePinnedToCore(TASK_ButtonChecker, "TASK_ButtonChecker", 8192, NULL, 4, NULL, 0); 259 xTaskCreatePinnedToCore(TASK_AWSIotMqtt, "TASK_AWSIotMqtt", 4096, NULL, 3, NULL, 0); 260 261} 262 263 264 265void setup() { 266 267 if (!SPIFFS.begin(true)) { 268 Serial.println("An Error has occurred while mounting SPIFFS"); 269 return; 270 } 271 272// put your setup code here, to run once: 273 Serial.begin(115200); 274 Serial.println("\n Starting"); 275 Serial.println("Ver_106"); 276 Serial.println("\n----DIR: /"); 277 listDir(SPIFFS,"/",0); 278 SerialNameReadFile(SPIFFS,"/ID.txt"); 279 readFile(SPIFFS,"/log_test.txt"); 280 281 282 //multiTaskSetup(); 283 284 pinMode(D7, INPUT_PULLUP); 285 delay(100); 286 287 int longPushCount = 0; 288 while(digitalRead(D7)==HIGH) 289 { 290 longPushCount++; 291 delay(1000); 292 if (longPushCount > 5) 293 { 294 WiFiManager wifiManager; 295 296 //if (!wifiManager.startConfigPortal((char *)gSerialName.c_str())) { 297 if (!wifiManager.startConfigPortal(gSerialName.c_str())) { 298 Serial.println("failed to connect and hit timeout"); 299 delay(3000); 300 //reset and try again, or maybe put it to deep sleep 301 ESP.restart(); 302 delay(5000); 303 } 304 } 305 } 306 307 308 myRTC.begin(); 309 310 WiFi.begin(); 311 Serial.println("connecting"); 312 313 while (WiFi.status() != WL_CONNECTED) { 314 delay(1000); 315 Serial.print("."); 316 } 317 318 if(WiFi.status() == WL_CONNECTED) { 319 320 //if you get here you have connected to the WiFi 321 IPAddress ipadr = WiFi.localIP(); 322 Serial.println("connected(^^)"); 323 Serial.println("local ip"); 324 Serial.println(ipadr); 325 Serial.println(WiFi.SSID()); 326 Serial.print("Serial name:"); 327 Serial.println(gSerialName); 328 Serial.println(""); 329 330 Serial.println("Connected to the WiFi network!"); 331 configTime(9 * 3600L, 0, "ntp.nict.jp", "time.google.com", "ntp.jst.mfeed.ad.jp");//NTPの設定 332 333 getLocalTime(&timeInfo);//tmオブジェクトのtimeInfoに現在時刻を入れ込む 334 sprintf(s, " %04d/%02d/%02d %02d:%02d:%02d", 335 timeInfo.tm_year + 1900, timeInfo.tm_mon + 1, timeInfo.tm_mday, 336 timeInfo.tm_hour, timeInfo.tm_min, timeInfo.tm_sec);//人間が読める形式に変換 337 Serial.println(s);//時間をシリアルモニタへ出力 338 339 setTime(timeInfo.tm_hour, timeInfo.tm_min, timeInfo.tm_sec, timeInfo.tm_mday, timeInfo.tm_mon + 1, timeInfo.tm_year + 1900); 340 myRTC.set(now()); 341 } 342 343 multiTaskSetup(); 344 345} 346 347void loop() { 348 // put your main code here, to run repeatedly: 349 350 delay(100); 351} 352 353 354

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

thkana

2022/10/13 14:38

とりあえず、 > この2つのファイルを同じフォルダに入れて のフォルダの内容を示してください。質問には「入れた」というあなたの言葉はありますが、それができているという客観的な確認ができる材料がありません。lsの結果等を示してください。 (エラーが出ている以上、なにか間違っているはずで「事実」を確認していくしかないので、裏付けのない言葉は疑わざるをえません)
MaeharaKenji

2022/10/13 21:53 編集

回答頂きありがとうございます。 文字数制限の関係で、一部関数内部を省略していますが、メインのinoファイル ”OnDemandAP.ino” の内容を掲載しました。 この内容から修正すべき内容はありますでしょうか?
thkana

2022/10/13 21:59

フォルダの内容を示してください。質問には「入れた」というあなたの言葉はありますが、それができているという客観的な確認ができる材料がありません。lsの結果等を示してください。
MaeharaKenji

2022/10/13 22:10

PS D:\mywork\CarDoorCheckerXiaoESP32C3> ls ディレクトリ: D:\mywork\CarDoorCheckerXiaoESP32C3 Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022-10-13 22:36 .vscode d----- 2022-10-08 20:35 data -a---- 2022-10-05 6:16 101 .gitignore -a---- 2022-10-13 22:36 4621 AWSIotSecrets.h -a---- 2022-10-14 6:50 13684 OnDemandAP.ino
MaeharaKenji

2022/10/14 00:37 編集

思い付きで、”AWSIotSecrets.h”を”iotSecrets.h”にファイル名とコードを変更してみたところ、ビルド成功しました・・・ 原因が不明な点が気がかりですが、とりあえずOKになりました。

回答1

0

ベストアンサー

内容は関係なく、ファイルが見つからない、とおっしゃってますんで、
まずはきっちりファイルの確認、ファイル名のスペルの違いはないか全角半角違わないかのチェックですな

で、そのヘッダファイルをインクルードしてるところのコードを提示しよう

投稿2022/10/13 14:30

y_waiwai

総合スコア86072

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

MaeharaKenji

2022/10/13 21:53

回答頂きありがとうございます。 文字数制限の関係で、一部関数内部を省略していますが、メインのinoファイル ”OnDemandAP.ino” の内容を掲載しました。 この内容から修正すべき内容はありますでしょうか?
MaeharaKenji

2022/10/14 00:37 編集

思い付きで、”AWSIotSecrets.h”を”iotSecrets.h”にファイル名とコードを変更してみたところ、ビルド成功しました・・・ 原因が不明な点が気がかりですが、とりあえずOKになりました。
y_waiwai

2022/10/14 03:24

それをもう一度元の名前に変えてやってみるとか。 目に見えない文字とかあるので、そこらへんなんかも
thkana

2022/10/14 06:00

話の流れからこっちにコメントします。 git使ってるなら、その辺(AWSIotSecrets.hで通らなかったバージョン)に戻して再現するか、再現したらなにがまずかったのか、ちゃんと追跡しておいたほうがいいと思います。再現しなかったら仕方ないけれど...
MaeharaKenji

2022/10/14 07:19

@y_waiwai @thkana この度は、ご協力頂きありがとうございます。 まだ原因はわからない状態ですが、頑張ってみたいと思います。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。