Ola pessoal, fiz um sketch para ler dois sensores, o BMP280 e o DHT22 e jogar tudo em um display Nokia 5110. Inseri as bibliotecas, direcionei as saídas para o display, mas notei que a temperatura esta cerca de 5 graus acima do que seria correto. A leitura de temperatura, pressão e altitude é do BMP280 e a umidade do sensor DHT22. O fato é que, quando leio a temperatura do DHT22, pois ele também mede temperatura, também mostra com o mesmo erro, uns 5 graus acima do normal. Não sei existem outras bibliotecas para fazer isso, mas como o erro esta nos dois sensores, então estou culpando as bibliotecas.
Se alguém tiver alguma ideia de como resolver isto, desde já fico muito agradecido.
Segue sketch:
#include <Wire.h>
#include <SPI.h>
#include <DHT.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
// Software SPI (slower updates, more flexible pin options):
// pin 8 - Serial clock out (SCLK)
// pin 9 - Serial data out (DIN)
// pin 10 - Data/Command select (D/C)
// pin 11 - LCD chip select (CS)
// pin 12 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);
// #define LOGO16_GLCD_HEIGHT 16
// #define LOGO16_GLCD_WIDTH 16
#define BMP_SCK 7
#define BMP_MISO 6
#define BMP_MOSI 5
#define BMP_CS 4
#define DHTPIN 3
#define DHTTYPE DHT22
//Adafruit_BMP280 bme; // I2C
//Adafruit_BMP280 bme(BMP_CS); // hardware SPI
Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
display.begin();
// Ajusta o contraste do display
display.setContrast(48);
// Apaga o buffer e o display
display.clearDisplay();
Serial.println(F("BMP280 teste!!"));
Serial.println("DHT22 Teste!!");
dht.begin();
if (!bme.begin()) {
Serial.println(F("Sensor BMP280 nao encontrado!!!"));
while (1);
}
}
void loop() {
display.clearDisplay();
// Saida na serial - Umidade
float Umidade = dht.readHumidity();
Serial.print("Umidade: ");
Serial.print(Umidade);
Serial.println(" %\t");
// text display texts - Saida no display - Umidade
display.setCursor(0,0);
display.print("Umid:");
display.print(Umidade);
display.print("%\n");
// Saida na serial - Temperatura
Serial.print(F("Temperatura = "));
Serial.print(bme.readTemperature());
Serial.println(" *C");
// Saida no display - Temperatura
display.print(F("Temp:"));
display.print(bme.readTemperature());
display.print(" C\n");
// Saida no display - Pressao
display.print(F("P"));
display.print(bme.readPressure());
display.print(" hPa\n");
// Saida na serial - Pressao
Serial.print(F("Pressao = "));
Serial.print(bme.readPressure());
Serial.println(" Pa");
/* display.display();
display.print("Umid:");
display.print(Umidade);
display.print("\n");
display.display();*/
Serial.print(F("Altitude Aprox = "));
Serial.print(bme.readAltitude(1019)); // this should be adjusted to your local forcase
Serial.println(" m");
display.print(F("Alt:"));
display.print(bme.readAltitude(1019)); // this should be adjusted to your local forcase
display.print("m\n");
display.display();
Serial.println();
delay(2000);
}
Obrigado.
César