前提・実現したいこと
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を使用しています。
回答3件
あなたの回答
tips
プレビュー