Sketch 433MHz empfänger, variable funktioniert nicht

Moin,

ich habe Probleme damit die Funktion richtig auszuführen.
Und zwar empfange ich das Funksignal und das halte Relay wird auch geschaltet wie es soll.
das tast Relay funktioniert auch, nur wiederholt sich das immer wieder, quasi fängt das Relay an zu "Blinken", dieses soll so lange das Funksignal anliegt aber nur einmal tasten. Nun habe ich es mit variablen versucht, diese wird erst zurückgesetzt wenn das Funksignal 1 ist. Leider bleibt es dabei das das tast Relay weiter Blinkt.
kann mir da Jemand helfen?

Verbaut ist auf der Empfänger Seite ein Arduino Uno, ein DollaTek Funkempfänger und eine 4 Relayskarte mit Optokoppler.

Danke
Gruß Fin

[code]

#include <VirtualWire.h>

int holdPin = 3;        //halte Relay
int tastPin = 4;        //tast Relay

int hold = 1;

void setup()
{
  pinMode(tastPin, OUTPUT);       //definiton der Ausgänge
  pinMode(holdPin, OUTPUT);

  digitalWrite(tastPin, HIGH);    //relays werden Ausgeschaltet
  digitalWrite(holdPin, HIGH);

  Serial.begin(9600);
  vw_set_ptt_inverted(true);      //Empfänger Modul, DollaTec 433 MHz Empfänger
  vw_set_rx_pin(2);
  vw_setup(1000);
  vw_rx_start();
}

void loop()
{
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  if (vw_get_message(buf, &buflen));
  {
    if (buf[0] == '0')               //Funktion bei dauerhaften Tastendruck des Senders, halte Relay auf An,
    {
      Serial.println(buf[0]);
      digitalWrite(holdPin, LOW);

      if (hold == 1);                  //tast Relay soll 1sec an und wieder aus.
      {
        hold = 0;
        digitalWrite(tastPin, LOW);
        delay(1000);
        digitalWrite(tastPin, HIGH);
      }
    }
    if (buf[0] == '1')                  // beim Loslassen der Sendetaste fällt Relay halten wieder ab
    {
      hold = 1;
      Serial.println(buf[0]);
      digitalWrite(holdPin, HIGH);
    }
  }
}
[/code]

Wenn du per Funk Schaltfunktionen ausführen möchtest, dann solltest du besser/einfacher die Library RCswitch verwenden.
VirtualWire ist besser zur Datenübertragung geeignet.

Danke, werde ich versuchen.
hab in Beiträgen gelesen das die VirtualWire eine höhere Reichweite hat und darum diese benutzt.

Dann hast du da evtl. etwas falsch verstanden.
Die Reichweite ist in erster Linie von der Empfangsemfindlichkeit, der Sendeleistund und der Qualität der Antennen abhängig. Es gibt noch weitere Dinge die da auch mit reinspielen können, aber die Libraries spielen hier eine kaum messbare Rolle.

Kurz zu deinem Sketch. Auf delays solltest du möglichst verzichten, da hierbei eine weiter Funktion blockiert wird.

Hab den Fehler gefunden, beim Probieren mit rc-switch ist mir grade in den Sinn gekommen das ich bei dem

ein " ; " gesetzt habe.
dieser hat die Variable nicht richtig ausführen lassen. Nun funktioniert es.

Danke euch trotzdem für die Unterstützung

1 Like

Super, das sind immer die besten Fehler, die man selbst findet.

Dennoch solltest du über den Wechsel zu RCswitch nachdenken.

1 Like

Stell die IDE ein :wink:


Dan wüstest Du sofort was für Fehler vorlagt

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.