実現したいこと
エラーが発生しないようにしたい
発生している問題・分からないこと
講義の課題にて、C++にてVScodeの拡張機能「PlatformIO」を用いて、ライブラリ「M5StickCPlus」「ArduinoJSON」を利用したカメラでの画像認識のプログラムをビルドしようとしたのですが、33行目と44行目のNULLの部分でエラーが出てビルドを行えません。
StaticJsonDocumentがエラーに関係していると思われます。
エラーメッセージ
error
1src/main.cpp:33:25: error: 'ArduinoJson::V742PB22::detail::ElementProxy< <template-parameter-1-1> >::ElementProxy(const ArduinoJson::V742PB22::detail::ElementProxy< <template-parameter-1-1> >&) [with TUpstream = ArduinoJson::V742PB22::detail::MemberProxy<ArduinoJson::V742PB22::JsonDocument&, ArduinoJson::V742PB22::detail::RamString>]' is private within this context 2 3src/main.cpp:44:25: error: 'ArduinoJson::V742PB22::detail::ElementProxy< <template-parameter-1-1> >::ElementProxy(const ArduinoJson::V742PB22::detail::ElementProxy< <template-parameter-1-1> >&) [with TUpstream = ArduinoJson::V742PB22::detail::MemberProxy<ArduinoJson::V742PB22::JsonDocument&, ArduinoJson::V742PB22::detail::RamString>]' is private within this context
該当のソースコード
#include <Arduino.h> #include <M5StickCPlus.h> #include <ArduinoJson.h> StaticJsonDocument<2048> doc; uint8_t buffer[2048]; int disp_width; int disp_height; int cam_width=240; int cam_height=320; void setup() { // put your setup code here, to run once: M5.begin(); M5.Lcd.begin(); disp_width = M5.Lcd.width(); disp_height = M5.Lcd.height(); Serial.begin(115200); Serial1.begin(115200, SERIAL_8N1, 32, 33);// Grove } void loop() { // put your main code here, to run repeatedly: if(Serial1.available()>0){//シリアルにデータがあるか確認 DeserializationError err = deserializeJson(doc, Serial1); if(err) { //Serial.print(err.c_str()); while(Serial1.available()>0){ Serial1.read(); return; } } M5.Lcd.fillScreen(BLACK); if(doc["blobs"][0]!=NULL){//0番目の対象が検出されている int tx = doc["blobs"][0]["x"];//対象の左上座標 int ty = doc["blobs"][0]["y"];//対象の左上座標 int tw = doc["blobs"][0]["w"];//対象の幅 int th = doc["blobs"][0]["h"];//対象の高さ M5.Lcd.fillRect(tx * disp_width / cam_width, //対象のx座標を表示用に変換 ty * disp_height / cam_height,//対象のy座標を表示用に変換 tw * disp_width / cam_width, //対象の幅を表示用に変換 th * disp_height / cam_height,//対象の高さを表示用に変換 ORANGE); } if(doc["blobs"][1]!=NULL){//0番目の対象が検出されている int tx = doc["blobs"][1]["x"];//対象の左上座標 int ty = doc["blobs"][1]["y"];//対象の左上座標 int tw = doc["blobs"][1]["w"];//対象の幅 int th = doc["blobs"][1]["h"];//対象の高さ M5.Lcd.fillRect(tx * disp_width / cam_width, //対象のx座標を表示用に変換 ty * disp_height / cam_height,//対象のy座標を表示用に変換 tw * disp_width / cam_width, //対象の幅を表示用に変換 th * disp_height / cam_height,//対象の高さを表示用に変換 BLUE); } } }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
エラーの内容からGoogleにて検索をしても同様のエラーに関するページを見つけることができませんでした。
また、該当講義の先生にも相談したのですが解決しませんでした。
補足
特になし
回答1件
あなたの回答
tips
プレビュー