INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
433Mhz Fernbedienung Empfänger
17.11.2015, 07:08
Beitrag #1
433Mhz Fernbedienung Empfänger
Hallo,
Habe mir in der Bucht 433mhz Reciever ersteigert dazu dann auch die 4 passenden FernbedienungenDer Code der 4 Fernbedienungen wird im Serialmonitor ausgegeben, und muss dann halt entsprechend im Code eingesetzt werden.Nun hab ich mir einen Code gebastelt der auch soweit funktioniert,würde nur gerne eure Meinung hören ob es so ok ist,und ob man es gg. verbessern kann was die 4 angelernten Fernbedienungen angeht.
Des weiteren möchte ich dann versuchen eine art Anlernfunktion zu Implementieren,also wenn einer dazu auch Tips hat her damit :-)

Hier der Code:
Code:
#include <RCSwitch.h>
// ========== Tasten Remote 1 ===========
#define Remote1_Taste1_Scharf    16637105      
#define Remote1_Taste2_Unscharf  16637106
#define Remote1_Taste3_          16637108
#define Remote1_Taste4_Garage    16637112
// ========== Tasten Remote 2 ===========
#define Remote2_Taste1_Scharf    15622481      
#define Remote2_Taste2_Unscharf  15622482
#define Remote2_Taste3_          15622484
#define Remote2_Taste4_Garage    15622488
// ========== Tasten Remote 3 ===========
#define Remote3_Taste1_Scharf    12161137      
#define Remote3_Taste2_Unscharf  12161138
#define Remote3_Taste3_          12161140
#define Remote3_Taste4_Garage    12161144
// ========== Tasten Remote 4 ===========
#define Remote4_Taste1_Scharf    6188721      
#define Remote4_Taste2_Unscharf  6188722
#define Remote4_Taste3_          6188724
#define Remote4_Taste4_Garage    6188728
// ========== Ausgänge ==============
int Dataled = 13;
int AusgangScharf = 4;
int AusgangAus = 5;
int AusgangGarage = 6;
int StatusLedRot = 11;
int StatusLedGruen = 12;

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  Serial.println("Empfaenger gestartet! ");
  pinMode(Dataled, OUTPUT);           // RXTX LED
  pinMode(AusgangScharf,OUTPUT);      // Schaltausgang Scharfschalten
  pinMode(AusgangAus,OUTPUT);          // Schaltausgang Ausschalten
  pinMode(AusgangGarage,OUTPUT);       // Schaltausgang Garagenöffner
  pinMode(StatusLedRot,OUTPUT);          // Statusled aktiv
  pinMode(StatusLedGruen,OUTPUT);         // Statusled aus
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
}
// ===== Funktion Scharfschalten =====
void AlarmScharf()
{  
      digitalWrite(AusgangScharf,HIGH);
      digitalWrite(StatusLedGruen,LOW);
      digitalWrite(StatusLedRot,HIGH);
      delay(500);
      digitalWrite(AusgangScharf,LOW);
           }
// ===== Funktion Ausschalten =====
void AlarmAus()
{  
      digitalWrite(AusgangAus,HIGH);
      digitalWrite(StatusLedRot,LOW);
      digitalWrite(StatusLedGruen,HIGH);
      delay(500);
      digitalWrite(AusgangAus,LOW);
           }
// ===== Funktion Garage Fernbedienung =====
void GarageRemote()
{  
      digitalWrite(AusgangGarage,HIGH);
      delay(500);
      digitalWrite(AusgangGarage,LOW);
           }                  
          
void loop() {
  if (mySwitch.available()) {
  unsigned long value = mySwitch.getReceivedValue();
    
      if (value == 0) {
      Serial.print("Unbekannter Code");
      } else {
      digitalWrite(Dataled, HIGH);
      Serial.print("Empfangen ");
      Serial.print( mySwitch.getReceivedValue() );
      Serial.print(" / ");
      Serial.print( mySwitch.getReceivedBitlength() );
      Serial.print("bit ");
      Serial.print("Protokol: ");
      Serial.println( mySwitch.getReceivedProtocol() );
      digitalWrite(Dataled, LOW);
    }
//if (digitalRead(2) == HIGH  && digitalRead(3) == HIGH) {

if ((value == Remote1_Taste1_Scharf) || (value == Remote2_Taste1_Scharf) || (value == Remote3_Taste1_Scharf) || (value == Remote4_Taste1_Scharf)){
      Serial.println("Taste 1 betaetigt");
      AlarmScharf();   // Funktion Scharfschalten aufrufen
      // hier Code für Taste 1 betätigt einfügen
    }

if ((value == Remote1_Taste2_Unscharf) || (value == Remote2_Taste2_Unscharf) || (value == Remote3_Taste2_Unscharf) || (value == Remote4_Taste2_Unscharf)) {
      Serial.println("Taste 2 betaetigt");
      AlarmAus();      // Funktion Ausschalten aufrufen
      // hier Code für Taste 1 betätigt einfügen
    }

if (value == Remote1_Taste3_){
      Serial.println("Taste 3 betaetigt");
      // hier Code für Taste 3 betätigt einfügen
    }

if ((value == Remote1_Taste4_Garage) || (value == Remote2_Taste4_Garage) || (value == Remote3_Taste4_Garage) || (value == Remote4_Taste4_Garage)) {
      Serial.println("Taste 4 betaetigt");
       GarageRemote();
      // hier Code für Taste 4 betätigt einfügen
    }


    mySwitch.resetAvailable();
  }
  }

Besten Dank schon mal,

Mfg.
Haustechno

Smarthome ist die Zukunft ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2015, 19:02
Beitrag #2
RE: 433Mhz Fernbedienung Empfänger
Wenn der Code soweit funktioniert, ist es doch prima. Ob und wie es zu verbessern ist, kann man ohne entsprechende Hardware immer schwer sagen.

