Wasserstands Überwachung in Verbindung mit Temperaturüberwachung und IR Sender

Hallo
Mein neues Projekt soll wie im titel schon beschrieben eine Wasserstands Überwachung in Verbindung mit Temperatur Überwachung werden.
Der Plan sieht bis jetzt so aus das Der Wasserstand mit Ultraschallsensor überwacht wird und das sobald ein vorgegebener wert unterschritten wird das ein IR sender(KY-005 Infrarot Sender Diode ) eine Steckdose einschaltet an der ein Magnetventil angeschlossen ist die dann das Wasser wieder nachfüllt und eben automatisch wieder abschaltet wenn der gewünschte stand erreicht ist.
Außerdem soll die Temperatur Durch einen DS18B20 Überwacht werden und bei bedarf eben auch über eine Infrarot gesteuerte Steckdose eine Heizung an oder abschalten.
Wenn das alles läuft wollte ich gerne noch ne Echtzeituhr für den wöchentlichen Wasserwechsel einbauen wobei ca 20% des Wassers gewechselt werden, das soll dann auch wieder mit Ultraschall und IR Steckdosen gesteuert werden
Nun zu meinem Problem:
Einzeln Laufen die Programme bzw lassen sich kompilieren.
IR und Temperatur zusammen = keine Probleme
Ultraschall und Temperatur zusammen = keine Probleme
ABER
Ultraschall und IR will er nicht

Ich bekomme immer wieder die Meldung :

 Arduino: 1.8.1 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

libraries\NewPing\NewPing.cpp.o (symbol from plugin): In function `intFunc2':

(.text+0x0): multiple definition of `__vector_13'

libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions

collect2.exe: error: ld returned 1 exit status

Mehrere Bibliotheken wurden für "IRremote.h" gefunden
 Benutzt: C:\Users\Com\Documents\Arduino\libraries\IRremote
 Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\RobotIRremote
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Mega or Mega 2560.

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

Warum wird die Bibliothek nicht benutzt? Kann man das Problem lösen oder muss der Wasserstand anders ermittelt werden ? Ich such jetzt seit 2 Tagen nach ner Lösung und durchsuche das netz aber habe bis jetzt nichts brauchbares gefunden

Du hast anscheinend Libs mehrfach in Deiner Umgebung:

Mehrere Bibliotheken wurden für "IRremote.h" gefunden

Das musst Du bereinigen. Evtl. löst sich die doppelte Deklaration dadurch auf.
Schalte mal ausführliche Fehlermeldungen und Warnungen ein.

Gruß Tommy

Das wird ja noch verwirrender :frowning:
Ich hab jetzt erst die Bibliothek die nicht verwendet wird einmal aus dem Ordner raus gezogen, dann noch mal versucht aber klappt trotzdem noch nicht.
Also beide wieder rein und noch mal
hier die ausführliche Meldung ( Die ich leider etwas kürzen musste da es zu viele Zeichen für hier waren,ich hab jetzt das weggenommen wo noch keine Fehler auftauchen)

(.text+0x0): multiple definition of `__vector_13'

C:\Users\Com\AppData\Local\Temp\arduino_build_991355\libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions

collect2.exe: error: ld returned 1 exit status

Mehrere Bibliotheken wurden für "IRremote.h" gefunden
 Benutzt: C:\Users\Com\Documents\Arduino\libraries\IRremote
 Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\RobotIRremote
Bibliothek IRremote in Version 2.0.1 im Ordner: C:\Users\Com\Documents\Arduino\libraries\IRremote  wird verwendet
Bibliothek OneWire im Ordner: C:\Users\Com\Documents\Arduino\libraries\OneWire (legacy) wird verwendet
Bibliothek Arduino-Temperature-Control-Library-master in Version 3.7.7 im Ordner: C:\Users\Com\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master  wird verwendet
Bibliothek NewPing im Ordner: C:\Users\Com\Documents\Arduino\libraries\NewPing (legacy) wird verwendet
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Mega or Mega 2560.

Aber warum laufen die Sketche denn einzeln,nur sobald IR und Ultraschall zusammen arbeiten sollen stellt er sich an ? Das ist das was ich nicht verstehe

Solange Du mehrere IR-Libs hast, ist jede weitere Diskussion sinnlos.
Das heißt ja nicht, dass es dann funktionieren muss, nur dass es damit garantiert nicht funktioniert.

Gruß Tommy

nach dem ich die "RobotIRremote " gelöscht habe ,bekomme ich wieder folgende Fehlermeldung :

Zuvor kompilierte Datei wird verwendet: C:\Users\Com\AppData\Local\Temp\arduino_build_119134\core\core.a
Linking everything together...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections,--relax -mmcu=atmega2560  -o "C:\Users\Com\AppData\Local\Temp\arduino_build_119134/Temp_und_Ultraschall.ino.elf" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\sketch\Temp_und_Ultraschall.ino.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\IRremote.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\irPronto.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\irRecv.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\irSend.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Aiwa.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Denon.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Dish.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_JVC.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_LG.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Mitsubishi.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_NEC.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Panasonic.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_RC5_RC6.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Samsung.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Sanyo.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Sharp.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Sony.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Template.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\ir_Whynter.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\OneWire\OneWire.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\Arduino-Temperature-Control-Library-master\DallasTemperature.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\NewPing\NewPing.cpp.o" "C:\Users\Com\AppData\Local\Temp\arduino_build_119134/core\core.a" "-LC:\Users\Com\AppData\Local\Temp\arduino_build_119134" -lm
C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\NewPing\NewPing.cpp.o (symbol from plugin): In function `intFunc2':

