INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
TFT DHT22 Werte überschreiben
15.02.2015, 14:47
Beitrag #1
TFT DHT22 Werte überschreiben
Hallo an alle,
ich versuche gerade auf einem tft 1,8" die Temp und den Luftf. darzustellen.
Die Werte werden angezeigt, aber beim aktualisieren bleiben die Pixel und es wird unlesbar. Wenn ich alles überschreibe und neu einlese, sieht es wie blinken aus?
Wie kann ich das blinken verhindern?
Code:
#include "Wire.h"                                
#include "math.h"                                
#include "DHT.h"                                
#include <SPI.h>
#include <TFT.h>
#include <SPI.h>
#define cs   10
#define dc   9
#define rst  8  
#define DHTPIN A0                                
#define DHTTYPE DHT22                            
DHT dht(DHTPIN, DHTTYPE);                        

#define cs   10
#define dc   9
#define rst  8  

TFT TFTscreen = TFT(cs, dc, rst);

void setup()
  {
  dht.begin();                                  
  TFTscreen.begin();
  TFTscreen.background(0, 0, 0);
  TFTscreen.setTextSize(2);
  }

void loop()
  {
  int hum = dht.readHumidity();                  
  delay(2000);                                  
  float h = dht.readHumidity();                  
  float t = dht.readTemperature();              
  float f = dht.readTemperature(true);          
  
  if (isnan(h) || isnan(t) || isnan(f)) {        
    Serial.println("Lesefehler am DHT-Sensor!");
    return;
  }

  float hi = dht.computeHeatIndex(f, h);        

TFTscreen.fillScreen(ST7735_GREEN);
TFTscreen.stroke(0,0,0);

TFTscreen.setCursor(1, 1);                      
TFTscreen.print("Temp. :");                    
TFTscreen.setCursor(85, 1);                    
TFTscreen.print(t);                            
TFTscreen.setCursor(150, 1);                    
TFTscreen.print("C");                          

TFTscreen.setCursor(1, 23);                    
TFTscreen.print("Luftf.:");                    
TFTscreen.setCursor(85, 23);                    
TFTscreen.print(h);                            
TFTscreen.setCursor(150, 23);                  
TFTscreen.print("%");                          
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2015, 15:15 (Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2015 15:16 von rkuehle.)
Beitrag #2
RE: TFT DHT22 Werte überschreiben
Hallo v1000,

ich würde alles was nur einmal passieren muss aus dem loop raus nehmen und an das Ende von setup packen.. Also stroke, fillscreen und das print für die Beschriftungen der Messwerte.
Das print für die Messwerte selbst bleibt im loop.
Nach jeder Messung die Bereiche für die Messwerte mit Leerzeichen und dann mit den Meswerten überschreiben. Mehr wirst du kaum rausholen können.
Grüße Ricardo
PS: SPI.h ist zweimal drin.

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2015, 16:37
Beitrag #3
RE: TFT DHT22 Werte überschreiben
Hallo rkuehle,
Danke für die Infos.
Wie mach ich das mit den Leerzeichen?
Vielen Dank für die Hilfe
Grüße V1000
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2015, 19:03
Beitrag #4
RE: TFT DHT22 Werte überschreiben
Konkret (aber aus dem Kopf - da kein Display) würde ich es so machen:
Code:
#include "Wire.h"
#include "DHT.h"
#include <SPI.h>
#include <TFT.h>
#define cs   10
#define dc   9
#define rst  8
#define DHTPIN A0
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const char blank="    "; // Länge entsprechend auszugebenden Messwerten
TFT TFTscreen = TFT(cs, dc, rst);
void setup()
{
  dht.begin();
  TFTscreen.begin();
  TFTscreen.background(0, 0, 0);
  TFTscreen.setTextSize(2);
  TFTscreen.fillScreen(ST7735_GREEN);
  TFTscreen.stroke(0, 0, 0);
  TFTscreen.setCursor(1, 1);
  TFTscreen.print(F("Temp. :"));
  TFTscreen.setCursor(150, 1);
  TFTscreen.print(F("C"));
  TFTscreen.setCursor(1, 23);
  TFTscreen.print(F("Luftf.:"));
  TFTscreen.setCursor(150, 23);
  TFTscreen.print(F("%"));
}
void loop()
{
  delay(2000);
  if (isnan(h) || isnan(t) || isnan(f))
  {
    Serial.println(F("Lesefehler am DHT-Sensor!"));
    return;
  }
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  TFTscreen.setCursor(85, 1);
  TFTscreen.print(blank);
  TFTscreen.print(t);
  TFTscreen.setCursor(85, 23);
  TFTscreen.print(blank);
  TFTscreen.print(h);
}
Da du nur temp und hum ausgibst habe ich den Rest mal rausgenommen
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2015, 19:28
Beitrag #5
RE: TFT DHT22 Werte überschreiben
Hallo rkeuhle,
vielen Dank für deine Mühe,
ich habe mal deine Infos kopiert.
Folgende Fehelermeldung wird mir angezeigt:
tft_prog:17: error: invalid conversion from 'const char*' to 'char'
mein code:

#include "Wire.h"
#include "math.h"
#include "DHT.h"
#include <TFT.h>
#include <SPI.h>
#define cs 10
#define dc 9
#define rst 8
#define DHTPIN A0
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

#define cs 10
#define dc 9
#define rst 8
const char blank=" "; // Länge entsprechend auszugebenden Messwerten
TFT TFTscreen = TFT(cs, dc, rst);

void setup()
{
dht.begin();
TFTscreen.begin();
TFTscreen.background(255, 0, 0);
TFTscreen.stroke(255, 255, 255);
TFTscreen.setTextSize(2);
TFTscreen.setCursor(1, 1);
TFTscreen.print("Temp. :");
TFTscreen.setCursor(150, 1);
TFTscreen.print("C");
TFTscreen.setCursor(1, 23);
TFTscreen.print("Luftf.:");
TFTscreen.setCursor(150, 23);
TFTscreen.print("%");
}

void loop()
{
int hum = dht.readHumidity();
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);

if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Lesefehler am DHT-Sensor!");
return;
}

