Брелок Arduino и датчик CCS811

Я подключил брелок и CCS811 Я пытаюсь собрать и загрузить скетч в модуль:

  /******************************************************************************
  Read basic CO2 and TVOCs

  Marshall Taylor @ SparkFun Electronics
  Nathan Seidle @ SparkFun Electronics

  April 4, 2017

  https://github.com/sparkfun/CCS811_Air_Quality_Breakout
  https://github.com/sparkfun/SparkFun_CCS811_Arduino_Library

  Read the TVOC and CO2 values from the SparkFun CSS811 breakout board

  A new sensor requires at 48-burn in. Once burned in a sensor requires
  20 minutes of run in before readings are considered good.

  Hardware Connections (Breakoutboard to Arduino):
  3.3V to 3.3V pin
  GND to GND pin
  SDA to A4
  SCL to A5

******************************************************************************/
#include <Wire.h>

#include "SparkFunCCS811.h" //Нажмите здесь, чтобы получить библиотеку: http://librarymanager/All#SparkFun_CCS811

#define CCS811_ADDR 0x5B // Адрес I2C по умолчанию
//#define CCS811_ADDR 0x5A //Альтернативный адрес I2C

CCS811 mySensor(CCS811_ADDR);

#include <SoftwareSerial.h>
const int rx = 0; //3
const int tx = 2; //4
const int alarmPin = 4;
SoftwareSerial mySerial(rx, tx);




void setup()
{
  mySerial.begin(9600);
  mySerial.println("CCS811 Basic Example");

  Wire.begin(); //Инициализировать оборудование I2C

  pinMode(alarmPin, OUTPUT);
}

void loop()
{
  //Проверяем готовность данных с помощью .dataAvailable()
  if (mySensor.dataAvailable())
  {
    //Если это так, попросите датчик считать и вычислить результаты.
    //Получить их позже
    mySensor.readAlgorithmResults();

    mySerial.print("CO2[");
    //Возвращает рассчитанное значение CO2
    double val = mySensor.getCO2();
    mySerial.print(val);
    if(val>=2000){
      digitalWrite(alarmPin, HIGH); 
    }
    //Serial.print("] tVOC[");
    //Возвращает рассчитанное значение TVOC
    //Serial.print(mySensor.getTVOC());
    //Serial.print("] миллис[");
    // Отображение времени с момента запуска программы
    //Serial.print(millis());
    //Серийный.принт("]");
    //Серийный.println();
  }

  delay(10); // Не спамить шину I2C
}

Однако, когда я проверяю скетч, я получаю следующие ошибки:

In file included from C:\Users\Nitin\Desktop\co2\co2.ino:26:0:

C:\Users\Nitin\Documents\Arduino\libraries\SparkFun_CCS811_Arduino_Library\src/SparkFunCCS811.h:77:28: error: 'TwoWire' has not been declared

  CCS811_Status_e beginCore(TwoWire &wirePort);

                            ^~~~~~~

C:\Users\Nitin\Documents\Arduino\libraries\SparkFun_CCS811_Arduino_Library\src/SparkFunCCS811.h:97:2: error: 'TwoWire' does not name a type; did you mean 'Wire'?

  TwoWire *_i2cPort; //Общее подключение к выбранному пользователем оборудованию I2C

  ^~~~~~~

  Wire

C:\Users\Nitin\Documents\Arduino\libraries\SparkFun_CCS811_Arduino_Library\src/SparkFunCCS811.h:112:13: error: 'TwoWire' has not been declared

  bool begin(TwoWire &wirePort = Wire);         // Использовать оборудование Wire по умолчанию

             ^~~~~~~

C:\Users\Nitin\Documents\Arduino\libraries\SparkFun_CCS811_Arduino_Library\src/SparkFunCCS811.h:113:34: error: 'TwoWire' has not been declared

  CCS811_Status_e beginWithStatus(TwoWire &wirePort = Wire);    // Использовать оборудование Wire по умолчанию

                                  ^~~~~~~

C:\Users\Nitin\Documents\Arduino\libraries\SparkFun_CCS811_Arduino_Library\src/SparkFunCCS811.h:112:33: error: could not convert 'Wire' from 'TinyM_USI_TWI' to 'int&'

  bool begin(TwoWire &wirePort = Wire);         // Использовать оборудование Wire по умолчанию

                                 ^~~~

C:\Users\Nitin\Documents\Arduino\libraries\SparkFun_CCS811_Arduino_Library\src/SparkFunCCS811.h:113:54: error: could not convert 'Wire' from 'TinyM_USI_TWI' to 'int&'

  CCS811_Status_e beginWithStatus(TwoWire &wirePort = Wire);    // Использовать оборудование Wire по умолчанию

                                                      ^~~~

Multiple libraries were found for "Wire.h"
 Used: C:\Users\Nitin\AppData\Local\Arduino15\packages\adafruit\hardware\avr\1.4.13\libraries\Wire
 Not used: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire
Multiple libraries were found for "SparkFunCCS811.h"
 Used: C:\Users\Nitin\Documents\Arduino\libraries\SparkFun_CCS811_Arduino_Library
 Not used: C:\Users\Nitin\Documents\Arduino\libraries\arduino_613982
Using library Wire at version 1.0 in folder: C:\Users\Nitin\AppData\Local\Arduino15\packages\adafruit\hardware\avr\1.4.13\libraries\Wire 
Using library SparkFun_CCS811_Arduino_Library at version 2.0.1 in folder: C:\Users\Nitin\Documents\Arduino\libraries\SparkFun_CCS811_Arduino_Library 
Using library SoftwareSerial at version 1.0 in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial 
exit status 1
Error compiling for board Adafruit Gemma (ATtiny85 @ 8MHz).

Я вижу, что эта библиотека - SparkFun_CCS811_Arduino_Library несовместима с брелоком https://github.com/sparkfun/SparkFun_CCS811_Arduino_Library/issues/19

кто-нибудь может подсказать, как написать скетч для брелока, подключенного к датчику CCS811?

, 👍0

Обсуждение

внимательно прочитайте распечатку ошибки... о чем она вам говорит?, @jsotola


1 ответ


Лучший ответ:

1

Похоже, у вас есть два варианта

  • Используйте другой контроллер, совместимый с обычной библиотекой Arduino Wire — например, Nano?
  • Измените SparkFunCCS811.h, добавив #include TinyWireM.h вместо Wire.h. На самом деле это совсем несложно — просто нужно немного терпения и понимания того, что «волшебства нет».

Фрэнк

,