№ 8459 В разделах: Electronics
ESP8266
Programming
от September 9th, 2017,
В подшивках: ESP8266, Sensors, Smart Home
Ничего сверхестественного тут нет, кроме нескольких моментов, которые упускают новички просто не заглядывая в код скачанных библиотек для Arduino IDE или документацию к ним.
Итак, чаще всего для BMP280 и BME280 используется библиотека от Adafruit. Датчики отличаются лишь наличием гигрометра. Помимо этого еще сама библиотека инклудит другую библиотеку Adafruit sensor unified, но это не обязательно, т.к. она в реальности не используется. Если не хотите править код библитеки и в принципе пофигу на размер итоговой программы, то можно ее и установить. Я же просто закомментировал неиспользуемый class Adafruit_BMP280_Unified : public Adafruit_Sensor
и забыл. Итого получим такой инклуд для работы датчика:
#include <Wire.h> #include <Adafruit_BMP280.h>
Печалька в том, что народ не читает документацию и не смотрит код подключаемых библиотек СОВСЕМ и даже если смотрят код, то видят там фигу. Давайте объясню эту фигу. Датчики идут с адресами 0x76 и 0x77. 99% пациентов лезут в код править дефайн с дефолтным адресом, хотя могли бы взять и посмотреть определение самой функции bool begin(uint8_t addr = BMP280_ADDRESS);
. Это значит, что если в begin не был передан адрес датчика, то только в этом случае будет использован дефайн с тем адресом. Давайте не будем предаваться массовому дебилизму и сделаем как надо 🙂
#define BME280_ADDRESS 0x76 Adafruit_BMP280 bme; void bmp280Init() { if (!bme.begin(BME280_ADDRESS )) { Serial.println(F("\nCould not find a valid BMP280 sensor, check wiring!")); while (1) delay(10); } }
Время читать!
void bmpSend() { float termoValue = 0; //C float pressureValue = 0; //mmHg pressureValue = bme.readPressure() / 133.32239F; termoValue = bme.readTemperature(); }
Температура будет отдана в Цельсия, а давление в привычных нам миллиметрах ртутного столба. Вот, собственно, и всё.
Полный код примера можно посмотреть здесь.
Fortune cookie: Today's spam: CHECK IT OUT BEFORE THEY TAKE DOWN OUR SITE AGAIN.
Leave a Reply