Mehrere Codes zusammengefügt und jetzt LED problem

Hallo,
als erstes bin absoluter Anfänger und 81 Jahre alt also nicht gleich Zerreißen falls ich was falsch mache oder so.

folgendes soll angeschlossen werden
2 DS18B20
1 DHT22
1 Schwimmer Schalter der eine rote LED auslösen soll
1 LCD Display (4x20, I2C).

Ich habe die Abschnitte stück für stück programmiert, wenn 2 Sachen liefen habe ich sie zusammengetan und getestet und es klappte wunderbar bis ich zum Schwimmer Schalter mit der LED kam.
Einzel funktioniert der Code super nur, wenn ich den dann in den anderen einfüge will die LED nicht mehr leuchten.
Vielleicht findet ihr einen Fehler oder könnt mir sagen wo ich was ändern muss sei es am Code oder am Aufbau. Ich bedanke mich jetzt schon mal und finde euer Board echt klasse hat mir viel geholfen bis jetzt.

#include <OneWire.h>                 //OneWire Bibliothek
#include <DallasTemperature.h>       //DS18B20 Bibliothek
#include <Wire.h>                    //I2C Bibliothek
#include <LiquidCrystal_I2C.h>       //LCD Bibliothek
#include <DHT.h>                     //DHT Bibliothek
#define DHTPIN 9                     //DHT Sensor wird auf Pin 9 ausgelesen
#define DHTTYPE DHT22                //DHT Type wird auf DHT22 festgelegt
#define ONE_WIRE_BUS 2               //Data wire=> Digitaler Pin 2 des Arduino
DHT dht22(DHTPIN, DHTTYPE);          //DHTPIN und DHTTYPE in dht22 definiert
OneWire onewire(ONE_WIRE_BUS);       //Initialisieren des 1-Wire Bus
LiquidCrystal_I2C lcd(0x27,20,4);    //I2C LCD
OneWire oneWire(ONE_WIRE_BUS); // Initialisieren des  1-Wire Bus
DallasTemperature sensors(&oneWire); // Übergabe der 1-Wire Info
int LEDrot=6;
int taster=7;
int tasterstatus=0;


void setup(void)
{
  lcd.init();                         //LCD Initalisieren
  lcd.backlight();                    //Hintergrundbeleuchtung
  sensors.begin();                    //Auslesen der  Sensoren beginnt
  dht22.begin();                      //Auslesen DHT22 beginnt
  pinMode(LEDrot, OUTPUT);
  pinMode(taster, INPUT);
}


void loop(void)
{
 sensors.requestTemperatures(); 
  
  float t = dht22.readTemperature();       // Die Temperatur wird vom DHT22 ausgelesen, Wert in "t" schreiben
  float h = dht22.readHumidity();          // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben

lcd.setCursor(0,0);                        // Cursor auf Beginn der 1. Zeile 
  lcd.print(sensors.getTempCByIndex(0));   // Temperatur ausgeben
  lcd.setCursor(6, 0);                     // Anfang auf Stelle 6, Zeile 1 setzen
     lcd.print("\337C");                   // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
  lcd.setCursor(9, 0);                     // Anfang auf Stelle 9, Zeile 1 setzen
     lcd.print("Unten Links");             // Text "Unten Links" ausgeben
lcd.setCursor(0,1);                        // Cursor auf Beginn der 2. Zeile
  lcd.print(sensors.getTempCByIndex(1));   // Temperatur ausgeben
  lcd.setCursor(6, 1);                     // Anfang auf Stelle 7, Zeile 2 setzen
     lcd.print("\337C");                   // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
  lcd.setCursor(9, 1);                     // Anfang auf Stelle 9, Zeile 2 setzen
     lcd.print("Unten Rechts");            // Text "Unten Rechts" ausgeben
lcd.setCursor(0, 2);                       // Anfang auf Stelle 0, Zeile 0 setzen
  lcd.print(t);                            // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(6, 2);                       // Anfang auf Stelle 9, Zeile 0 setzen
  lcd.print("\337C");                      // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
lcd.setCursor(9, 2);                       // Anfang auf Stelle 15, Zeile 0 setzen
  lcd.print("Oben Mitte");                 // Text "Oben Mitte" ausgeben
lcd.setCursor(0, 3);                       // Anfang auf Stelle 0, Zeile 1 setzen
  lcd.print(h);                            // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(6, 3);                       // Anfang auf Stelle 9, Zeile 1 setzen
  lcd.print("%");                          // % auf LCD ausgeben
lcd.setCursor(9, 3);                       // Anfang auf Stelle 15, Zeile 1 setzen
  lcd.print("");                           // Text "Oben Mitte" ausgeben

tasterstatus=digitalRead(taster);
if (tasterstatus == HIGH)
{
digitalWrite(LEDrot, HIGH);
digitalWrite(LEDrot, LOW);
}
else
{
digitalWrite(LEDrot, LOW); 
}}

