Funkkommunikation zweier Arduino

Hallo! Ich bräuchte mal Hilfe.

Ich habe vor zwei Arduino mittels Funkverbindung (433MHz) zu verbinden. Wenn ich einen Taster betätige, soll der Empfänger eine LED an machen. Drücke ich einen zweiten Taster, soll eine andere LED angehen und bei einem dritten Taster eine dritte LED.
Ich habe bereits einen Taster drücken können und eine LED ist angegangen. Wenn ich jetzt einen zweiten Taster und eine zweite LED anbringe, geht es nicht mehr ... :frowning_face:
Ich habe die beiden hinzugefügten Elemente, genau so wie die anderen beiden zuvor verkabelt. Woran kann es liegen?

      • Mein Code zum Senden: - - -
#define TASTER1 3
#define TASTER2 5
#define FUNK_SENDER 10
#include "RCSwitch.h"
RCSwitch mySwitch = RCSwitch();
int tasterstatus = 0;

void setup() {
   Serial.begin(9600);
  pinMode(TASTER1, INPUT);
  pinMode(TASTER2, INPUT);
  mySwitch.enableTransmit(10);
}

void loop() {
  if((tasterstatus = digitalRead(TASTER1)) == HIGH){
    mySwitch.send(3, 24);
    delay(50); 
  }
  if((tasterstatus = digitalRead(TASTER2))== HIGH){
    mySwitch.send(4, 24);
    delay(50);
  } 
}
      • Und der Code zum Empfangen: - - -
#define LED1   4
#define LED2   7
#define FUNK_EMPFAENGER   2
#include "RCSwitch.h"
RCSwitch mySwitch = RCSwitch();
int delayTime = 3000;

void setup() {
  Serial.begin(9600);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
 
  mySwitch.enableReceive(0);
}

void loop() {
    if (mySwitch.available()) {
      int message = mySwitch.getReceivedValue();

      if (message == 3) {
        digitalWrite(LED1, HIGH);
        delay(delayTime);
        digitalWrite(LED1, LOW);
      }
      else if (message == 4) {
        digitalWrite(LED2, HIGH);
        delay(delayTime);
        digitalWrite(LED2, LOW);
      }
      mySwitch.resetAvailable();
    }   
}

Ich hoffe ihr könnt mir helfen.
Danke :slight_smile:

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Dann beschreibe deine gewünschte Funktion etwas genauer.
Möchtest du mehrere Tasten gleichzeitig drücken ?
Sollen die Leds weiter leuchten, wenn du den/die Taster los lässt ?

Was soll noch weiter passieren ?
Also bitte deine Funktionen genauer beschreiben.

Schalten die Taster wirklich mit externem Pulldown-Widerstand nach HIGH wie der Code es nahelegt?

Ansonsten INPUT_PULLUP verwenden.

Und was genau möchtest du damit erreichen ?

Das kann es auch nicht.
Wenn Du eine Message auslöst, bist Du am Empfänger für 3 Sekunden blind.
Danach ist die Message beendet und Du wartest auf eine neue Message.

Versuch mal das als Empfänger:

const byte leds = 2;
const byte ledPin[leds] = {4, 7};
uint32_t lastswitch[leds] {0, 0};
//#define FUNK_EMPFAENGER   2
#include "RCSwitch.h"
RCSwitch mySwitch = RCSwitch();
const uint32_t delayTime = 3000;

void setup()
{
  Serial.begin(9600);
  for (byte b = 0; b < leds; b++)
    pinMode(ledPin[b], OUTPUT);
  mySwitch.enableReceive(0);
}

void loop()
{
  if (mySwitch.available())
  {
    int message = mySwitch.getReceivedValue();
    if (message == 3)
    {
      digitalWrite(ledPin[0], HIGH);
      lastswitch[0] = millis();;
    }
    else if (message == 4)
    {
      digitalWrite(ledPin[1], HIGH);
      lastswitch[1] = millis();;
    }
    mySwitch.resetAvailable();
  }
  for (byte b = 0; b < leds; b++)
  {
    if (millis() - lastswitch[b] >= delayTime)
      digitalWrite(ledPin[b], LOW);
  }
}

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