🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Arduino

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

Q&A

解決済

3回答

3405閲覧

Aruduinoボードのコンパイルエラーを解決したい。

osano-kenji

総合スコア1

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Arduino

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

0グッド

0クリップ

投稿2021/02/25 08:26

編集2021/02/25 08:37

前提・実現したいこと

arduinoでpixy2から得た座標情報をもとに、EVshieldでEV3のモーターを動かして対象を追うプログラムを作っています。

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

最初(一昨年の8月)にプログラムを作り、その時はpixy無印を使っていましたがちゃんと動いていました。
その後pixy2にカメラを変えたときも、pixy無印の関数を2のものに変えるのみでちゃんと動いてくれていました。
しかし、先日またプログラムを動かそうとしたところ、コンパイルが通らなくなってしまいました。

エラーメッセージ Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), ボード:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)" C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\EVShield.cpp:1075:4: warning: #warning from EVShield: Touchscreen methods are only supported on PiStorms (getTouchscreenValues, TS_X, TS_Y, isTouched, checkButton, getFunctionButton) [-Wcpp] #warning from EVShield: Touchscreen methods are only supported on PiStorms (getTouchscreenValues, TS_X, TS_Y, isTouched, checkButton, getFunctionButton) ^~~~~~~ C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp: In member function 'uint8_t* SoftI2cMaster::readRegisters(uint8_t, uint8_t, uint8_t*)': C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp:163:11: error: cannot convert 'bool' to 'uint8_t* {aka unsigned char*}' in return return false; ^~~~~ C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp:168:11: error: cannot convert 'bool' to 'uint8_t* {aka unsigned char*}' in return return false; ^~~~~ C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp:173:11: error: cannot convert 'bool' to 'uint8_t* {aka unsigned char*}' in return return false; ^~~~~ C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp: In member function 'char* SoftI2cMaster::readString(uint8_t, uint8_t, uint8_t*, uint8_t)': C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp:246:12: warning: ISO C++ forbids comparison between pointer and integer [-fpermissive] if ( x == false ) { ^~~~~ C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp: In member function 'uint8_t SoftI2cMaster::readByte(uint8_t)': C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp:254:38: warning: ISO C++ forbids comparison between pointer and integer [-fpermissive] if ( readRegisters(location, 1) != false ) { ^~~~~ C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp: In member function 'int16_t SoftI2cMaster::readInteger(uint8_t)': C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp:264:38: warning: ISO C++ forbids comparison between pointer and integer [-fpermissive] if ( readRegisters(location, 2) != false ) { ^~~~~ C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp: In member function 'uint32_t SoftI2cMaster::readLong(uint8_t)': C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp:274:38: warning: ISO C++ forbids comparison between pointer and integer [-fpermissive] if ( readRegisters(location, 4) != false ) { ^~~~~ exit status 1 ボードArduino Mega or Mega 2560に対するコンパイル時にエラーが発生しました。 「ファイル」メニューの「環境設定」から 「より詳細な情報を表示する:コンパイル」を有効にすると より詳しい情報が表示されます。

該当のソースコード

Auduino

