Hallo,
Ich haversuche eine Funkstrecke mit den NRF24L01 aufzubauen.
Die Beispiele aus der Bibliothek funktionieren, also hardware schein i.o. zu sein.
jetzt habe ich den Code angepasst, um ein Byte zu empfangen.
Wenn das Byte 0 ist, sollen 6 weitere Bytes gelesen werden und für einstellungen genutzt werden.
Diese Einstellungen werden in den Variablen rs, gs, bs, rg, gg, bg gespeichert.
Wenn das empfangene Byte den gleichen Wert hat, wie die Variable id, soll der Eingang (buttonPin) überwacht werden und bei betätigen, soll die id zurück gemeldet werden.
Leider empfange ich so gar nichts... Ich fürchte , dass die Umschaltung zwischen Sendemodus und Empfangsmodus nicht so funktioniert, wie ich es verstanden habe.
Die Gegenstelle macht es identisch.
hier der Code:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define buttonPin 4
#define dauernachanschuss 1
const byte txaddress[6] = "00000";
const byte rxaddress[6] = "00001";
RF24 radio(7, 8); // CE, CSN
byte Hbyte, Lbyte, rs, gs, bs, rg, gg, bg, empfangen, id;
bool einstellungenempfangen, gerataktiv;
unsigned long trefferzeit;
void setup()
{
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
radio.begin();
//radio.setPALevel(RF24_PA_MIN);
radio.openWritingPipe(txaddress);
radio.openReadingPipe(1, rxaddress);
radio.startListening();
rs = 255;
gs = 0;
bs = 0;
rg = 0;
gg = 255;
bg = 0;
Serial.write(gg);
}
void loop() {
id = 1; //#########################im betrieb raus nehmen
if (radio.available()) {
radio.read(empfangen, 1);
Serial.write(empfangen);
einstellungenempfangen = 1;
}
if (empfangen == 0 && einstellungenempfangen == 1) {
delay(100);
radio.read(&rs, sizeof(rs));
radio.read(&gs, sizeof(gs));
radio.read(&bs, sizeof(bs));
radio.read(&rg, sizeof(rg));
radio.read(&gg, sizeof(gg));
radio.read(&bg, sizeof(bg));
einstellungenempfangen = 0;
}
if (empfangen == id && einstellungenempfangen == 1 && gerataktiv == 0) {
einstellungenempfangen = 0;
gerataktiv = 1;
}
if (empfangen == 0 && einstellungenempfangen == 1 && gerataktiv == 1) {
einstellungenempfangen = 0;
gerataktiv = 0;
}
if (digitalRead(buttonPin) == LOW && gerataktiv == 1) {
radio.stopListening();
radio.write(id,1);
radio.startListening();
gerataktiv = 0;
}
}
Weiss jemand, wie das richtig funktioniert?
