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.
fony
May 5, 2024, 11:19am
22
Ok Jetzt sehe das alle meine Post waren am Telefon geschrieben.
Warte mall denke nach
fony
May 5, 2024, 11:31am
23
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?
fony
May 5, 2024, 12:48pm
25
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
fony
May 5, 2024, 1:19pm
27
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
fony:
Inside_sensor.GetTemperature(),1
Inside_sensor.GetDewPoint(),1
Die 1 am ende bedeutet "Schreibe nur eine Nachkommastelle".
Wo hast Du den Unfug her? Das mag innerhalb eines print so sein, aber nicht allein stehend.
Gruß Tommy
fony
May 5, 2024, 1:30pm
29
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
system
Closed
November 1, 2024, 1:34pm
31
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.