(.text+0x0): multiple definition of `__vector_13'

C:\Users\Com\AppData\Local\Temp\arduino_build_119134\libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: Disabling relaxation: it will not work with multiple definitions

collect2.exe: error: ld returned 1 exit status

Bibliothek IRremote in Version 2.0.1 im Ordner: C:\Program Files (x86)\Arduino\libraries\IRremote  wird verwendet
Bibliothek OneWire im Ordner: C:\Users\Com\Documents\Arduino\libraries\OneWire (legacy) wird verwendet
Bibliothek Arduino-Temperature-Control-Library-master in Version 3.7.7 im Ordner: C:\Users\Com\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master  wird verwendet
Bibliothek NewPing im Ordner: C:\Users\Com\Documents\Arduino\libraries\NewPing (legacy) wird verwendet
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Mega or Mega 2560.

Sorry aber Ich bin echt noch Anfänger was das Thema Programmieren angeht und ich verstehe viele Sachen bzw. Programm ausdrücke und zusammenhänge noch nicht so wirklich . Bin aber alle infos die mir weiterhelfen am aufsaugen :wink:

Du solltest dein Sytem aufräumen und deine funktionierenden Programmteile einzeln nochmals testen.

Alle Libraries die du nicht brauchst rauslöschen und wichtig, danach Neustart der IDE.

Sicher ist, wenn alles sauber ist, funktioniert es auch.

Edi:
Zeig uns doch mal deinen Sketch, evtl. ist da ja auch noch ein Fehler drin.

So System hab ich aufgeräumt, bzw nen kompletten Factory Reset gemacht :wink:
Jetzt mal alles neu einrichten und dann mal sehn ob es dann besser läuft
Den Sketch suche ich morgen wieder raus :wink:

Nach dem ich nun meinen ganzen Laptop auf Werkseinstellungen zurückgesetzt habe , jetzt wieder mit dem besser funktionierenden Windows 7 anstatt 10 Arbeite.
Habe ich soweit alles wieder eingerichtet und den Sketch noch einmal probiert.
Das Ergebnis war ähnlich wie vorher. Die Sketche lassen sich kompilieren solange Ultraschall und IR nicht zusammen in einem Sketch sind
Ich habe jetzt zwar nur erstmal die 3 Sketche (Ultraschall,Temperatur Messung und Infrarot) zusammengefügt ohne die IR Steuerung weiter zu belegen (also was sie nun genau wann machen soll ) weil ich erstmal sehen wollte wie ich die Sketche am besten verbinden kann, ich habe die Codes von der Fernbedienung die nachher benutzt werden soll ja auch noch nicht ausgelesen und wollte das eigentlich erst später machen wen ich einen funktionierenden gesamt Sketch habe hier erstmal der Sketch:

#include <IRremote.h>

IRsend irsend;


#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 10 /* Digitalport Pin 10 definieren */
#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
OneWire ourWire(ONE_WIRE_BUS); /* Ini oneWire instance */

DallasTemperature sensors(&ourWire);/* Dallas Temperature Library für Nutzung der oneWire Library vorbereiten */

void setup()
{

Serial.begin(9600);

delay(1000);

sensors.begin();/* Inizialisieren der Dallas Temperature library */



}



void loop()
{
delay(1000);  // Wait 500ms between pings (about 2 pings/sec). 29ms should be the shortest delay between pings.
  unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
  Serial.print("Wasserstand: ");
  Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance and print result (0 = outside set distance range, no ping echo)
  Serial.println("cm");
Serial.println();

sensors.requestTemperatures(); // Temp abfragen

Serial.print(sensors.getTempCByIndex(0) );
Serial.print(" C  ");
Serial.println();

}

void adresseAusgeben(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  Serial.print("Suche 1-Wire-Devices...\n\r");// "\n\r" is NewLine 
  while(ourWire.search(addr)) {
    Serial.print("\n\r\n\r1-Wire-Device gefunden mit Adresse:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n\r");
      return;
    }
  }
  Serial.println();
  ourWire.reset_search();
  return;

  delay (3000);
}

Fehlermeldung passt hier leider nicht mehr rein ,also werde ich da gleich noch einen post machen.

Allerdings habe ich noch folgende Sachen die mir jetzt schon wieder das nächste Problem aufzeigen
wo ich noch nicht genau weiß wie ich das machen soll.
Und zwar … Ich hatte vor die Steuerung mit

if (Temperatur ><= xy)
Soll die ir xyz senden
else
usw

So das Problem dabei wäre dann Temp. ist pin 10 , aber wo nem ich den Ultraschall wert her???
Bzw welcher bestimmt den wert?
Für Konstruktive Kritik wäre ich im Moment sehr dankbar :slight_smile:

Musste sie leider trotzdem wieder kürzen wegen zu viele zeichen, hoffe aber das hier reicht sonst muss ich eben die andere hälfte auch noch einfügen

Compiling libraries...
Compiling library "IRremote"
"C:\Users\COM\Desktop\arduino-1.8.2\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10802 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Users\COM\Desktop\arduino-1.8.2\hardware\arduino\avr\cores\arduino" "-IC:\Users\COM\Desktop\arduino-1.8.2\hardware\arduino\avr\variants\standard" "-IC:\Users\COM\Documents\Arduino\libraries\IRremote" "-IC:\Users\COM\Documents\Arduino\libraries\OneWire-master" "-IC:\Users\COM\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master" "-IC:\Users\COM\Documents\Arduino\libraries\NewPing" "C:\Users\COM\Documents\Arduino\libraries\IRremote\IRremote.cpp" -o "C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\IRremote\IRremote.cpp.o"
Compiling library "OneWire-master"
"C:\Users\COM\Desktop\arduino-1.8.2\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10802 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Users\COM\Desktop\arduino-1.8.2\hardware\arduino\avr\cores\arduino" "-IC:\Users\COM\Desktop\arduino-1.8.2\hardware\arduino\avr\variants\standard" "-IC:\Users\COM\Documents\Arduino\libraries\IRremote" "-IC:\Users\COM\Documents\Arduino\libraries\OneWire-master" "-IC:\Users\COM\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master" "-IC:\Users\COM\Documents\Arduino\libraries\NewPing" "C:\Users\COM\Documents\Arduino\libraries\OneWire-master\OneWire.cpp" -o "C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\OneWire-master\OneWire.cpp.o"
Compiling library "Arduino-Temperature-Control-Library-master"
"C:\Users\COM\Desktop\arduino-1.8.2\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10802 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Users\COM\Desktop\arduino-1.8.2\hardware\arduino\avr\cores\arduino" "-IC:\Users\COM\Desktop\arduino-1.8.2\hardware\arduino\avr\variants\standard" "-IC:\Users\COM\Documents\Arduino\libraries\IRremote" "-IC:\Users\COM\Documents\Arduino\libraries\OneWire-master" "-IC:\Users\COM\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master" "-IC:\Users\COM\Documents\Arduino\libraries\NewPing" "C:\Users\COM\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master\DallasTemperature.cpp" -o "C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\Arduino-Temperature-Control-Library-master\DallasTemperature.cpp.o"
Compiling library "NewPing"
"C:\Users\COM\Desktop\arduino-1.8.2\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10802 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR   "-IC:\Users\COM\Desktop\arduino-1.8.2\hardware\arduino\avr\cores\arduino" "-IC:\Users\COM\Desktop\arduino-1.8.2\hardware\arduino\avr\variants\standard" "-IC:\Users\COM\Documents\Arduino\libraries\IRremote" "-IC:\Users\COM\Documents\Arduino\libraries\OneWire-master" "-IC:\Users\COM\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master" "-IC:\Users\COM\Documents\Arduino\libraries\NewPing" "C:\Users\COM\Documents\Arduino\libraries\NewPing\NewPing.cpp" -o "C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\NewPing\NewPing.cpp.o"
Compiling core...
Using precompiled core
Linking everything together...
"C:\Users\COM\Desktop\arduino-1.8.2\hardware\tools\avr/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p  -o "C:\Users\COM\AppData\Local\Temp\arduino_build_537271/sketch_apr25b.ino.elf" "C:\Users\COM\AppData\Local\Temp\arduino_build_537271\sketch\sketch_apr25b.ino.cpp.o" "C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\IRremote\IRremote.cpp.o" "C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\OneWire-master\OneWire.cpp.o" "C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\Arduino-Temperature-Control-Library-master\DallasTemperature.cpp.o" "C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\NewPing\NewPing.cpp.o" "C:\Users\COM\AppData\Local\Temp\arduino_build_537271/..\arduino_cache_540723\core\core_arduino_avr_uno_95bb5bfbdbc9421050ed2bf69894a4ac.a" "-LC:\Users\COM\AppData\Local\Temp\arduino_build_537271" -lm
C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\NewPing\NewPing.cpp.o (symbol from plugin): In function `intFunc2':