1 2#include <SPI.h> 3#include <Wire.h> 4#include <EVShield.h> 5#include <EVShieldAGS.h> 6 7EVShield evshield(0x34, 0x36); 8char str[200]; 9#include <Pixy2.h> 10Pixy2 pixy; 11 12void 13setup() 14{ 15 Serial.begin(115200); 16 delay(2000); 17 18 19 long rotations = 2; 20 char str[40]; 21 22 evshield.init( SH_HardwareI2C ); 23 pixy.init(); 24 25 evshield.bank_a.motorReset(); 26 evshield.bank_b.motorReset(); 27 28} 29 30int32_t new_encoder1, new_encoder2; 31void 32loop(){ 33int sensorValue = analogRead(A0); 34int sensorValue2 = analogRead(A1); 35 36 37// static int i = 0; 38// int j; 39// uint16_t blocks; 40// char buf[32]; 41 42 static int i = 0; 43 int j; 44 char buf[64]; 45 int32_t panOffset, tiltOffset; 46 47 tiltOffset= pixy.ccc.getBlocks(); 48 int CX; 49 int CY; 50 51CY = pixy.ccc.blocks[i].m_y; 52CX = pixy.ccc.blocks[i].m_x; 53 54if(tiltOffset){ 55 if (CX > 230) { 56 evshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Reverse, 30); 57 evshield.bank_a.motorRunUnlimited(SH_Motor_2, SH_Direction_Forward, 30); 58 evshield.bank_b.motorRunUnlimited(SH_Motor_2, SH_Direction_Reverse, 30); 59 delay(50); 60 } 61 else if ((CX <= 230) && (CX > 150)) { 62 evshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Reverse, 30); 63 evshield.bank_a.motorRunUnlimited(SH_Motor_2, SH_Direction_Reverse, 30); 64 evshield.bank_b.motorRunUnlimited(SH_Motor_2, SH_Direction_Reverse, 30); 65 delay(50); 66 } 67 else { 68 evshield.bank_a.motorRunUnlimited(SH_Motor_1, SH_Direction_Forward, 30); 69 evshield.bank_a.motorRunUnlimited(SH_Motor_2, SH_Direction_Reverse, 30); 70 evshield.bank_b.motorRunUnlimited(SH_Motor_2, SH_Direction_Reverse, 30); 71 delay(50); 72 } 73 } 74 75 76else{ 77evshield.bank_a.motorStop(SH_Motor_Both, SH_Next_Action_BrakeHold); 78evshield.bank_b.motorStop(SH_Motor_Both, SH_Next_Action_BrakeHold); 79delay(50); 80 } 81 }

試したこと

これを作ったときのバージョンが1.8.9でしたが、バージョンを最新(1.8.13)にすることによって一時期は正常に動いていました。
その後再度動かなくなり、サンプルプログラムを通してみましたが、pixy2のサンプルは通りましたがEVshieldのサンプルが動きませんでした。EVshieldのサンプルプログラムも前は正常に通っていました。
エラーメッセージを解読しようと試みましたが、実力不足で読めず……

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

pixy2
EVshield
Aruduino(1.8.13)

ボードはAruduino megaを使用しています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/02/25 08:29

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
osano-kenji

2021/02/25 08:38

修正しました。初めて質問させていただいたので、使い方がよくわかっていませんでした。すみません。
guest

回答3

0

そうであれば、ライブラリーのエラーの様です。
最新化するなど試してください。

c++

1C:\Users\magat\OneDrive\�h�L�������g\Arduino\libraries\EVShield-master\SoftI2cMaster.cpp:163:11: error: cannot convert 'bool' to 'uint8_t* {aka unsigned char*}' in return 2

投稿2021/03/01 05:33

herobo

総合スコア153

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

osano-kenji

2021/04/27 07:53

返信遅くなりすみません。ライブラリを最新のものにしてみたのですがうまくいかず、一旦ライブラリから当該のファイルを削除して入れなおしてみたりもしたのですが、変化がありませんでした。
osano-kenji

2021/04/27 08:40

削除しきれていなかったみたいです。入れ直しで解決しました。ありがとうございました!
guest

0

ボードは正しいですか?pixy2、ではないような・・・

Arduino:1.8.13 (Windows Store 1.8.42.0) (Windows 10), ボード:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

投稿2021/02/26 03:43

herobo

総合スコア153

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

osano-kenji

2021/03/01 05:04

ボードはArdinomega Magaを使用しています。設定を見直しましたが、そこは間違えていないはずです。
guest

0

ベストアンサー

SoftI2cMaster.cppは更新されていてエラーになった場所が変更されているようですから、ライブラリを最新のバージョンに更新してみてはいかがですか?

投稿2021/02/25 22:49

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

osano-kenji

2021/03/01 04:59

最新バージョンに更新してみましたが、特に変化はありませんでした……。
thkana

2021/03/01 11:41

更新内容は確認しましたか? もし、エラーに変化がないのならそれは更新できていないということではないでしょうか。
osano-kenji

2021/04/27 08:42

返信が遅くなってしまってすみません。ライブラリをいったんすべて削除し、最新バージョンのライブラリを入れなおしたらコンパイルが通りました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問