Проблема с датчиком ms5611.
- Войдите на сайт для отправки комментариев
Вс, 05/08/2018 - 13:08
Здравствуйте, уважаемые форумчане. Помогите пожалуйста разобраться в чем может быть проблема? Есть датчик давления 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");
}
Никогда не встречал в тексте программы незакомментированные русские слова.
#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"); }Гугл автоматом почему то перевел)
Во-первых, проверьте, правильно ли Вы инициализируете датчики. Обычно либо при объявлении, либо при инициализации датчику нужна передача некоторой информации: номера пина, адреса и т.п. В общем, Ардуина должна каким-то образом узнать, как ей обращаться к датчику.
Ну и второе: можно расставить отладочную выдачу в библиотеке, чтобы точно локализовать, на чем именно происходит затык.
А отдельно от всего датчик ms5611 работает? Отключите все остальные датчики и библиотеки для работы с ними. Убедитесь что библиотека и датчик ms5611 функционируют нормально. А уж потом по мере подключения других датчиков и библиотек для них найдёте какие библиотеки или датчики чего не поделили. В идеале следует убедиться в работоспособности всех датчиков и библиотек к ним по отдельности.
На будущее если планируется расширять и т.д. стоит посмотреть в сторону BME280, все в одном
датчик давления ms5611, датчик темпеературы ds18b20 , датчик влажности si7021 работают на разных интерфейсах и я бы не стал их ставить на одном и том же порту. Сделайте отдельный порт для ds18b20.
вполне возможно, что скетч зависает не на 21 строке, а на 22. Датчик SI7021 описан как sensor, но потом вы к нему обращаетесь как sensors. Код вообще компилируется?
Ну и выше правильно написали - в скетче нигде не указано, к каким пинам присоединены датчики SI7021 и MS5611
вполне возможно, что скетч зависает не на 21 строке, а на 22. Датчик SI7021 описан как sensor, но потом вы к нему обращаетесь как sensors. Код вообще компилируется?
Ну и выше правильно написали - в скетче нигде не указано, к каким пинам присоединены датчики SI7021 и MS5611
они i2c
А если поменять 21 и 22 строку где зависает?