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