#やりたいこと
自作ライブラリのメソッドを使う実験として、LEDを常時点灯させるメソッドを作りました。
4回のLチカ後に、常時点灯させることが目標です。
#実際のコード
まずはinoファイルから
test
1#include <Arduino.h> 2#include <FlashLib.h> 3 4void setup(){ 5 pinMode(13,OUTPUT); 6} 7 8void loop(){ 9 for (int i = 1; i<=4; i++){ 10 digitalWrite(13,HIGH); 11 delay(100); 12 digitalWrite(13,LOW); 13 delay(100); 14 } 15 flash(); 16}
次に、ソースファイル(.cpp)
FlashLib
1#include "Arduino.h" 2#include "FlashLib.h" 3 4void flash(){ 5 digitalWrite(13,HIGH); 6 delay(5000);//追加しました 7}
最後に、ヘッダファイル(.h)
FlashLib
1#ifndef _FlashLib_h 2#define _FlashLib_h 3 4#include "Arduino.h"//追加しました 5void flash(); 6 7#endif
これらのスケッチを実行すると以下のようなエラーを吐きます。
error
1libraries\lib_test\FlashLib.cpp.o (symbol from plugin): In function `flash()': 2 3(.text+0x0): multiple definition of `flash()' 4 5sketch\FlashLib.cpp.o (symbol from plugin):(.text+0x0): first defined here 6 7collect2.exe: error: ld returned 1 exit status 8 9exit status 1 10ボードArduino Unoに対するコンパイル時にエラーが発生しました。
#考えたこと
1.エラーの3行目にsketch\FlashLib.cpp.o
とあることから、実際には.cppではなく.oである
→しかし、エクスプローラの画面では拡張子が.cppとなっている
2.ArduinoIDEがライブラリとして認識していない
→librariesに入れた他、ライブラリを追加として表示される
3.メソッドの書き方が間違っている
→void flash(void)
returnはなし。として記述もしました。
しかし、初心者日曜プログラマーなのでメソッドの書き方がおかしいことは否めない・・・
4.ヘッダファイルとソースファイルを書いたタブの順番により読み込み順序が逆になることからくるエラー
→そんなばかな・・・というかどうやって変えるねん!!
といった状況で解決方法が全然わかりません。
解決方法を伝授してくださると幸いです。よろしくおねがいします。
※2/28、16時現在一部追加しました
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/28 07:53 編集
2020/02/28 08:01 編集
2020/02/28 07:58
2020/02/28 08:25
2020/02/28 16:09