Пробовал создать пользовательский блок с SparkFunBME280.h библиотекой. Компилируется , но показания датчика 0.00 и не меняются .
Отправлено спустя 3 часа 12 минут 28 секунд:
Блок для BME280 на библиотеке SparkFunBME280
вот код скетча . Где ошибка ? не могу разобраться.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "Wire.h"
#include "SparkFunBME280.h"
#include "SPI.h"
#include <stdint.h>
LiquidCrystal_I2C _lcd1(0x27, 20, 4);
int _dispTempLength1=0;
boolean _isNeedClearDisp1;
float Temperature;
float Pressure;
BME280 mySensor;
int _disp1oldLength = 0;
int _disp3oldLength = 0;
void setup()
{
Wire.begin();
_lcd1.init();
_lcd1.backlight();
mySensor.settings.commInterface = I2C_MODE;
mySensor.settings.I2CAddress = 0x76;
mySensor.settings.runMode = 3;
mySensor.settings.tStandby = 5;
mySensor.settings.filter = 0;
mySensor.settings.tempOverSample = 1;
mySensor.settings.pressOverSample = 1;
mySensor.begin();
}
void loop()
{if (_isNeedClearDisp1) {_lcd1.clear(); _isNeedClearDisp1= 0;}
//Плата:1
if (1) {
_dispTempLength1 = ((((String("p")) + ((String((Pressure)/(133), DEC)))))).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(0, 1);
_lcd1.print((((String("p")) + ((String((Pressure)/(133), DEC))))));
} else {
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
if (1) {
_dispTempLength1 = ((((String("t")) + (( _floatToStringWitRaz(Temperature,0)))))).length();
if (_disp3oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp3oldLength = _dispTempLength1;
_lcd1.setCursor(0, 0);
_lcd1.print((((String("t")) + (( _floatToStringWitRaz(Temperature,0))))));
} else {
if (_disp3oldLength > 0) {_isNeedClearDisp1 = 1; _disp3oldLength = 0;}
}
}
String _floatToStringWitRaz(float value, int raz)
{
return String(value,raz);
}
Последний раз редактировалось
pan 30.03.2018{, 20:44}, всего редактировалось 1 раз.
Причина: портянка на 3 экрана!