Hallo mal wieder
ich habe zwischenzeitlich endlich das Display erhalten und bin etwas am experimentieren damit.
Den Ursprünglichen Sketch habe ich nochmal neu geschrieben inklusive der Änderungen mit den DHTs.
Eigentlich sollte es nun kein Problem sein mit dem Auslesen der Werten und anzeigen über den Serial Monitor hat es auf funktioniert.
Beim der Kompilierung gab es jedenfalls keine Fehlermeldung, das Display regiert aber leider nicht.....
Mit dem BeispielSketch reagiert es also sollte es keine Probleme mit der Verkabelung sein.
Hier mein Sketch
// 4 DHT22 an einem Mega 2560 angezeit auf 1.8 Zoll TFT Adafruit_ST7735
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h> // Adafruit Grafik-Bibliothek
#include <Adafruit_ST7735.h>
#include <dht.h>
//DHT #X an Pin X
#define DHT1_PIN 2
#define DHT2_PIN 3
#define DHT3_PIN 4
#define DHT4_PIN 5
//TFT Display
#define sclk 13 //PIN 9 vom Display
#define mosi 11 //PIN 8
#define cs 10 //PIN 10
#define dc 9 //PIN 7
#define rst 8 //PIN RESET
// Setup der Bibliothek (kein SPI)
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst, mosi, sclk);
// Initialisieren der DHTs
dht DHT1;
dht DHT2;
dht DHT3;
dht DHT4;
void setup (void) {
tft.initR(INITR_BLACKTAB); // TFT-Chip initialisieren
}
void loop () {
tft.fillScreen(ST7735_RED); //Bildschirm "schwarz" zeichnen
tft.setTextSize(2); // Schriftgroesse
tft.setTextWrap(true); // Text wird an Zeilenende umgebrochen
tft.setCursor (24,4); // Position des ersten Buchstabens
tft.setTextColor(ST7735_GREEN); // Textfarbe
delay(1000); // eine Sekunde warten
DHT1.read22(DHT1_PIN); //DHT1 wird ausgelesen
tft.print(DHT1.humidity, 1); // DHT1 Luftfeuchte wird ausgelesen und angezeigt
tft.print ("% "); // %-Zeichen plus Platzhalter
tft.print(DHT1.temperature, 1); // DHT1 Temp wird ausgelesen und angezeigt
tft.print("C "); // C wird angezeigt
delay(1000); // 1 Sekunde warten
tft.setCursor (44,4); // Position des ersten Buchstabens
tft.setTextColor(ST7735_BLACK); // Textfarbe
DHT2.read22(DHT2_PIN); //DHT2 wird ausgelesen
tft.print(DHT2.humidity, 1); // DHT2 Luftfeuchte wird ausgelesen und angezeigt
tft.print ("% "); // %-Zeichen plus Platzhalter
tft.print(DHT2.temperature, 1); // DHT2 Temp wird ausgelesen und angezeigt
tft.print("C "); // C wird angezeigt
delay(1000); // 1 Sekunde warten
tft.setCursor (64,4); // Position des ersten Buchstabens
tft.setTextColor(ST7735_GREEN); // Textfarbe
DHT3.read22(DHT3_PIN); //DHT3 wird ausgelesen
tft.print(DHT3.humidity, 1); // DHT3 Luftfeuchte wird ausgelesen und angezeigt
tft.print ("% "); // %-Zeichen plus Platzhalter
tft.print(DHT3.temperature, 1); // DHT3 Temp wird ausgelesen und angezeigt
tft.print("C ");
delay(1000); // 1 Sekunde warten
tft.setCursor (84,4); // Position des ersten Buchstabens
tft.setTextColor(ST7735_GREEN); // Textfarbe
DHT4.read22(DHT4_PIN); //DHT4 wird ausgelesen
tft.print(DHT4.humidity, 1); // DHT4 Luftfeuchte wird ausgelesen und angezeigt
tft.print ("% "); // %-Zeichen plus Platzhalter
tft.print(DHT4.temperature, 1); // DHT4 Temp wird ausgelesen und angezeigt
tft.print("C ");
delay(10000); //10Sekunden warten
tft.invertDisplay(true); //Display invertietren
delay(1000);
tft.invertDisplay(false); //Display invertietren
delay(1000);
tft.invertDisplay(true); //Display invertietren
delay(1000);
tft.invertDisplay(false); //Display invertietren
delay(1000);
tft.invertDisplay(true); //Display invertietren
delay(1000);
tft.invertDisplay(false); //Display invertietren
delay(1000);
//nach dem dreimaligen Blinken des Displays wird es wieder Rot und
// die Werten werden erneut ausgelesen
// jeder DHT wird ca. alle 20Sekunden ausgelesen und "erwärmt" sich nicht unnötig
}
und der Code für das Beispiel
// Grafiktest 1.8 Zoll TFT-Farb-Display (HY-1.8 SPI)
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8
#include <Adafruit_GFX.h> // Adafruit Grafik-Bibliothek
#include <Adafruit_ST7735.h> // Adafruit ST7735-Bibliothek
#include <SPI.h>
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, mosi, sclk, rst); // Display-Bibliothek Setup
void setup(void) {
tft.initR(INITR_BLACKTAB); // ST7735-Chip initialisieren
}
void loop() {
// Bildschirm mit Farbe fuellen
// fillScreen(farbe);
tft.fillScreen(ST7735_BLACK);
delay(2000); // 2 Sekunden warten
// Fontgroesse setzen
// setTextSize(groesse);
tft.setTextSize(2);
// Schrift umbrechen?
// setTextWrap(true); true=Ja, false=Nein
tft.setTextWrap(true);
// Textposition setzen
// setCursor(x,y);
tft.setCursor(24,4);
// Textfarbe setzen
// setTextColor(farbe);
tft.setTextColor(ST7735_WHITE);
// Text ausgeben
// print(text);
tft.print("Test");
delay(2000); // 2 Sekunden warten
// Gesamtes Display invertieren?
// invertDisplay(true); true=Ja, false=Nein
tft.invertDisplay(true);
delay(1000); // 1 Sekunde warten
// Gesamtes Display invertieren?
// invertDisplay(false); true=Ja, false=Nein
tft.invertDisplay(false);
delay(1000); // 1 Sekunde warten
}
Ich denke ich werde auch noch etwas mit den Positionen der Schrift sowie der Größe experimentieren müssen wenn ich mal etwas angezeigt bekomme...
Vielleicht habt ihr ja einen Tipp für mich wieso das Display nicht reagiert...
Grüße der Arne