float hi = dht.computeHeatIndex(f, h);

TFTscreen.setCursor(85, 1);
TFTscreen.print(blank);
TFTscreen.print(t);
TFTscreen.setCursor(85, 23);
TFTscreen.print(blank);
TFTscreen.print(h);

}

was mache ich falsch?
Grüße V1000
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2015, 19:58
Beitrag #6
RE: TFT DHT22 Werte überschreiben
Zitat:was mache ich falsch?
Nix, war mein Fehler. Nimm mal bei
Code:
const char blank=" ";
das "const" weg.
Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.02.2015, 20:17
Beitrag #7
RE: TFT DHT22 Werte überschreiben
Hallo rkuehle,
gesagt getan
ergebnis:
tft_prog:17: error: invalid conversion from 'const char*' to 'char'
hast du noch eine idee?
gruß v1000
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.02.2015, 09:04
Beitrag #8
RE: TFT DHT22 Werte überschreiben
Moin,

dann nimm oben die Deklaration von char blank ganz raus und schreibe in der loop anstatt
Code:
TFTscreen.print(blank);
lieber folgendes rein
Code:
TFTscreen.print("     "); // natürlich in der notwendigen Breite
Ersatzweise geht auch ein .text()-Aufruf wie hier beschrieben: http://arduino.cc/en/Reference/TFTText
Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern TimeMen 10 475 03.07.2016 09:00
Letzter Beitrag: Binatone
  Ausgabe druckt immer 2 Werte anstatt nur einen. Finde den Fehler nicht TimeMen 24 743 02.07.2016 14:18
Letzter Beitrag: hotsystems
  Werte an anderes Programm weiterleiten Typ 2 438 12.03.2016 23:28
Letzter Beitrag: Typ
  digitale Werte trotz Stromunterbrechung nicht verlieren goldfisch 63 4.243 06.01.2016 13:17
Letzter Beitrag: Bitklopfer
  werte vom MPU6050 gy521 bekommen max1798 0 463 18.12.2015 21:11
Letzter Beitrag: max1798
  Arduino werte auslesen Atwist 11 1.328 21.11.2015 20:58
Letzter Beitrag: hotsystems
  gegenseitiges Zuweisen von Pointeradressen und Ihrer "Werte" HaWe 22 1.449 05.11.2015 18:42
Letzter Beitrag: Thorsten Pferdekämper
  Werte aus der SD - Karte zuordnen Gandalf 19 1.916 12.09.2015 12:48
Letzter Beitrag: Gandalf
  DHT22-Werte via Funk MeisterQ 27 4.896 27.07.2015 21:48
Letzter Beitrag: MeisterQ
  Werte in die UTouchCD.h eintragen jgrothe 0 440 17.06.2015 17:23
Letzter Beitrag: jgrothe

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste