Hallo liebe Arduino gemeinde.
Kurz zu meinem Problem. Ich habe folgendes Projekt zum laufen bekommen (Danke an die Super Anleitung)
http://forum.arduino.cc/index.php?topic=337596.0
Nun möchte ich aber gerne noch dosen mit DIP via eines Funkschalter schalten.
Das auslesen hat auch super funktioniert und ich habe folgende beiden cods erhalten:
Received 904677753 / 32bit Protocol: 2
Received 971786617 / 32bit Protocol: 2
Kann mir einer einen Tipp geben wie die Information in den folgenden Code einbinden kann.
#include <IRremote.h>
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
irrecv.enableIRIn();
//Sender ist mit Pin 8 verbunden
mySwitch.enableTransmit(8);
}
void loop() {
if (irrecv.decode(&results)) {
//Hier müssen Sie Ihre Einstellungen für das Wohnzimmer vornehmen
switch (results.value) {
case 0xFF28D7: //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose1An");
mySwitch.switchOn("10000", "10000");
break;
}
switch (results.value) {
case 0xFFA857: //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose1Aus");
mySwitch.switchOff("10000", "10000");
break;
}
//Hier müssen Sie Ihre Einstellungen für das Schlafzimmer vornehmen
switch (results.value) {
case 0xFF22DD: //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose2An");
mySwitch.switchOn("01000", "01000");
break;
}
switch (results.value) {
case 0xFFEA15: //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose2Aus");
mySwitch.switchOff("01000", "01000");
break;
}
irrecv.resume();
}
}
Der 433 mhz Empfänger ist bei mir an ( // Receiver on inerrupt 0 => that is pin #2)
Es würde mich sehr freuen wen einer erbarmen mit mir hat und mir ein paar hilfreiche Tipps geben kann.
hi,
und willkommen.
probier doch mal, die beiden werte, die Du hast, statt zweier werte im fertigen code einzugeben.
also 904677753 statt 0xFF28D7 und
971786617 statt 0xFFA857.
was passiert?
gruß stefan
PS.: Deine zahlen sind dezimal, die mit 0x sind hexadezimal, aber das ist egal.
Hallo danke für die schnelle Antwort.
Die Idee hatte ich auch schon aber leider keine Reaktion der Steckdose.
Müsste ich nicht in dem Code noch den pin des 433mhz Empfängers angeben ? :o
Ändere bitte die Überschrift (erster Post) in einen Namen der deinem Problem entspricht.
Da kann man sich mehr drunter vorstellen.
Du benötigst noch die Deklaration dieser beiden Infos im Setup:
// Optional set pulse length.
mySwitch.setPulseLength(xxx);
// Optional set protocol (default is 1, will work for most outlets)
mySwitch.setProtocol(2);
Da du aber nur 433 MHz senden möchtest, brauchst du dies nicht:
mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
Und wenn du Dezimal-Code nimmst, brauchst du noch die Bit-Länge.
Beispiel:
mySwitch.send(5393, 24);
Ach und deine "Swicht/Case"-Abfrage kannst du so abändern:
switch (results.value) {
case 0xFF28D7: //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose1An");
mySwitch.send(654321, 24);
break;
case 0xFFA857: //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose1Aus");
mySwitch.send(123456, 24);
break;
case 0xFFA857:
usw.....
}
natürlich mit deinen Daten.
Erst ein mal vielen dank für die schnelle Antwort.
switch (results.value) {
case 971786617, 32 : //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println(Steckdose1An");
mySwitch.switchOn("10000", "10000");
break;
}
Ist der Code auch sor um möglich ?
da "971786617, 32" mein lichtschalter ist und "mySwitch.switchOn("10000", "10000")" meine steckdose ist.
ich mächte die dose via schalter oder logitech harmony schalten.
da "971786617, 32" mein lichtschalter ist
Nein. In results.value kann höchstens 971786617 drin stehen,
Also muss es auch
case 971786617: // Lichtschalter
heissen.
#include <IRremote.h>
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
#define irPin 11
IRrecv irrecv(irPin);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
//Sender ist mit Pin 8 verbunden
mySwitch.enableTransmit(8);
mySwitch.setProtocol(2);
mySwitch.setPulseLength(xxx);
}
void loop() {
if (irrecv.decode(&results)) {
//Hier müssen Sie Ihre Einstellungen für das Wohnzimmer vornehmen
switch (results.value) {
case 0xFF28D7: //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose1An");
mySwitch.switchOn("10000", "10000");
break;
}
switch (results.value) {
case 0xFFA857: //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose1Aus");
mySwitch.switchOff("10000", "10000");
break;
}
//Hier müssen Sie Ihre Einstellungen für das Schlafzimmer vornehmen
switch (results.value) {
case 904677753: //er müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose2An");
mySwitch.switchOn("01000", "01000");
break;
}
switch (results.value) {
case 971786617: //Hier müssen Sie Ihren notierten Infrarot code einfügen
Serial.println("Steckdose2Aus");
mySwitch.switchOff("01000", "01000");
break;
}
irrecv.resume();
}
}
Bei mySwitch.setPulseLength(xxx); bekomme ich immer eine fehlermeldung 
Hallo,
bitte lies unsere Posts richtig Alle Posts.
Und lerne die Basics.
Wir werden dir kein komplettes Programm liefern.
Du must schon mitarbeiten. Was wir dir liefern, sind Beispiele, die du noch an dein Programm anpassen musst.
Die Zahl der Pulselänge musst du aus deinem Test entnehmen.
Und ändere bitte die Überschrift wie ich geschrieben habe, damit wir uns was darunter vorstellen können.