Allerdings einen Tipp könnte ich dir geben:
Setze die ganzen Steuercodes in Arrays, da wird das ganze übersichtlicher und später auch händelbarer wenn du es anlernbar machen möchtest.

Dazu auch kurz eine Info, die jeweiligen Codes kannst du dann im EEProm ablegen und da wieder abfragen. Dazu müssen die Codes allerdings in Bytes gewandelt werden und belegen dann mehrere Speicherplätze.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2015, 13:37
Beitrag #3
RE: 433Mhz Fernbedienung Empfänger
Hallo,

@hotsystems:

Danke für deinen Tip,leider verstehe ich es nicht ganz,sorry...
Kanntst du mir vielleicht ein Beispiel zu den Steuercodes in Arrays geben?

Ja das zum Thema "anlernen" das verstehe ich leider auch nocht nicht ganz bzw.
womit und wie ich da angangen soll :-(.Wird da zuerst die Learntaster Abfrage implementiert,oder zuerst das Speiichern im EEProm?

Besten Dank,

Mfg
Haustechno

Smarthome ist die Zukunft ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2015, 14:56
Beitrag #4
RE: 433Mhz Fernbedienung Empfänger
Ein Beispiel um das Array zu definieren und abzufragen:
Code:
//Array definieren

unsigned long Remote_Scharf[] = { 16637105, 15622481, 12161137, 6188721 };
unsigned long Remote_UnScharf[] = { 16637106, 15622482, 12161138, 6188722 };

//Die Abfrage erfolgt dann so:

unsigned long Result0 = Remote_Scharf[0];
//Ergebnis = 16637105

unsigned long Result1 = Remote_UnScharf[3];
//Ergebnis = 6188722

Und weiteres kannst du hier nachlesen:
https://www.arduino.cc/en/Tutorial/Arrays

Was das Anlernen betrifft, würde ich mich an deiner Stelle erst mit dem Speichern und Lesen des EEProms befassen. Das ist nicht kompliziert:
https://www.arduino.cc/en/Reference/EEPROM

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.11.2015, 07:40
Beitrag #5
RE: 433Mhz Fernbedienung Empfänger
Guten Morgen,

@hotsystems

Code:
#include <RCSwitch.h>


// ========== Array Remote =====================
unsigned long Remote_Scharf[] = { 16637105, 15622481, 12161137, 6188721 };
unsigned long Remote_UnScharf[] = { 16637106, 15622482, 12161138, 6188722 };
unsigned long Remote_Frei[] = { 16637108, 15622484, 12161140, 6188724 };
unsigned long Remote_Garage[] = { 16637112, 15622488, 12161144, 6188728 };

Also das sollten dann meine Arrays sein wenn ich das richtig verstanden habe.

was ich leider nicht verstehe ist die Abfrage ,sorry :-(

Denn hier bei mir ist ja z.b. mit dem Teil:
Code:
if ((value == Remote1_Taste1_Scharf) || (value == Remote2_Taste1_Scharf) || (value == Remote3_Taste1_Scharf) || (value == Remote4_Taste1_Scharf)){
      Serial.println("Taste 1 betaetigt");
      AlarmScharf();   // Funktion Scharfschalten aufrufen
Abgefragt ob bei einer der 4 Fernbedienungen die Taste 1 gedrückt wurde.
Wenn ja dann die Funktion starten....

So ,
in deinem Beispiel:
Code:
unsigned long Result0 = Remote_Scharf[0];
//Ergebnis = 16637105

Da wird ja nur eine Fernbedienung abgefragt,und nicht alle 4 wenn ich das so richtig verstehe?

Mfg.
Haustechno

Smarthome ist die Zukunft ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.11.2015, 17:06
Beitrag #6
RE: 433Mhz Fernbedienung Empfänger
In einem Array hat der erste Wert den Index 0, der zweite die 1 usw.
Du setzt die Abfrage genau so zusammen wie bisher.
Nur eben mit der neuen Array-Abfrage und den Indexwerten 0-3.
Lies dir bitte die verlinkte Beschreibung der Arrays durch, da steht alles genau beschrieben.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino Mini Pro mit RCSwich und 433MHz Empfänger OLDARDUINO 6 277 03.11.2016 14:43
Letzter Beitrag: hotsystems
  Infrarot Fernbedienung grinsemaennchen 3 859 22.07.2016 08:52
Letzter Beitrag: hotsystems
  Handsender zum testen aller 433Mhz Funksteckdosen Bender 10 3.688 19.10.2015 06:51
Letzter Beitrag: Bender
  Video Player Fernbedienung mit Industrietastern Arduinoob 3 1.192 05.10.2015 09:16
Letzter Beitrag: hotsystems
  433Mhz Türklingel als Auslöser für den Arduino möglich? Serienjunkie 11 3.381 04.10.2015 18:47
Letzter Beitrag: hotsystems
Lightbulb Hexacopter LED mit RC Empfänger und WS2812B LED Wampo 9 3.379 02.01.2015 14:17
Letzter Beitrag: Wampo
  433MHz Funk- Helligkeits- Sensor MaHa1976 5 2.700 30.12.2014 18:15
Letzter Beitrag: MaHa1976
  IR- Empfänger für RGBWW LEDs - Feinschliff MaHa1976 14 2.807 27.12.2014 18:37
Letzter Beitrag: MaHa1976
  RC-Empfänger PWM-Signale für Servoansteuerung einlesen do1xxy 2 4.164 15.07.2014 21:32
Letzter Beitrag: do1xxy
  IR - Fernbedienung Georg 0 2.058 16.05.2014 16:07
Letzter Beitrag: Georg

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste