Hallo Forum,
ich hätte nicht gedacht das ich Probleme mit der Programmierung bekomme, aber weil meine frau jetzt langsam mit dem Abendbrot drängelt wende ich mich vertrauensvoll an euch:
Wie bereits in anderen Topics beschrieben, wollte ich gerne 220Volt Geräte mit Hilfe von Arduino schalten, weil mir aber Relais einfach zu unsicher sind (bin halt eher mit Holzspielzeug aufgewachsen) habe ich mich für die Variante mit den Funksteckdosen entschieden.
Ich habe mir bei COnrad http://www.conrad.de/ce/de/product/130428/SENDE-EMPFAeNGERMODULSET-433MHZ/SHOP_AREA_17364&promotionareaSearchDetail=005 ein Set bestehend aus Empfänger und Sender für 433Mhz Geräte gekauft. Und passend dazu ein Set aus 3 Funksteckdosen-die auch alle 3 wunderbar funktionieren.
Das Auslesen der Fernbedienung scheint zu funktionieren, dazu verwende ich den Code:
/*
* Demo for RF remote switch receiver.
* For details, see RemoteReceiver.h!
*
* This sketch shows the received signals on the serial port.
* Connect the receiver to digital pin 2.
*/
#include <RemoteReceiver.h>
void setup() {
Serial.begin(115200);
// Initialize receiver on interrupt 0 (= digital pin 2), calls the callback "showCode"
// after 3 identical codes have been received in a row. (thus, keep the button pressed
// for a moment)
//
// See the interrupt-parameter of attachInterrupt for possible values (and pins)
// to connect the receiver.
RemoteReceiver::init(0, 3, showCode);
}
void loop() {
}
// Callback function is called only when a valid code is received.
void showCode(unsigned long receivedCode, unsigned int period) {
// Note: interrupts are disabled. You can re-enable them if needed.
// Print the received code.
Serial.print("Code: ");
Serial.print(receivedCode);
Serial.print(", period duration: ");
Serial.print(period);
Serial.println("us.");
}
Als Ergebnis erhalte ich folgenden Code:
Code: 722, period duration: 321us. (= ON)
Code: 726, period duration: 280us. (=OFF)
So schön so gut, leider habe ich jetzt aber keine Ahnung und leider auch nichts entsprechendes gefunden (mit dem ich was anfangen kann)
Nutze ich den RCSwitch-Code passiert gar nichts, dabei weiß ich aber nicht einmal wo ich da den Pin einstellen soll.
/*
Example for receiving
http://code.google.com/p/rc-switch/
If you want to visualize a telegram copy the raw data and
paste it into http://test.sui.li/oszi/
*/
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(0, output);
}
void loop() {
}
void output(unsigned long decimal, unsigned int length, unsigned int delay, unsigned int* raw) {
if (decimal == 0) {
Serial.print("Unknown encoding.");
} else {
char* b = dec2binWzerofill(decimal, length);
Serial.print("Decimal: ");
Serial.print(decimal);
Serial.print(" (");
Serial.print( length );
Serial.print("Bit) Binary: ");
Serial.print( b );
Serial.print(" Tri-State: ");
Serial.print( bin2tristate( b) );
Serial.print(" PulseLength: ");
Serial.print(delay);
Serial.println(" microseconds");
}
Serial.print("Raw data: ");
for (int i=0; i<= length*2; i++) {
Serial.print(raw[i]);
Serial.print(",");
}
Serial.println();
Serial.println();
}
static char* bin2tristate(char* bin) {
char returnValue[50];
int pos = 0;
int pos2 = 0;
while (bin[pos]!='\0' && bin[pos+1]!='\0') {
if (bin[pos]=='0' && bin[pos+1]=='0') {
returnValue[pos2] = '0';
} else if (bin[pos]=='1' && bin[pos+1]=='1') {
returnValue[pos2] = '1';
} else if (bin[pos]=='0' && bin[pos+1]=='1') {
returnValue[pos2] = 'F';
} else {
return "not applicable";
}
pos = pos+2;
pos2++;
}
returnValue[pos2] = '\0';
return returnValue;
}
static char * dec2binWzerofill(unsigned long Dec, unsigned int bitLength){
static char bin[64];
unsigned int i=0;
while (Dec > 0) {
bin[32+i++] = (Dec & 1 > 0) ? '1' : '0';
Dec = Dec >> 1;
}
for (unsigned int j = 0; j< bitLength; j++) {
if (j >= bitLength - i) {
bin[j] = bin[ 31 + i - (j - (bitLength - i)) ];
}else {
bin[j] = '0';
}
}
bin[bitLength] = '\0';
return bin;
}
Ich bitte um Hilfe bzw. auch gerne um ein Tutorial in dem das erklärt ist, wenn ich das alles hinbekommen haben sollte bin ich auch gerne bereit selber eines zu schreiben.
mfg und einen schönen Sonntag Abend
Balli