Salve sono un principiante! sto facendo delle prove con un oled ssd1306 e un sensore ti temperatura BMP180.
Vorrei che quando la temperatura supera una certa T mi compaia una bitmap di un termometro, per intenderci la bitmap compare ma purtroppo ogni volta che la temperatura cambia di un decimo (anche sopra la soglia fissata) la bitmap scompare e poi riappare... dov'è che sbaglio??
grazie per la disponibilità!
#include <Adafruit_BMP085.h>
//configuro sensore di temperatura
Adafruit_BMP085 Sens_Temp;
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
//definisco la tipologia di display
#define OLED_RESET 0x3C
Adafruit_SSD1306 display(128,64, &Wire,4);
const unsigned char PROGMEM Hot [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00,
0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0,
0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00,
0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0,
0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00,
0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00,
0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
void setup() {
//inizializzo il display
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)){
while(true);
}
delay(1000);
display.clearDisplay();
//inizializzo sensore T
if (!Sens_Temp.begin()) {
display.setCursor(0,0);
display.print("BMP180");
display.setCursor(0,40);
display.print("ERRORE");
display.display();
while (1) {}
}
}
void loop() {
//imposto font sul display
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.cp437(true);
//scrivo su display
display.setCursor(0,0);
display.print("T=");
display.setCursor(30,0);
display.print(Sens_Temp.readTemperature());
display.setCursor(93,0);
display.print("C");
display.display();
//condizione per bitmap
if(Sens_Temp.readTemperature()>=23) {
display.drawBitmap(40, 20, Hot, 48, 34, 1);
display.display();
}
}