Temperaturanzeige auf TFT Display ST7735 mit BME280

Um das neue TFT Display vom Typ ST7735 zu nutzen, habe ich dieses an ein Arduino Nano angesteckt. Die Umweltdaten kommen aus dem BME280 Sensor. Nach etwas probieren finde ich diese Anzeige am besten. Blauer Hintergrund und weiße Ziffern. Aber das ist ja Geschmackssache.

Nachdem die Bibliotheken Adrafuit_Sensor und Adafruit_BME280 eingebunden waren, wurden die PINs vom Arduino Nano zugewiesen.

// festlegung der SPI bus to pins
#define BME_SCK 5   // Nano A5 = BME280 SCK/SCL
#define BME_MOSI 4  // Nano A4 = BME280 SDA/MOSI

Für das Display werden drei Bibliotheken benötigt:

#include <SPI.h>             // SPI für die Kommunikation
#include <Adafruit_GFX.h>    // Adafruit Grafik-Bibliothek wird benötigt
#include <Adafruit_ST7735.h> // Adafruit ST7735-Bibliothek

Die PINs des Display habe ich so festgelegt:
// == TFT Display ==
#define TFT_PIN_CS   10 // Arduino-Pin an Display CS = Nano D10
#define TFT_PIN_DC   9  // Arduino-Pin an Display A0 = Nano D9
#define TFT_PIN_RST  8  // Arduino Reset-Pin RST grün = Nano RST

Warum im Code die SDA Leitung (D11) nicht festgelegt wird, weiss ich nicht. Aber sie ist wichtig. Ohne diese funktioniert das Display nicht.
In der Zuweisung: Adafruit_ST7735 tft = Adafruit_ST7735(TFT_PIN_CS, TFT_PIN_DC,  TFT_PIN_RST); wird dies auch nicht angegeben.

Die Werte vom Sensor werden Variablen zugewiesen. Zum Abgleich wird bei mir 3 Grad abgezogen und 20 Prozent Luftfeuchtigkeit hinzugezählt. Diese Werte muss man selbst ausprobieren und eintragen.
temperature = bme.readTemperature() – 3;  
humidity = bme.readHumidity() + 20;  
pressure = bme.readPressure() / 100.0F;

Damit die Zeile der Werte neu gezeichnet wird, habe ich diese Zeile eingefügt: tft.setTextColor(ST7735_WHITE,ST7735_BLUE); So wird nur die Zeile neu gesetzt mit blauem Hintegrund und weißer Schrift. Ohne diese Zeile bleiben die Pixel in der gleichen Farbe und es füllt sich ein Kästchen in größe der Ziffer.

keine echten Pixelfehler im TFT Display

Beispiel für den Luftdruck.
Links ein Pixel vom Rand und 120 Pixel von oben.
tft.setCursor(1,120); // setCursor(von links,von oben);  
Die Textfarbe soll grün sein und die Schriftgröße 1 haben und den Text schreiben.
tft.setTextColor(ST7735_GREEN); // setTextColor(farbe);  
tft.setTextSize(1);  // setTextSize(groesse);  
tft.print(„Luftdruck hPa:“);  
Hier das zeichnen der neuen Zeile mit weißen Text und blauem Hintergrund.
tft.setTextColor(ST7735_WHITE,ST7735_BLUE);
tft.setCursor(1,132); // setCursor(von links,von oben); 
tft.setTextSize(3);  // setTextSize(groesse);  
tft.print(pressure); // Variable Luftdruck, siehe oben.

Code Beispiel ZIP-Datei

Quellen aus dem Internet. Nur ein bisschen geändert und zum laufen gebracht.
Mein nächstes Ziel ist es dieses Display an ein T-Baem TTGO anzuschließen.

Viel Spaß beim Experimentieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert