M5Stackを実行したい私 vs 謎のエラーを出してくるArduino

おはこんばんにちは、しおりんです。

オリンピック・パラリンピックで白熱したこの夏ですが、皆さん最近バトルしてますか?

私は、平和な日々を送っていたのですが、そんな私の前に敵が現れ、3日間の熱い戦いを繰り広げておりました。

そして、この記事を書いている今日!完全に勝利したので、
ここにその戦いの記録を残していきます🏋️‍♀️

戦いの始まり

日々のリモートワークにおいて、

MTG中だよ!部屋に入らないでね

ということがわかるボードを作りたいな〜と思い、M5Stackを引っ張り出しました。

よし!大学以来、久々にArduinoで書くぞ〜 💪

と同時に、gitでも管理したかったので、VSCodeArduinoを書いて実行できるように、環境を整え、

いざ!自分で、軽く簡単なコードを書いて実行💪💪💪

となった時、ヤツが現れたのです......

そして、ヤツは現れた

そう....ヤツとは、このエラーです。

/Users/shiorin/Documents/Arduino/libraries/M5Stack/sandbox/demodemo.ino: In function 'void setup()':
demodemo:7:6: error: redefinition of 'void setup()'
 void setup()
      ^
/Users/shiorin/Documents/Arduino/libraries/M5Stack/sandbox/MtgBord.ino:3:6: note: 'void setup()' previously defined here
 void setup(){
      ^
/Users/shiorin/Documents/Arduino/libraries/M5Stack/sandbox/demodemo.ino: In function 'void loop()':
demodemo:16:6: error: redefinition of 'void loop()'
 void loop()
      ^
/Users/shiorin/Documents/Arduino/libraries/M5Stack/sandbox/MtgBord.ino:17:6: note: 'void loop()' previously defined here
 void loop(){
      ^
「SD.h」に対して複数のライブラリが見つかりました
使用済:/Users/shiorin/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SD
未使用:/Applications/Arduino.app/Contents/Java/libraries/SD
「WiFiClient.h」に対して複数のライブラリが見つかりました
使用済:/Users/shiorin/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi
未使用:/Applications/Arduino.app/Contents/Java/libraries/WiFi
exit status 1
IntelliSense configuration already up to date. To manually rebuild your IntelliSense configuration run "Cmd+Alt+I"
[Error] Verifying sketch 'sandbox/MtgBord.ino': Exit with code=1

バトルスタート

Round.1

まず、エラーの中身をパッとみて、

「SD.h」に対して複数のライブラリが見つかりました
「WiFiClient.h」に対して複数のライブラリが見つかりました

とから、ライブラリがうまく参照できていないのかもしれない?
と思い、読み込み元のパスを自分で指定せず、自動で書き込まれるように修正して実行🥊

エラーは変わらず、🙅‍♀️

Round.2

そんな中、調べてみたら、このライブラリのメッセージはライブラリの読み込みが間違っているというエラーではなく、

コードや別のエラーがある時に一緒に出るものらしい😱?!

ということだったので、自分で書いたコード、エラーが出ていないだけで書き方が間違っているのかもと考え、

M5Stack公式が出しているサンプルコードをそのままコピペして実行 🥊

エラーの様子は全く変わらず、🙅‍♀️

ただこの時、勝利の光が...!

この時、コピペ元のサンプルコード自体は、 エラーも出ず、M5Stackに、ちゃんと書き込めていたので、

実行できないサンプルと、実行できない私が作成したファイル...一体何が違うんだ?と見比べ始めた時、

勝利の光が見えてきたのです

原因

1つのフォルダー内に、複数のinoファイルを入れていたからだった!

なぜ、同じフォルダに複数ファイルを入れてはだめだったのか🤔

A. 同じフォルダに入れてしまうと、実行する際、同時にファイルを開いてしまうから

www.musashinodenpa.com

解決策

1つのinoファイルは、それ専用のフォルダを作成して、その中に入れる

f:id:shiorin223:20210829174930p:plain
正しいフォルダとファイルの関連性

まとめ

こうして、Arduinoから出ているエラーを倒し、M5Stackに自分のコードを書き込むことができました🎉🎉🎉

ようやく、M5Stackで作りたいものを作るためのスタートラインに立てた!いや〜長かった.....

解決した今みると、Arduinoのリファレンスの概要に書いてある基礎的な部分だったのに、エラーとして出ると、こんなにも解決までにかかってしまうなんて...

となったので、ちゃんと公式リファレンスを読もうと改めて認識しました!

わからなすぎるこのエラーとの戦いに勝利し、自分の書いたコードでM5Stackを動かせる状態になったので、

作りたいもの、頑張って作っていきます!