Arduino - Werte nur einmal ausgeben

OP #4304913
Hallo zusammen,

ich habe ein Problem mit meinem Arduino und den 433 MHZ Sende-und 
Empfangsmodule.

Das Sende-Modul ist auf meinem Arduino UNO angeschlossen.
Das Empfangsmodul auf meinem Arduino MICRO.

Das Senden und empangen funktioniert zwar perfekt, aber ich bekomme 
mehrmals die gleiche Zahl gesendet.
Wenn ich z.B. mit dem Sender die Zahl '1' einmal sende, dann kommt diese 
beim Empfänger so lange an, bis ich mit dem Sender wieder die nächste 
Zahl sende.
Hier mal die beiden Codes:
1
//Sender-Code:
2

3
#include <RCSwitch.h>
4
RCSwitch mySwitch = RCSwitch();
5

6
void setup()
7
{
8
  Serial.begin(9600);
9
  // Transmitter is connected to Arduino Pin #12
10
  mySwitch.enableTransmit(12);
11

12
  // Optional set pulse length.
13
  // mySwitch.setPulseLength(320);
14

15
  // Optional set protocol (default is 1, will work for most outlets)
16
  // mySwitch.setProtocol(2);
17

18
  // Optional set number of transmission repetitions.
19
  // mySwitch.setRepeatTransmit(15);
20
}
21

22
void loop()
23
{
24
  mySwitch.send(1, 24);
25
  Serial.println("1 EINS");
26

27
  delay(500);
28
  mySwitch.send(2, 24);
29
  Serial.println("2 ZWEI");
30

31
  delay(500);
32
  mySwitch.send(2000, 24);
33
  Serial.println("2000 ZWEI TAUSEND");
34
  Serial.println("\t");
35

36
  delay(2000);
37
}


1
//Emfpänger-Code:
2

3
#include <RCSwitch.h>
4
RCSwitch mySwitch = RCSwitch();
5

6
void setup()
7
{
8
  Serial.begin(9600);
9
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2, //pin 3 on Arduino MICRO
10
}
11

12

13

14
void loop()
15
{  
16
  if (mySwitch.available())
17
  {
18
    int value = mySwitch.getReceivedValue();
19
    
20
      if (value == 0)
21
      {
22
        Serial.println("Encoding Error");
23
      }
24
    
25
      else
26
      {
27
          Serial.println(value);
28
      }
29
    
30
    //mySwitch.resetAvailable();
31
  }
32
}


Im Bild kann man die Ausgabe des SerialMonitors sehen. Dort ist als 
Beispiel die Zahl '2' gewählt worden. Sie wird vom Sender, wie im Code 
sichbar, nur einmal gesendet, beim Empfänger kommt sie aber solange an, 
bis ich die nächste Zahl, im Beispiel die '2000', sende.

Das möchte ich nicht. Ich möchte, dass die Zahl nur einmal ankommt bzw. 
ausgegeben wird.

Danke schon im Voraus für Antworten!
Angehängte Dateien:
Gast #4304917
Teddy B. schrieb:
> Im Bild kann man die Ausgabe des SerialMonitors sehen.

Welches Bild?

Erstmal solltest du prüfen, ob laufend gesendet wird oder über deine 
RCSwitch Bibliothek im Empfänger immer den gleichen Wert zurückliefert, 
bis der Empfang bestätigt wurde.

Tip: Üblicherweise gibt es zu den Arduino Bibliotheken funktionsfähige 
Beispiele auf die man aufbauen kann.
(Firma: Nisch-Aufzüge) Persönliche Seite #4305198
1
//Emfpänger-Code:
2

3
#include <RCSwitch.h>
4
RCSwitch mySwitch = RCSwitch();
5

6
void setup()
7
{
8
  Serial.begin(9600);
9
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2, //pin 3 on Arduino MICRO
10
}
11

12

13

14
void loop()
15
{  
16
  if (mySwitch.available())
17
  {
18
    int value = mySwitch.getReceivedValue();
19
    
20
      if (value == 0)
21
      {
22
        Serial.println("Encoding Error");
23
      }
24
    
25
      else 
26
      { 
27
          if (oldvalue !=value) 
28
          {
29
               Serial.println(value);
30
               oldvalue=value;
31
          }
32
      }    
33
    //mySwitch.resetAvailable();
34
  }
35
}
Gast #4305211
Ich glaube, das liegt auch an der Library, die gibt nur einen neuen Wert 
raus, wenn sie auch etwas empfängt. Ohne Signal wird auch die Variable 
nicht verändert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.