nRF24L01 : Arduino zu Arduino und zurück?

OP #4443748
Lesenswert?
• ▲
▼
Hallo, guten Tag.
Ich habe hier 2 Programme für den Arduino.
Einmal wird 1 Byte gesendet und vom anderen Programm 1 Byte empfangen.

Beide Programme funktionieren.

Wie kann man jetzt bitte beide Programme zusammenlegen, das je ein rf24 
sendet und empfängt, und ein Echo zb zurücksendet. Und das eine Programm 
auf 2 Arduino zum Einsatz kommt und die Aufgabe erfüllt.

Danke.
Gruss

1 Byte-senden:
1
#include <SPI.h>
2
#include <nRF24L01.h>
3
#include <RF24.h>
4

5
#define CE_PIN   53
6
#define CSN_PIN  48
7

8
byte inbyte;
9
byte daten[1]; 
10

11
const uint64_t pipe = 0xE8E8F0F0E1LL; 
12
RF24 radio(CE_PIN, CSN_PIN); 
13

14
void setup()
15
{
16
  Serial.begin(9600);
17
  delay(1000);
18
  radio.begin();
19
  radio.setRetries(0, 15);
20
  radio.setPALevel(RF24_PA_HIGH);
21
  radio.openWritingPipe(pipe);
22
}
23

24
void loop()
25
{
26
  inbyte = inbyte+1;
27
  daten[0] = inbyte;
28
  radio.write(daten, sizeof(daten)); 
29
}

1 Byte-empfangen:
1
#include <SPI.h>
2
#include <nRF24L01.h>
3
#include <RF24.h>
4

5
#define CE_PIN  53
6
#define CSN_PIN 48
7

8
const uint64_t pipe = 0xE8E8F0F0E1LL; 
9
RF24 radio(CE_PIN, CSN_PIN); 
10

11
byte daten[1]; 
12

13
void setup()
14
{
15
  Serial.begin(9600);
16
  delay(1000);
17
  radio.begin();
18
  radio.setRetries(0, 15);
19
  radio.setPALevel(RF24_PA_HIGH);
20
  radio.openReadingPipe(1,pipe);
21
  radio.startListening();
22
}
23

24
void loop()
25
{
26
  if ( radio.available() )
27
  {
28
    bool done = false;
29
    while (!done)
30
    {
31
      done = radio.read( daten, sizeof(daten) );
32
      Serial.print("X = ");
33
      Serial.println(daten[0]);
34
    }
35
  }
36
  else
37
  {    
38
    Serial.println("No radio available");
39
  }
40
}
Gast #4443801
Lesenswert?
• ▲
▼
Das einfachste ist, du setzt die 3 Zeilen deiner Loop in die 
"While-Schleife".

Dann wird die von dir verlangte Quittung gesendet.
Du musst aber auch die Variablen anpassen.

Ob das so Sinnvoll ist, musst du entscheiden.

Wenn du davor noch eine If-Anweisung schreibst, kannst du damit noch 
Entscheiden, ob das empfangene Byte den richtigen Wert hat.
Gast #4444926
Lesenswert?
• ▲
▼
Peter B. schrieb:
> Es sind 2 verschiedene Programme.
>
> Die bekomme ich für eine Funktion des rf24 nicht zusammen.
>
> Gruss

Ich hatte dir schon beschrieben, wie du es machen sollst.

Sorry, aber dann nehme ich dir nicht ab, dass du obige Sketche selbst 
programmiert hast. Wahrscheinlich nur selbst kopiert.

Dann nimm meinen Rat und lerne die Basics.

Aber evtl. gibt es ja noch einen User, der für dich programmiert, nur 
dann lernst du nichts.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.