Проблема с датчиком ms5611.

MIcrolab
Offline
Зарегистрирован: 23.07.2018

Здравствуйте, уважаемые форумчане. Помогите пожалуйста разобраться в чем может быть проблема? Есть датчик давления ms5611, датчик темпеературы ds18b20 , датчик влажности si7021,arduino nano. Выполнение скетча зависает на 21 строке. Если её закоментировать, то скетч выполняеться полностью, но не работает датчик. Что делать?

#include <iarduino_RF433_Transmitter.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <SI7021.h>
#include <MS5611.h>
#define ONE_WIRE_BUS 5
OneWire oneWire (ONE_WIRE_BUS);
Датчик SI7021;
MS5611, ms5611;
unsigned long realPressure;
float d;
двойной referencePressure;
Даллас-датчики температуры (& oneWire);
радиостанция iarduino_RF433_Transmitter (12);         
int data [3];
int t;
int h;
void setup () {
  Serial.begin (9600);
  Serial.print ( "OK");
  ms5611.begin ();
  sensors.begin ();
  boolean currentLineIsBlank = true;
  Wire.begin ();
  Serial.print ( "OK");
  Serial.print («Oversampling:»);
  Serial.println (ms5611.getOversampling ());
  radio.begin ();
  radio.setDataRate (i433_1KBPS);
  radio.openWritingPipe (5);
}
void loop () {
  realPressure = ms5611.readPressure ();
  d = realPressure / 133.322;
  h = датчик.getHumidityPercent ();
  sensors.requestTemperatures ();
  t = sensor.getTempCByIndex (0);
  данные [0] = t;
  данные [1] = h;
  данные [2] = d;
  radio.write (& data, sizeof (данные));
  Задержка (5000);
  Serial.println ( "OK");
}

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

Никогда не встречал в тексте программы незакомментированные русские слова.

MIcrolab
Offline
Зарегистрирован: 23.07.2018
#include <iarduino_RF433_Transmitter.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <SI7021.h>
#include <MS5611.h>
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
SI7021 sensor;
MS5611 ms5611;
unsigned long realPressure;
float d;
double referencePressure;
DallasTemperature sensors(&oneWire);
iarduino_RF433_Transmitter radio(12);         
int data[3];
int t;
int h;
void setup() {
  Serial.begin(9600);
  Serial.print("OK");
  ms5611.begin();
  sensors.begin();
  boolean currentLineIsBlank = true;
  Wire.begin();
  Serial.print("OK");
  Serial.print("Oversampling: ");
  Serial.println(ms5611.getOversampling());
  radio.begin();
  radio.setDataRate     (i433_1KBPS);
  radio.openWritingPipe (5);
}
void loop() {
  realPressure = ms5611.readPressure();
  d = realPressure / 133.322;
  h = sensor.getHumidityPercent();
  sensors.requestTemperatures();
  t = sensors.getTempCByIndex(0);
  data[0] = t;
  data[1] = h;
  data[2] = d;
  radio.write(&data, sizeof(data));
  delay(5000);
  Serial.println("OK");
}

 

MIcrolab
Offline
Зарегистрирован: 23.07.2018

Гугл автоматом почему то перевел)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Во-первых, проверьте, правильно ли Вы инициализируете датчики. Обычно либо при объявлении, либо при инициализации датчику нужна передача некоторой информации: номера пина, адреса и т.п. В общем, Ардуина должна каким-то образом узнать, как ей обращаться к датчику.

Ну и второе: можно расставить отладочную выдачу в библиотеке, чтобы точно локализовать, на чем именно происходит затык.

VasiliyV
Offline
Зарегистрирован: 09.07.2018

А отдельно от всего датчик ms5611 работает? Отключите все остальные датчики и библиотеки для работы с ними. Убедитесь что библиотека и датчик ms5611 функционируют нормально. А уж потом по мере подключения других датчиков и библиотек для них найдёте какие библиотеки или датчики чего не поделили. В идеале следует убедиться в работоспособности всех датчиков и библиотек к ним по отдельности.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

На будущее если планируется расширять и т.д. стоит посмотреть в сторону BME280, все в одном

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

датчик давления ms5611, датчик темпеературы ds18b20 , датчик влажности si7021 работают на разных интерфейсах и я бы не стал их ставить на одном и том же порту. Сделайте отдельный порт для ds18b20.

b707
Offline
Зарегистрирован: 26.05.2017

вполне возможно, что скетч зависает не на 21 строке, а на 22. Датчик SI7021 описан как sensor, но потом вы к нему обращаетесь как sensors. Код вообще компилируется?

Ну и выше правильно написали - в скетче нигде не указано, к каким пинам присоединены датчики SI7021 и MS5611

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

b707 пишет:

вполне возможно, что скетч зависает не на 21 строке, а на 22. Датчик SI7021 описан как sensor, но потом вы к нему обращаетесь как sensors. Код вообще компилируется?

Ну и выше правильно написали - в скетче нигде не указано, к каким пинам присоединены датчики SI7021 и MS5611

они i2c

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А если поменять 21 и 22 строку где зависает?