(.text+0x0): multiple definition of `__vector_7'

C:\Users\COM\AppData\Local\Temp\arduino_build_537271\libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

Bibliothek IRremote im Ordner: C:\Users\COM\Documents\Arduino\libraries\IRremote (legacy) wird verwendet
Bibliothek OneWire-master in Version 2.3.3 im Ordner: C:\Users\COM\Documents\Arduino\libraries\OneWire-master  wird verwendet
Bibliothek Arduino-Temperature-Control-Library-master in Version 3.7.7 im Ordner: C:\Users\COM\Documents\Arduino\libraries\Arduino-Temperature-Control-Library-master  wird verwendet
Bibliothek NewPing im Ordner: C:\Users\COM\Documents\Arduino\libraries\NewPing (legacy) wird verwendet
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.

OK, es ist tatsächlich ein Konflikt zwischen den Libs IRRemote und NewPing.

Du kannst allerdings die Lib NewPing leicht durch ein paar Zeilen ersetzen.

Z.B. diese (stammt aus dem Web) hier:

void us_Messen() {

  // Der trigger wird mit einem High-Impuls von 2 oder mehr Mikrosekunden ausgelöst.
  digitalWrite(TRIGGER_PIN, LOW);
  delay(2);
  digitalWrite(TRIGGER_PIN, HIGH);
  delay(10);
  digitalWrite(TRIGGER_PIN, LOW);

  // dessen dauer ist die Zeit (in Mikrosekunden) gemessen an echo
  dauer = pulseIn(ECHO_PIN, HIGH);

  // Umrechnung in cm (Schallgeschwindigkeit beträgt 29,1 Mikrosekunden pro Zentimeter / 2 (nur eine Strecke)
  entfernung = (dauer / 2) / 29.1;
}

Die Variablen musst du noch definieren, sowie die verwendeten Pins.
Der Sketch lässt sich dann fehlerfrei kompilieren.

Deine ganzen anderen Fehlermeldungen kann ich aktuell nicht erklären.

Ja super, danke, jetzt nimmt er alles und ich hab das Problem mit dem " if " Bezeichnungen später gelöst.
Allerdings hätte ich da noch eine frage :
im Moment ist es so das der komplette Sketch zwar genommen wird und auch Läuft nach dem ich ihn noch etwas verändert habe ,nur das der Ultraschall jetzt leider nur noch einmal misst , also die Abstands zahlen nicht verändern.
Ich hab schon öfter mal was gelesen das man noch Unterprogramme erstellen kann , jetzt war mein Gedanke die Temperatur Messung und die Ultraschall Messung quasi in 2 Programme umwandelt und daraus dann eben die werte für die IR Fernbedienung zieht .
Wie gesagt hab ich schon öfter etwas darüber gelesen aber irgendwie bekomme ich das nicht hin das ,das bei mir angenommen wird. auf was muss ich da achten ? hat evtl jemand einen einfachen beispiel Sketch den auch ein Anfänger ohne größere Probleme überschauen kann so das ich das so vielleicht begreife wie das funktioniert ?
Oder hat jemand eine bessere Idee wie ich das hinbekommen könnte ?

Mit Unterprogrammen meinst du bestimmt "Funktionen".
Das ist nicht kompliziert. Zeig doch mal deinen Sketch, wie du ihn bis jetzt hast und was du machen willst.

Das mit dem Ultraschall hab ich gelöst bekommen ,da war das Forum zu langsam 8)
Allerdings musste ich zu meiner Empörung feststellen das die von mir erworbenen Funk Steckdosen gar nicht über IR angesteuert werden sondern über 433,92 MHZ :angry:
Tipp : beim Kauf im Baumarkt mal die Herstellerangaben auf der Packung lesen :sweat_smile:
Na ja was solls, hab mir dann die 433mhz Sender und Empfänger aus der bucht bestellt und den ganzen Sketch (an dem ich ca 2 Wochen gesessen habe :’( ) in ein paar min geändert. die sender sind mittlerweile auch schon da, funktioniert auch alles soweit bis auf 2 Sachen
1 mal
ich hab 2 Sets mit Funk Steckdosen gekauft von verschiedenen Herstellern. die eine Fernbedienung ließt der Empfänger ohne Probleme aus, bei der 2ten kommt gar nix . Nach Google`n hab ich nun raus gefunden das ich wohl eine
Zitat:“billig Version von eher schlechter Qualität” erworben habe HIER
Ich habe zwar schon alternativen gefunden, aber wenn ich schon mal hier bin frage ch doch gleich mal so in die Runde bei den Profis:
Wer kann mir eine Kaufempfehlung geben ?
so und das 2te Problem ist das soweit zwar alles klappt an der Steuerung, nur das wenn die if abfrage kommt das die Steckdosen einschalten sollen dies auch machen aber dann gleich wieder ausgeschaltet werdenund das dann im Sekundentakt so weitergeht (ein ,aus,ein,aus… usw). Ich möchte aber das die Steckdose eingeschaltet bleibt bis der gewünschte Wasserstand erreicht ist.
Ich hab hier mal den if abschnitt mit den Abstand aus meinem Test sketch

 { if (cm > 25 )
{
  mySwitch.send(7721996, 24); //Ein 1B
 Serial.print ("strom ein");
   
delay (1000);} {
 



if (cm < 8 ) ;
  mySwitch.send(7721987, 24); //Aus 1B
  Serial.print("Strom aus");
  delay (250);  


Serial.print(sensors.getTempCByIndex(0) );
Serial.print(" C  ");
Serial.println();

Serial.print (cm);
 Serial.println ("cm");
 delay (1000) ;

immer wenn ich den else befehl dauntersetzen will sagt das programm :

exit status 1
‘else’ without a previous ‘if’

was mach ich da falsch ?

Die Klammern

Und dass du nicht den ganzen Code postest

Wenn wir dir helfen sollen, musst du schon den kompletten Sketch posten.

Was die Funksteckdosen betrifft, funktionieren die Brennenstuhl RCS1000 sehr gut. Die kann ich empfehlen.
Bei den Funkempfängern verwende ich diese hier: 433 MHz Empfänger

bei der Kaufberatung meinte ich den Sender und Empfänger für den Arduino ,nicht die Steckdosen :wink:
Das ist im Moment zwar nicht so wichtig, aber ich möchte ja nicht nur dieses eine Projekt machen, und es wäre dann ja gut wenn der Empfänger alle 433mhz Signale erkennt

Hier der ganze Sketch:

#include <RCSwitch.h>
#include <Wire.h> 
RCSwitch mySwitch = RCSwitch(); // Transmitter is connected to Arduino Pin 9 
 
#include <LiquidCrystal_I2C.h>

#include <OneWire.h>
#include <DallasTemperature.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 
#define ONE_WIRE_BUS 10 /* Digitalport Pin 10 definieren */
 
long abstand;
long cm;
 

OneWire ourWire(ONE_WIRE_BUS); /* Ini oneWire instance */

DallasTemperature sensors(&ourWire);/* Dallas Temperature Library für Nutzung der oneWire Library vorbereiten */
void setup() {
  Serial.begin(9600);
 lcd.begin(16,2); 
delay(1000);
 mySwitch.enableTransmit(9);
sensors.begin();/* Inizialisieren der Dallas Temperature library */
 {
    lcd.backlight();
    delay(250);
    lcd.noBacklight();
    delay(250);
  }
  lcd.backlight(); // finish with backlight on  

//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0  
  lcd.setCursor(0,0); //Start at character 4 on line 0
  lcd.print("Hello, world!");
  delay(1000);
  lcd.setCursor(0,1);
  lcd.print("HI!YourDuino.com");
  delay(1000);  

// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
  lcd.clear();
  lcd.setCursor(0,0); //Start at character 0 on line 0
  lcd.print("Use Serial Mon");
  lcd.setCursor(0,1);
  lcd.print("Type to display");  

}

void loop() {

  {
     lcd.clear();
  lcd.setCursor(0,0); //Start at character 0 on line 0
  lcd.print( sensors.getTempCByIndex(0));
   lcd.setCursor(5,0);
   lcd.print("C ");
  lcd.setCursor(0,1);
  lcd.print(cm);  
   lcd.setCursor(4,1);
   lcd.print("Wasserstand");
   delay(500);
  }
  {
    // when characters arrive over the serial port...
    if (Serial.available()) {
      // wait a bit for the entire message to arrive
      delay(100);
      // clear the screen
      lcd.clear();
      // read all the available characters
      while (Serial.available() > 0) {
        // display each character to the LCD
        lcd.write(Serial.read());
      }
    }
  }
{ pinMode (12 ,OUTPUT ) ;
  pinMode (11 ,INPUT);

  digitalWrite ( 12 , LOW ) ;
  delayMicroseconds (2) ;
  digitalWrite (12 , HIGH ) ;
  delayMicroseconds (5) ;
  
 abstand= pulseIn (11,HIGH ) ;
 cm = (abstand / 2) / 29.1; }

 
 { if (cm > 25 )
{
  mySwitch.send(7721996, 24); //Ein 1B
 Serial.print ("strom ein");
   
delay (1000);} {
 



if (cm < 8 ) ;
  mySwitch.send(7721987, 24); //Aus 1B
  Serial.print("Strom aus");
  delay (250);  


Serial.print(sensors.getTempCByIndex(0) );
Serial.print(" C  ");
Serial.println();

Serial.print (cm);
 Serial.println ("cm");
 delay (1000) ;

sensors.requestTemperatures(); // Temp abfragen



}

 {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  while(ourWire.search(addr)) {
    Serial.print("\n\r\n\r1-Wire-Device gefunden mit Adresse:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC is not valid!\n\r");
      return;
    }
  }
  Serial.println();
  ourWire.reset_search();
  return;

  delay (1000);
}




}    }

Jan2381:
bei der Kaufberatung meinte ich den Sender und Empfänger für den Arduino ,nicht die Steckdosen :wink:
Das ist im Moment zwar nicht so wichtig, aber ich möchte ja nicht nur dieses eine Projekt machen, und es wäre dann ja gut wenn der Empfänger alle 433mhz Signale erkennt

Der Sender ist für die Projekte “Funksteckdosen” geeignet. Der Empfänger ist von sehr schlechter Qualität und nicht zu empfehlen.

Da es sehr viel unterschiedliche Protokolle gibt, liegt es nicht am Empfänger, wenn du nicht alle Signale empfangen kannst.

Den Sketch sehe ich mir gleich nochmal an.

Edit:

Du hast sehr viele überflüssige Klammern “{ }” in deinem Sketch, das solltest du überarbeiten.

Und deine if-Abfrage ist besser so:

  if (cm > 25 )
    {
     // deine Anweisungen
    }

    else if (cm < 8 ) 
    {
    // deine Anweisungen
    }

Ein weiterer Punkt sind deine “delays”, die solltest du durch die Funktion “millis()” ersetzen.

Sieh dir dazu “BlinkWithoutDelay” in den Beispielen der IDE an.

Durch delay wird dein Controller blockiert und führt in dieser Zeit keine weiteren Anweisungen durch.

Ok, danke jetzt funktioniert es.
danke für die hinweise, werde ich mir mal anschauen.
Machen die vielen Klammern einen technischen oder einfach nur einen Optischen nachteil in dem Sketch?
Soweit ich gelesen habe mach man damit ja die Programm abschnitte , deshalb dachte ich mir das ich so quasi das mit den " Unterprogrammen" umgehe ( was ich ja oben schon mal aufgeführt hatte) da ich teilweise ein ganz schönes Daten Chaos hatte was die Auslesungs werte anging.

Anstatt mit 433mhz nehme ich persönlich lieber Wifi auf ESP8266 Basis. Kommunikation per udp.

ElEspanol:
Anstatt mit 433mhz nehme ich persönlich lieber Wifi auf ESP8266 Basis. Kommunikation per udp.

Dann beschreibe dem TO doch auch, wie du mit WiFi direkt die einfachen Funksteckdosen (433 MHz) schaltest.