Hallo zusammen,
ich habe mir vor einer Woche einige NRF24 Module bestellt, weil ich ein kleines Netzwerk aufbauen möchte.
Nun habe ich mich langsam an das Thema herangetastet und einige tutorials und Beispielsketche durchgearbeitet. Ich habe hinbekommen, dass sich von Arduino Nr1 eine Nachricht an Arduino Nr2 sende, so dass bei Betätigung eines Knopfes an A1 eine LED an A2 leuchtet.
Die nächste Erweiterung die ich hin bekommen habe: ich kann an A1 einen knopf betätigen und LED an A2 leuchtet. Dazu kommt nun Knopf an A2 lässt LED an A1 leuchten.
Soweit so gut. Beim nächsten Versuch habe ich einen dritten Arduino ins Spiel gebracht:
Knopf an A1 lässt LED an A2 leuchten
Knopf an A1 lässt LED an A3 leuchten
Juhu, geht auch...
Also nächste Erweiterung:
Knopf an A1 lässt LED an A2 leuchten
Knopf an A1 lässt LED an A3 leuchten
Knopf an A2 lässt LED an A1 leuchten
Geht auch!
Aber jetzt wird's tricky, bzw. will einfach nicht mehr funktionieren... Bin am verzweifeln. So solls aussehen:
Knopf an A1 lässt LED an A2 leuchten
Knopf an A1 lässt LED an A3 leuchten
Knopf an A2 lässt LED an A1 leuchten
Knopf an A3 lässt LED an A1 leuchten (eine 2te LED, also nicht die eine Zeile drüber)
Anbei mal die Sketche:
suzusagen der MASTER:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int sa=2;
int sb=3;
boolean stata=0;
boolean statb=0;
boolean buttonstate=0;
boolean buttonstatee=0;
int leda=6;
int ledb=5;
RF24 radio(7,8);
const byte rxAddr[][6]={"null","eins","zwei","drei"};
void setup() {
// put your setup code here, to run once:
pinMode(leda,OUTPUT);
pinMode(ledb,OUTPUT);
pinMode(sa,INPUT);
pinMode(sb,INPUT);
radio.begin();
Serial.begin(115200);
//radio.openReadingPipe(0,rxAddr[2]);
//radio.openReadingPipe(0,rxAddr[3]);
//radio.setRetries(15, 15);
radio.setPALevel(RF24_PA_MIN);
}
void loop() {
while(radio.available());
radio.openWritingPipe(rxAddr[1]);
radio.stopListening();
stata=digitalRead(sa);
radio.write(&stata, sizeof(stata));
while(radio.available());
radio.openWritingPipe(rxAddr[0]);
radio.stopListening();
statb=digitalRead(sb);
radio.write(&statb, sizeof(statb));
/////////////////////
radio.openReadingPipe(0,rxAddr[2]);
radio.startListening();
while(!radio.available());
radio.read(&buttonstate,sizeof(buttonstate));
if(buttonstate==LOW){
digitalWrite(leda,HIGH);
}
else{
digitalWrite(leda,LOW);
}
radio.stopListening();
/*
/////////////////////
radio.openReadingPipe(0,rxAddr[2]);
radio.startListening();
while(!radio.available());
radio.read(&buttonstatee,sizeof(buttonstatee));
if(buttonstatee==LOW){
digitalWrite(ledb,HIGH);
}
else{
digitalWrite(ledb,LOW);
}
radio.stopListening();
*/
}
jetzt Slave 1:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int led=6;
boolean buttonstate=0;
int sa=5;
int stata;
RF24 radio(7, 8);
const byte rxAddr[][6]={"null","eins","zwei","drei"};
void setup(){
pinMode(sa,INPUT);
pinMode(led, OUTPUT);
Serial.begin(115200);
radio.begin();
radio.setPALevel(RF24_PA_MIN);
}
void loop(){
radio.startListening();
radio.openReadingPipe(0, rxAddr[0]);
while(!radio.available());
radio.read(&buttonstate, sizeof(buttonstate));
if (buttonstate==LOW){
digitalWrite(led,HIGH);
Serial.println(buttonstate);
}
else{
digitalWrite(led,LOW);
Serial.println(buttonstate);
}
/////////////////////////////////
radio.stopListening();
while(radio.available());
radio.openWritingPipe(rxAddr[2]);
stata=digitalRead(sa);
radio.write(&stata,sizeof(stata));
}
und Slave 2:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int led=6;
boolean buttonstate=0;
int sa=5;
int stata;
RF24 radio(7, 8);
const byte rxAddr[][6]={"null","eins","zwei","drei"};
void setup(){
pinMode(sa,INPUT);
pinMode(led, OUTPUT);
Serial.begin(115200);
radio.begin();
radio.setPALevel(RF24_PA_MIN);
}
void loop(){
radio.startListening();
radio.openReadingPipe(0, rxAddr[1]);
while(!radio.available());
radio.read(&buttonstate, sizeof(buttonstate));
if (buttonstate==LOW){
digitalWrite(led,HIGH);
Serial.println(buttonstate);
}
else{
digitalWrite(led,LOW);
Serial.println(buttonstate);
}
/*
/////////////////////////////////
radio.stopListening();
while(radio.available());
radio.openWritingPipe(rxAddr[3]);
stata=digitalRead(sa);
radio.write(&stata,sizeof(stata));
*/
}
ach ja verwende TMRh20 Lib.....
Kann mir jemand einen Tipp geben was ich anpassen muss?!?!?