Problem mit Code für RCSwitch und Tempauslesen

Hallo,
ich habe mir die aktuelle library zum schalten von FUnksteckdosen besorgt und es funktioniert einwandfrei mit dem Testcode.
Jetzt möchte ich das ganze über die Temperatur steuern, leider schaltet sie nicht. Und den Fehler finde ich einfach nciht.
Die Temperatur wird korrekt gelesen, aber wenn ich den Fühler erwärme sollte ja aigentlich die FUnkdose abgeschaltet werden. Klappt halt nicht.

Hier mein Code:

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch(0, 340); //HX2262: 10 ist der Pin am Arduino und 340 ist 1/8 Bitlänge in Mikrosekunden. Das variiert je nach Fernbedienung zwischen 300 und 400


//DALLAS DS18B20 Temperature
#include <WProgram.h>
#include <Wire.h>

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS A3

OneWire oneWire(ONE_WIRE_BUS);
float TempLED1;
float TempLED2;
float TempWasser;
float TempLuft;
DallasTemperature sensors(&oneWire);

#include "Tlc5940.h"
int i=0;
int UV=7;
int luft1=10;
int luft2=8;
int moon=13;
void setup()
{
    sensors.begin();
  Tlc.init();
  Serial.begin(9600); 
  pinMode(UV, OUTPUT);
  pinMode(moon, OUTPUT);
  pinMode(luft1, OUTPUT);
  pinMode(luft2, OUTPUT);
  
}

void loop()
{
  getTemp();
    digitalWrite(moon, HIGH);
    digitalWrite(luft1, HIGH);
    digitalWrite(luft2, HIGH);
    analogWrite(UV,0);  //UV
    //li  KK1  |  KK2  |  KK3  |  KK4  |  KK5    re//
     Tlc.clear();
     Tlc.set(0, 4095); // blau KK2
     Tlc.set(1, 0); // blau 10W
     Tlc.set(2, 4095);  // rot links
     Tlc.set(3, 4095);  // LEER
     Tlc.set(4, 0);  // weiß 10W
     Tlc.set(5, 4095);  // blau KK1
     Tlc.set(6, 4095);  // weiß KK3
     Tlc.set(7, 4095);  // weiß KK4
     Tlc.set(8, 4095);  //grün rechts
     Tlc.set(9, 4095);  // weiß KK2
     Tlc.set(10, 4095);  // weiß KK5
     Tlc.set(11, 4095);  // blau KK 5
     Tlc.set(12, 4095);  // rot rechts
     Tlc.set(13, 4095);  // grün links
     Tlc.set(14, 4095); // blau KK 4
     Tlc.set(15, 4095);  //LEER
    Tlc.update();
Serial.println(TempLED1, DEC);
delay(1000);
if (TempLED1>25.5) {
   mySwitch.switchOff("00111", 4);
   delay(1000);
   }
if (TempLED1<24.5) {
   mySwitch.switchOn("00111", 4);
   delay(1000);
   }

}
void getTemp() {
  sensors.requestTemperatures();
  TempLED1 = sensors.getTempCByIndex(0);

}

läss mir keine ruhe. Habe es noch mal getestet. Hier der Testcode für den RCswitch. Ich nutze übrigens ein RF434 Modul von Watterott.
Wie gesagt, mit diesem Code funzt es:

#include <RCSwitch.h>
//RCSwitch mySwitch = RCSwitch(10);  // SC5262: Sender is connected to Pin #10 am Arduino
RCSwitch mySwitch = RCSwitch(0, 340); //HX2262: 10 ist der Pin am Arduino und 340 ist 1/8 Bitlänge in Mikrosekunden. Das variiert je nach Fernbedienung zwischen 300 und 400

void setup() {
}

void loop() {
  // Steckdose mit 10 DIP Schaltern (HX2262)
  // Beispiel: 
  // Systemcode (Die ersten 5 DIP Schalter sind auf off, on, on, on, on)
  // Steckdose Nummer 1 (Die letzten 5 DIP Schalter sind auf on, off, off, off, off)
  mySwitch.switchOn("00111", 4);
  delay(2000);
  mySwitch.switchOff("00111", 4);
  delay(2000);  
  
  
  // Steckdose mit zwei Drehschaltern mit je 4 Stellungen (SC5262)
  // Systemcode (Erster Schalter ist auf 4, D oder IV)
  // Steckdose Nummer 2 (Zweiter Schalter auf 2, B oder II)
  
  /* mySwitch.switchOn(4, 2);
  delay(2000);
  mySwitch.switchOff(4, 2);
  delay(2000);
  */
}

Jetzt habe ich meinen code noch mal erweitert um eine printfunktion um sicher zustellen, dass die if-klausel erfüllt wird. auch das passt alles:

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch(); //HX2262: 10 ist der Pin am Arduino und 340 ist 1/8 Bitlänge in Mikrosekunden. Das variiert je nach Fernbedienung zwischen 300 und 400


//DALLAS DS18B20 Temperature
#include <WProgram.h>
#include <Wire.h>

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS A3

OneWire oneWire(ONE_WIRE_BUS);
float TempLED1;
float TempLED2;
float TempWasser;
float TempLuft;
DallasTemperature sensors(&oneWire);

#include "Tlc5940.h"
int i=0;
int UV=7;
int luft1=10;
int luft2=8;
int moon=13;
void setup()
{
    sensors.begin();
  Tlc.init();
  Serial.begin(9600); 
  pinMode(UV, OUTPUT);
  pinMode(moon, OUTPUT);
  pinMode(luft1, OUTPUT);
  pinMode(luft2, OUTPUT);
    mySwitch.enableTransmit(0);
}

void loop()
{
  getTemp();
    digitalWrite(moon, HIGH);
    digitalWrite(luft1, HIGH);
    digitalWrite(luft2, HIGH);
    analogWrite(UV,255);  //UV
    //li  KK1  |  KK2  |  KK3  |  KK4  |  KK5    re//
     Tlc.clear();
     Tlc.set(0, 0); // blau KK2
     Tlc.set(1, 0); // blau 10W
     Tlc.set(2, 0);  // rot links
     Tlc.set(3, 0);  // LEER
     Tlc.set(4, 0);  // weiß 10W
     Tlc.set(5, 0);  // blau KK1
     Tlc.set(6, 0);  // weiß KK3
     Tlc.set(7, 0);  // weiß KK4
     Tlc.set(8, 0);  //grün rechts
     Tlc.set(9, 0);  // weiß KK2
     Tlc.set(10, 0);  // weiß KK5
     Tlc.set(11, 0);  // blau KK 5
     Tlc.set(12, 0);  // rot rechts
     Tlc.set(13, 0);  // grün links
     Tlc.set(14, 0); // blau KK 4
     Tlc.set(15, 0);  //LEER
    Tlc.update();
Serial.println(TempLED1, DEC);
delay(1000);
if (TempLED1>26) {
   mySwitch.switchOff("00111", 4);
   Serial.println(">26");
   delay(1000);
   }
if (TempLED1<24) {
   mySwitch.switchOn("00111", 4);
      Serial.println("<24");
   delay(1000);
   }

}
void getTemp() {
  sensors.requestTemperatures();
  TempLED1 = sensors.getTempCByIndex(0);
  TempLED2 = sensors.getTempCByIndex(1);
  TempWasser = sensors.getTempCByIndex(2);
  TempLuft = sensors.getTempCByIndex(3);
}

außerdem habe ich bei google noch ein update gefunden, wo der PIN in der void setup definiert wird, auch das hat nix gebracht:

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {

  // Transmitter is connected to Arduino Pin 0  
  mySwitch.enableTransmit(0);
  
}

void loop() {

  mySwitch.switchOn("00111", 4);

  // Wait a second
  delay(1000);
  
  // Switch off
  mySwitch.switchOff("00111", 4);
  
  // Wait another second
  delay(1000);
  
}

hoffe irgendwer hat mal nen hilfreichen Tipp für mich....

Ich habe versucht zu verstehen, welcher Programmcode funktioniert und welcher nicht.
Das ist mir nicht gelungen.
Erklär doch bitte nochmal, bei welchem Programm was genau nicht funktioniert.

currymuetze:
Funktioniert:

#include <RCSwitch.h>

//RCSwitch mySwitch = RCSwitch(10);  // SC5262: Sender is connected to Pin #10 am Arduino
RCSwitch mySwitch = RCSwitch(0, 340); //HX2262: 10 ist der Pin am Arduino und 340 ist 1/8 Bitlänge in Mikrosekunden. Das variiert je nach Fernbedienung zwischen 300 und 400

void setup() {
}

void loop() {
  // Steckdose mit 10 DIP Schaltern (HX2262)
  // Beispiel:
  // Systemcode (Die ersten 5 DIP Schalter sind auf off, on, on, on, on)
  // Steckdose Nummer 1 (Die letzten 5 DIP Schalter sind auf on, off, off, off, off)
  mySwitch.switchOn("00111", 4);
  delay(2000);
  mySwitch.switchOff("00111", 4);
  delay(2000); 
 
 
  // Steckdose mit zwei Drehschaltern mit je 4 Stellungen (SC5262)
  // Systemcode (Erster Schalter ist auf 4, D oder IV)
  // Steckdose Nummer 2 (Zweiter Schalter auf 2, B oder II)
 
  /* mySwitch.switchOn(4, 2);
  delay(2000);
  mySwitch.switchOff(4, 2);
  delay(2000);
  */
}




Funktioniert nicht:


#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch(); //HX2262: 10 ist der Pin am Arduino und 340 ist 1/8 Bitlänge in Mikrosekunden. Das variiert je nach Fernbedienung zwischen 300 und 400

//DALLAS DS18B20 Temperature
#include <WProgram.h>
#include <Wire.h>

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS A3

OneWire oneWire(ONE_WIRE_BUS);
float TempLED1;
float TempLED2;
float TempWasser;
float TempLuft;
DallasTemperature sensors(&oneWire);

#include "Tlc5940.h"
int i=0;
int UV=7;
int luft1=10;
int luft2=8;
int moon=13;
void setup()
{
    sensors.begin();
  Tlc.init();
  Serial.begin(9600);
  pinMode(UV, OUTPUT);
  pinMode(moon, OUTPUT);
  pinMode(luft1, OUTPUT);
  pinMode(luft2, OUTPUT);
    mySwitch.enableTransmit(0);
}

void loop()
{
  getTemp();
    digitalWrite(moon, HIGH);
    digitalWrite(luft1, HIGH);
    digitalWrite(luft2, HIGH);
    analogWrite(UV,255);  //UV
    //li  KK1  |  KK2  |  KK3  |  KK4  |  KK5    re//
     Tlc.clear();
     Tlc.set(0, 0); // blau KK2
     Tlc.set(1, 0); // blau 10W
     Tlc.set(2, 0);  // rot links
     Tlc.set(3, 0);  // LEER
     Tlc.set(4, 0);  // weiß 10W
     Tlc.set(5, 0);  // blau KK1
     Tlc.set(6, 0);  // weiß KK3
     Tlc.set(7, 0);  // weiß KK4
     Tlc.set(8, 0);  //grün rechts
     Tlc.set(9, 0);  // weiß KK2
     Tlc.set(10, 0);  // weiß KK5
     Tlc.set(11, 0);  // blau KK 5
     Tlc.set(12, 0);  // rot rechts
     Tlc.set(13, 0);  // grün links
     Tlc.set(14, 0); // blau KK 4
     Tlc.set(15, 0);  //LEER
    Tlc.update();
Serial.println(TempLED1, DEC);
delay(1000);
if (TempLED1>26) {
   mySwitch.switchOff("00111", 4);
   Serial.println(">26");
   delay(1000);
   }
if (TempLED1<24) {
   mySwitch.switchOn("00111", 4);
      Serial.println("<24");
   delay(1000);
   }

}
void getTemp() {
  sensors.requestTemperatures();
  TempLED1 = sensors.getTempCByIndex(0);
  TempLED2 = sensors.getTempCByIndex(1);
  TempWasser = sensors.getTempCByIndex(2);
  TempLuft = sensors.getTempCByIndex(3);
}

noch etwas das komisch ist:
Solange der FUnksender am Arduino angesteckt ist, kann ich meine FUnkfernbedienung, die ich zusätzlich im Wohnzimmer nutze, die allerdings auf eine andere Frequenz eingestellt ist, nicht nutzen.
Irgendwie komisch alles ..... :~ :~ :~

hallo,
also fehler gefunden: die baudrate vom serial.print. einfach deaktiviert, schon gings.
Falls mir noch jemand den zusammenhang erklären kann, wäre super.

Gruß

Hab zwar selber keine Ahnung aber vielleicht ist die Seriel-Ausgabe zu Zeitaufwendig und stört Zeitkritische Abläufe in deinem Programm.
Ich glaube ich hatte das auch mal.
Kannst ja auch mal versuchen die Baudrate zu erhöhen obs dann auch noch geht.