Grüße Johann

Ich denke an dem Teil

if (tasterstatus == HIGH)
{
digitalWrite(LEDrot, HIGH);
digitalWrite(LEDrot, LOW);
}

Led an und wieder aus

johann81:
als erstes bin absoluter Anfänger und 81 Jahre alt also nicht gleich Zerreißen falls ich was falsch mache oder so.

Herzlich Willkommen! Und nein - macht sowieso keiner.

Ich habe die Abschnitte stück für stück programmiert, wenn 2 Sachen liefen habe ich sie zusammengetan und getestet und es klappte wunderbar bis ich zum Schwimmer Schalter mit der LED kam.

Ehrlich: Sauber formatierter Code mit Bildchen eingestellt -> Karma+
Die Lösung hast Du schon, von mir nur noch zwei Hinweise und zwei Tipps:

int LEDrot=6;
int taster=7;;

Da sich die PIN nicht ändern, schreiib ein const davor.

int tasterstatus=0

Der Status geht nur 0/1 (bzw LOW/HIGH) - verwende dafür nicht int sondern bool.

Und weil Du das so super geschrieben (ich seh zum ersten Mal seit langem wieder ein (void) ) und formatierst hast:

void loop(void)
{
 sensors.requestTemperatures(); 
  
  float t = dht22.readTemperature();       // Die Temperatur wird vom DHT22 ausgelesen, Wert in "t" schreiben
  float h = dht22.readHumidity();          // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben

lcd.setCursor(0,0);                        // Cursor auf Beginn der 1. Zeile 
  lcd.print(sensors.getTempCByIndex(0));   // Temperatur ausgeben
  lcd.setCursor(6, 0);                     // Anfang auf Stelle 6, Zeile 1 setzen
     lcd.print("\337C");                   // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
  lcd.setCursor(9, 0);                     // Anfang auf Stelle 9, Zeile 1 setzen
     lcd.print("Unten Links");             // Text "Unten Links" ausgeben
lcd.setCursor(0,1);                        // Cursor auf Beginn der 2. Zeile
  lcd.print(sensors.getTempCByIndex(1));   // Temperatur ausgeben
  lcd.setCursor(6, 1);                     // Anfang auf Stelle 7, Zeile 2 setzen
     lcd.print("\337C");                   // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
  lcd.setCursor(9, 1);                     // Anfang auf Stelle 9, Zeile 2 setzen
     lcd.print("Unten Rechts");            // Text "Unten Rechts" ausgeben
lcd.setCursor(0, 2);                       // Anfang auf Stelle 0, Zeile 0 setzen
  lcd.print(t);                            // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(6, 2);                       // Anfang auf Stelle 9, Zeile 0 setzen
  lcd.print("\337C");                      // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
lcd.setCursor(9, 2);                       // Anfang auf Stelle 15, Zeile 0 setzen
  lcd.print("Oben Mitte");                 // Text "Oben Mitte" ausgeben
lcd.setCursor(0, 3);                       // Anfang auf Stelle 0, Zeile 1 setzen
  lcd.print(h);                            // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(6, 3);                       // Anfang auf Stelle 9, Zeile 1 setzen
  lcd.print("%");                          // % auf LCD ausgeben
lcd.setCursor(9, 3);                       // Anfang auf Stelle 15, Zeile 1 setzen
  lcd.print("");                           // Text "Oben Mitte" ausgeben

Hier noch ein Tipp, wie Dir die Formatierung beim drücken von STRG-T nicht verloren geht:

Am Anfang des Blockes, der nicht mehr verändert werden soll:

// *INDENT-OFF*

und am Ende des Blockes

// *INDENT-ON*

(mit den // davor!)

Und wenn Du den Lesern das mit dem Bildchen einfacher machen willst, kannst Du das Bild auch sichtbar machen.
Das geht indem Du mit der rechten Maustaste dir den Link zu dem Bild kopierst, dann unten rechts auf "modify" gehst, In Deinen Beitrag dann im Editor dahin gehst, wo das Bild zu sehen sein soll und oben auf "insert Image" klickst und die kopierte URL einfügst. (rechte Maustaste -> einfügen)
save - und fertig!

Viel Erfolg!

Vielen Dank,
habe wohl den Wald vor lauter Bäumen nicht gesehen jetzt klappt es und ich kann weiter machen die nächsten zu programmieren es soll da noch eine DS3231 dran und ein 4-Fach Relais wo ich einen Kanal per Luftfeuchte steuern möchte wird bestimmt interessant das zu machen.
Falls ihr euch fragt wofür ist für ein Terrarium von meinem Enkel er hat mich gefragt ob ich Lust zu sowas hätte und da ich ja viel Zeit habe versuche ich mich daran was bis jetzt auch gut geklappt hat.
Wenn ich das int ändere in const ändern gibt er mir diesen Fehler aus
'LEDrot' does not name a type
Ist aber nicht so schlimm geht auch mit int und denke ist nicht so schlimm.
Also das mit dem Bild bekomme ich irgendwie nicht hin könnte es daran liegen das das Bild von meinem PCs kam und nicht aus einer Cloud oder so.

Hier der geänderte Code

#include <OneWire.h>                 //OneWire Bibliothek
#include <DallasTemperature.h>       //DS18B20 Bibliothek
#include <Wire.h>                    //I2C Bibliothek
#include <LiquidCrystal_I2C.h>       //LCD Bibliothek
#include <DHT.h>                     //DHT Bibliothek
#define DHTPIN 9                     //DHT Sensor wird auf Pin 9 ausgelesen
#define DHTTYPE DHT22                //DHT Type wird auf DHT22 festgelegt
#define ONE_WIRE_BUS 2               //Data wire=> Digitaler Pin 2 des Arduino
DHT dht22(DHTPIN, DHTTYPE);          //DHTPIN und DHTTYPE in dht22 definiert
OneWire onewire(ONE_WIRE_BUS);       //Initialisieren des 1-Wire Bus
LiquidCrystal_I2C lcd(0x27,20,4);    //I2C LCD
OneWire oneWire(ONE_WIRE_BUS); // Initialisieren des  1-Wire Bus
DallasTemperature sensors(&oneWire); // Übergabe der 1-Wire Info
int LEDrot=6;
int taster=7;
bool tasterstatus=0;


void setup(void)
{
  lcd.init();                         //LCD Initalisieren
  lcd.backlight();                    //Hintergrundbeleuchtung
  sensors.begin();                    //Auslesen der  Sensoren beginnt
  dht22.begin();                      //Auslesen DHT22 beginnt
  pinMode(LEDrot, OUTPUT);
  pinMode(taster, INPUT);
}

// *INDENT-OFF*
void loop(void)
{
 sensors.requestTemperatures(); 
  
  float t = dht22.readTemperature();       // Die Temperatur wird vom DHT22 ausgelesen, Wert in "t" schreiben
  float h = dht22.readHumidity();          // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben

lcd.setCursor(0,0);                        // Cursor auf Beginn der 1. Zeile 
  lcd.print(sensors.getTempCByIndex(0));   // Temperatur ausgeben
  lcd.setCursor(6, 0);                     // Anfang auf Stelle 6, Zeile 1 setzen
     lcd.print("\337C");                   // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
  lcd.setCursor(9, 0);                     // Anfang auf Stelle 9, Zeile 1 setzen
     lcd.print("Unten Links");             // Text "Unten Links" ausgeben
lcd.setCursor(0,1);                        // Cursor auf Beginn der 2. Zeile
  lcd.print(sensors.getTempCByIndex(1));   // Temperatur ausgeben
  lcd.setCursor(6, 1);                     // Anfang auf Stelle 7, Zeile 2 setzen
     lcd.print("\337C");                   // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
  lcd.setCursor(9, 1);                     // Anfang auf Stelle 9, Zeile 2 setzen
     lcd.print("Unten Rechts");            // Text "Unten Rechts" ausgeben
lcd.setCursor(0, 2);                       // Anfang auf Stelle 0, Zeile 0 setzen
  lcd.print(t);                            // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(6, 2);                       // Anfang auf Stelle 9, Zeile 0 setzen
  lcd.print("\337C");                      // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
lcd.setCursor(9, 2);                       // Anfang auf Stelle 15, Zeile 0 setzen
  lcd.print("Oben Mitte");                 // Text "Oben Mitte" ausgeben
lcd.setCursor(0, 3);                       // Anfang auf Stelle 0, Zeile 1 setzen
  lcd.print(h);                            // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(6, 3);                       // Anfang auf Stelle 9, Zeile 1 setzen
  lcd.print("%");                          // % auf LCD ausgeben
lcd.setCursor(9, 3);                       // Anfang auf Stelle 15, Zeile 1 setzen
  lcd.print("");                           // Text "Oben Mitte" ausgeben
// *INDENT-ON*
tasterstatus=digitalRead(taster);
if (tasterstatus == HIGH)
{
digitalWrite(LEDrot, HIGH);
}
else
{
digitalWrite(LEDrot, LOW); 
}}

johann81:
Wenn ich das int ändere in const ändern gibt er mir diesen Fehler aus
'LEDrot' does not name a type

Das ist richtig. Stell das const VOR das int.
Damit sagst Du dem compiler, das das "int LEDrot" nicht mehr verändert wird.
So wie mein INDENT der IDE sagt, das es nicht verändern werden soll :slight_smile:

Schönes Thema.
Ich freu mich auf das Ergebnis.

[edit]
Oh, entschuldige, ich hab Deine Frage überlesen.

Das mit dem Bild ist so bisher schon ok, ich versuchs Schritt für Schritt zu erklären.

In Deinem Ausgangspost hast Du unten Deine blau hinterlegte Bildbeschreibung:

  • DS18B20-DHT22-LCD schaltplan_Steckplatine.jpg

Wenn Du jetzt mit der Maus daran gehst, verändert sich eigentlich der Zeiger und am untenRand im Browser erscheint:
https://forum.arduino.cc/index.php?action=dlattach;topic=693697.0;attach=371506

Jetzt klickst Du mit rechts - dann kommt ein Auswahlmenu und dort suchst Du nach "Link kopieren", "Link-Adresse kopieren" oder so ähnlich und klickst mit links drauf.
Unter dem Post auf der rechten Seite gibt es "quote" "quick edit" und "more". Wenn Du mit dem Mauszeiger auf more bleibst, öffnet sich ein Menu und da steht "modify" - Draufklicken und dann kannst Du im Editor Deinen Text noch nacheditieren.

Geh ans Ende mit dem Cursor und dann gibt es oben in der Leiste ein 4Eck - wenn Du mit der Maus ranfährst, steht da "Insert Image". Draufklicken und jetzt mit der rechten Maustaste in das Textfeld "einfügen" - OK und unten rechts auf save. Fertig.