Датчик качества воздуха Sparkfun CCS811 не работает
у меня есть плата Arduino uno и датчик sparkfun ccs811. Я попытался воспроизвести руководство с домашней страницы sparkfun (https ://learn.sparkfun.com/tutorials/ccs811-air-quality-breakout-hookup-guide?_ga=2.45231532.967238096.1560976781-258902726.1560976781), включая часть состояний ошибок.
Я загрузил одно изображение проводки (обновлено). Я также пытался использовать альтернативное аппаратное соединение с SDA на A4 и SCL на A5, как указано в комментариях к коду (см. домашнюю страницу).
Однако он просто не работает, и я всегда получаю этот код ошибки в последовательном мониторе beginCore завершается с: I2C_ERROR
Вот мой код (без верхнего блока комментариев):
#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);
void setup()
{
Serial.begin(9600);
Serial.println("CCS811 Basic Example");
Wire.begin(); //Инициализировать аппаратное обеспечение I2C
//Рекомендуется проверять статус возврата на .begin(), но это не так
//необходимый.
CCS811Core::status returnCode = mySensor.begin();
Serial.print("beginCore exited with: ");
switch ( returnCode )
{
case CCS811Core::SENSOR_SUCCESS:
Serial.println("SUCCESS");
break;
case CCS811Core::SENSOR_ID_ERROR:
Serial.println("ID_ERROR");
break;
case CCS811Core::SENSOR_I2C_ERROR:
Serial.println("I2C_ERROR");
break;
case CCS811Core::SENSOR_INTERNAL_ERROR:
Serial.println("INTERNAL_ERROR");
break;
case CCS811Core::SENSOR_GENERIC_ERROR:
Serial.println("GENERIC_ERROR");
break;
default:[enter image description here][2]
Serial.println("Unspecified error.");
}
if (returnCode != CCS811Core::SENSOR_SUCCESS)
{
Serial.println(".begin() returned with an error.");
while (1); // Зависание, если возникла проблема.
}
}
void loop()
{
//Проверяем готовность данных с помощью .dataAvailable()
if (mySensor.dataAvailable())
{
//Если это так, попросите датчик считать и вычислить результаты.
//Получить их позже
mySensor.readAlgorithmResults();
Serial.print("CO2[");
//Возвращает рассчитанное значение CO2
Serial.print(mySensor.getCO2());
Serial.print("] tVOC[");
//Возвращает рассчитанное значение TVOC
Serial.print(mySensor.getTVOC());
Serial.print("] millis[");
//Просто время с момента запуска программы
Serial.print(millis());
Serial.print("]");
Serial.println();
}
delay(10); // Не спамить шину I2C
}
@Harry333, 👍0
Обсуждение1 ответ
Вам нужно припаять эти разъемы к разъему. Простое вставление их в сквозные отверстия не обеспечивает надежного соединения.
Так просто, хоть и трудно узнать :D, @Sim Son
- Подключение двух Arduino через I2C, когда контакты I2C A4/A5 уже используются.
- Чтение данных из eagle tree airspeed v3
- MAX30102 показывает частоту сердечных сокращений: 0.00 ударов в минуту / SpO2: 0%
- Датчики I2C не работают при подключении к LCD дисплею 20X04
- Измерения датчиков My Atlas Scientific дают нулевые значения при первом чтении
- Проблема стабильности кода прерываний, связанного с датчиком расхода
- DHT20 и дисплей Oled не работают вместе
- Как предотвратить попадание помех от Livewire/других датчиков в матрицу клавиатуры с одним аналоговым выводом (с использованием резисторов)?
Может быть, ваше заземление к датчику находится не в том месте? На изображении видно, что фиолетовый провод подключен на один контакт справа от контакта заземления., @chrisl
Ты был прав; Я только что исправил это и загрузил новое изображение. Но он все еще не работает., @Harry333