前提・実現したいこと
arduinoIDEを使って ESP82661台とCCS811センサー2台同時接続、計測できるプログラミングをしています。この二つのセンサーをI2C通信して計測するプログラムでif文のところにえらーが発生しています。
最終的にシリアルモニタで二つのデータを表示させるためにエラーを解決したいです
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
lang
1'void loop()': 2ccs811_mod_de-tayou_futatu_kaizen:37:22: error: expected initializer before '(' token 3 37 | if(CCS811 mySensor1(CCS811_ADDR1).dataAvailable()) 4 | ^ 5ccs811_mod_de-tayou_futatu_kaizen:37:22: error: expected ')' before '(' token 6 37 | if(CCS811 mySensor1(CCS811_ADDR1).dataAvailable()) 7 | ~ ^ 8 | ) 9ccs811_mod_de-tayou_futatu_kaizen:37:52: error: could not convert 'mySensor1' from 'CCS811' to 'bool' 10 37 | if(CCS811 mySensor1(CCS811_ADDR1).dataAvailable()) 11 | ^ 12 | | 13 | CCS811 14ccs811_mod_de-tayou_futatu_kaizen:43:23: error: expected initializer before '(' token 15 43 | if (CCS811 mySensor1(CCS811_ADDR2).dataAvailable()) 16 | ^ 17ccs811_mod_de-tayou_futatu_kaizen:43:23: error: expected ')' before '(' token 18 43 | if (CCS811 mySensor1(CCS811_ADDR2).dataAvailable()) 19 | ~ ^ 20 | ) 21ccs811_mod_de-tayou_futatu_kaizen:43:53: error: could not convert 'mySensor1' from 'CCS811' to 'bool' 22 43 | if (CCS811 mySensor1(CCS811_ADDR2).dataAvailable()) 23 | ^ 24 | | 25 | CCS811 26「SparkFunCCS811.h」に対して複数のライブラリが見つかりました 27 28exit status 1 29 30expected initializer before '(' token
該当のソースコード
lang
1/* 2 * SparkFunのCCS811ライブラリーを使い、30秒毎にCO2、TVOCの値を読むサンプルプログラム。 3 */ 4 5#include <ESP8266WiFi.h> 6#include <Wire.h> 7#include "SparkFunCCS811.h" 8#include <SparkFunCCS811.h> 9#define CCS811_ADDR1 0x5A 10#define CCS811_ADDR2 0x5B 11 12 13 14// Default I2C Address// ESP8266のピンの定義 15 CCS811 mySensor1(CCS811_ADDR1); 16 CCS811 mySensor2(CCS811_ADDR2); 17 18void setup() { 19 Serial.begin(115200); 20 Serial.println("CCS811 Basic Example"); 21 Wire.begin(SDA, SCL); 22 CCS811Core::status returnCode1 = mySensor1.begin(); 23 if (returnCode1 != CCS811Core::SENSOR_SUCCESS) 24 { 25 Serial.println("mySensor1 returned with an error."); 26 while (1); 27 } 28 CCS811Core::status returnCode2 = mySensor2.begin(); 29 if (returnCode2 != CCS811Core::SENSOR_SUCCESS) 30 { 31 Serial.println("mySensor2 returned with an error."); 32 while (1); 33 } 34} 35 36void loop() { 37 if(CCS811 mySensor1(CCS811_ADDR1).dataAvailable()) 38 { 39 mySensor1.readAlgorithmResults(); 40 Serial.print(mySensor1.getTVOC()); 41 Serial.println(); 42 } 43 if (CCS811 mySensor2(CCS811_ADDR2).dataAvailable()) 44 { 45 mySensor2.readAlgorithmResults(); 46 Serial.print(mySensor2.getTVOC()); 47 Serial.println();
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
↓単一のセンサーでは正常に動きます
lang
1/* 2 * SparkFunのCCS811ライブラリーを使い、30秒毎にCO2、TVOCの値を読むサンプルプログラム。 3 */ 4 5#include <ESP8266WiFi.h> 6#include <Wire.h> 7#include "SparkFunCCS811.h" 8#define CCS811_ADDR 0x5B // Default I2C Address 9#define SDA 13// ESP8266のピンの定義 10#define SCL 14// ESP8266のピンの定義 11 12CCS811 ccs811(CCS811_ADDR); 13 14void setup() { 15 Serial.begin(115200); 16 Serial.println("CCS811 Basic Example"); 17 Wire.begin(SDA, SCL); 18 CCS811Core::status returnCode = ccs811.begin(); 19 if (returnCode != CCS811Core::SENSOR_SUCCESS) 20 { 21 Serial.println(".begin() returned with an error."); 22 while (1); 23 } 24 ccs811.setDriveMode(1); 25} 26 27void loop() { 28 if (ccs811.dataAvailable()) 29 { 30 ccs811.readAlgorithmResults(); 31 Serial.print(ccs811.getTVOC()); 32 Serial.println(); 33 } 34 else if (ccs811.checkForStatusError()) 35 { 36 while(1); 37 } 38 delay(10); 39}