AHT10 Test mit zwei Sensoren

ich verwende dieses Display
https://www.reichelt.de/de/de/lcd-modul-4x20-zeichen-h-4-8mm-ge-gn-m-bel--lcd-204b-led-p31660.html?PROVID=2788&gad_source=1&gclid=EAIaIQobChMIoJaU5q72hQMVgqqDBx3uUg_jEAQYBSABEgL2c_D_BwE&&r=1

mit diesen Verbidungen

/*
 Pinbelegung am TC2004A-01 LCD:
 * LCD RS pin to digital pin 2, PD2
 * LCD Enable pin to digital pin 3, PD3
 * LCD D4 pin to digital pin 4, PD4
 * LCD D5 pin to digital pin 5, PD5
 * LCD D6 pin to digital pin 6, PD6
 * LCD D7 pin to digital pin 7, PD7
*/

es funktioniert auch siehe post#4, aber nur mit auskometierten Sensoren beides zusammen nicht.

Ok Jetzt sehe das alle meine Post waren am Telefon geschrieben.
Warte mall denke nach :wink:

Versuche so

/* AHT10 Test mit zwei Sensoren*/


#include <TimerOne.h>
#include <Wire.h>
#include <Thinary_AHT10.h>
#include <LiquidCrystal.h>

/*
 Pinbelegung am TC2004A-01 LCD:
 * LCD RS pin to digital pin 2, PD2
 * LCD Enable pin to digital pin 3, PD3
 * LCD D4 pin to digital pin 4, PD4
 * LCD D5 pin to digital pin 5, PD5
 * LCD D6 pin to digital pin 6, PD6
 * LCD D7 pin to digital pin 7, PD7
*/

LiquidCrystal LCD(2, 3, 4, 5, 6, 7); //initialisiere Pins von TC2004A-01 LCD
const int Backlight = 13;            //HIGH wenn Backlight on, PB5

AHT10Class Inside_sensor; // erstes Objekt
AHT10Class Outside_sensor; //zweites Objekt

void setup()
{
 Serial.begin(9600);
  pinMode(Backlight,OUTPUT); //Setup Backlight output, switch on
  digitalWrite(Backlight, HIGH);

  LCD.begin(20, 4);
  
 
   
  LCD.setCursor(0,0); // Display Title und Version
  LCD.print(" Temperatur Messung ");
  LCD.setCursor(0,1);
  LCD.print("  Control System    ");
  LCD.setCursor(0,2);
  LCD.print("  Version 1.0       ");
  LCD.setCursor(0,3);
  LCD.print("      Name          ");   
  Wire.begin();
  Inside_sensor.begin(eAHT10Address_Low);
  Outside_sensor.begin(eAHT10Address_High);
  delay(5000);
  digitalWrite(Backlight,LOW);
 
}

void loop()
{
  Serial.print("\t\t\t""Inside_sensor");
  Serial.println("\t\t""Outside_sensor");
  Serial.print(String("") + "Humidity(%RH):\t\t" + Inside_sensor.GetHumidity() + "%");
  Serial.println(String("\t\t\t") + Outside_sensor.GetHumidity() + "%"); 
  Serial.print(String("") + "Temperature(℃):\t" + Inside_sensor.GetTemperature() + "℃");
  Serial.println(String("\t\t\t") + Outside_sensor.GetTemperature() + "℃");
  Serial.print(String("") + "Dewpoint(℃):\t\t" + Inside_sensor.GetDewPoint() + "℃");
  Serial.println(String("\t\t\t") + Outside_sensor.GetDewPoint() + "℃");
  delay(2000);  
}

Jetzt sollte Setup und Serial Monitor funktionieren.

ja so funktioniert das LCD und beide Sensoren, aber Backlight wird nicht mehr ausgeschaltet.

 Wire.begin();
  Inside_sensor.begin(eAHT10Address_Low);
  Outside_sensor.begin(eAHT10Address_High);
  delay(5000);
  digitalWrite(Backlight,LOW);

wenn ich ändere in

  Wire.begin();
  delay(5000);
  digitalWrite(Backlight,LOW);
  Inside_sensor.begin(eAHT10Address_Low);
  Outside_sensor.begin(eAHT10Address_High);

dann funktioniert es. Warum ist das so?

Bescheidene Frage warum willst unbedingt im Setup die Hintergrundbeleuchtung abschalten?
Um ein Display "leer machen" nutzt man

LCD.clear();

Das ist einfach nur ein Test, um mich mit den Funktionen des LCD vertraut zu machen, und es zu verstehen.
Setup funktioniert, werde jetzt mich an die loop wagen um die Temperaturen auf das LCD zu printen.
Danke nochmal an die Unterstützung.

Bei Fragen melde ich mich wieder.

Grüße

Schön, auf den Weg zum LCD ein Tipp, die gezeigte werte sind alle in Float mit zwei Nachkommastellen, was macht kein Sin. begrenze das mit

Inside_sensor.GetTemperature(),1 
Inside_sensor.GetDewPoint(),1

Die 1 am ende bedeutet "Schreibe nur eine Nachkommastelle".
Die Feuchtigkeit mach zum int

(int)Outside_sensor.GetHumidity()

das sollte reichen, ist ja nur Relative Feuchtigkeit zu Temperatur. Dadurch spart man Platz auf dem Display

Wo hast Du den Unfug her? Das mag innerhalb eines print so sein, aber nicht allein stehend.

Gruß Tommy

ist ja nur Beispiel bevor man auf das LCD schreibt.
ich weis ja nicht ob der TO das nur als
einzeln schreibt =
LCD.print(Inside_sensor.GetTemperature(),1 );

oder Verkettet zum String.

LCD.print(String("") + "Dewpoint(℃):\t\t" + Inside_sensor.GetDewPoint() + "℃");

Wenn Du print ausdrücken willst, dann schreibe auch print, sonst kommt Unfug raus.

Gruß Tommy

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.