Forum: Mikrocontroller und Digitale Elektronik nRF24L01 : Arduino zu Arduino und zurück?


von Peter B. (funkheld)


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
}

von Dieter S. (Gast)


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.

von Peter B. (funkheld)


Lesenswert?

Danke für die Info.

Ich bekomme die Meldung, das die Verbindung nicht hergestellt werden 
kann. Vielleicht fehlt da  noch irgendein Kontrollmechanismus in der 
While?


Danke.
gruss

von Dieter S. (Gast)


Lesenswert?

Woher hast du denn den obigen Code?

Evtl. solltest du dir ein wenig die Basics aneignen.

Schau dir das Setup an.

von Peter B. (funkheld)


Lesenswert?

Den habe ich selber zum Senden und Empfangen zusammengebaut.

Gruss

von Dieter S. (Gast)


Lesenswert?

Peter B. schrieb:
> Den habe ich selber zum Senden und Empfangen zusammengebaut.
>
> Gruss

Dann versteh ich das nicht:

> Ich bekomme die Meldung, das die Verbindung nicht hergestellt werden
> kann. Vielleicht fehlt da  noch irgendein Kontrollmechanismus in der
> While?

von Peter B. (funkheld)


Lesenswert?

Es sind 2 verschiedene Programme.

Die bekomme ich für eine Funktion des rf24 nicht zusammen.

Gruss

von Dieter S. (Gast)


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.

von Peter B. (funkheld)


Lesenswert?

Du wirst kein Sende und Empfangsprogramm finden für 1 Byte mit dem rf24.

Gruss

von Dieter S. (Gast)


Lesenswert?

Peter B. schrieb:
> Du wirst kein Sende und Empfangsprogramm finden für 1 Byte mit dem
> rf24.
>
> Gruss

Such ich auch nicht.
Nur wenn du die selbst programmiert hast, sollte es für dich kein 
Problem sein, mit meinen Tipps beide zusammen zu fügen.

von Peter B. (funkheld)


Lesenswert?

Irgendwie muss da noch etwas umgeschaltet werden, damit es abwechselnd 
senden und empfangen kann.

Gruss

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.