INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
NRF24L01,Empfangene Daten auswerten
28.07.2016, 14:43
Beitrag #1
NRF24L01,Empfangene Daten auswerten
Hey Leute Wink

Es geht um einen Test 2 Funkmodule ( NRF24L01 ) einer sendet einer empfängt.
Der Code für den Empfänger soll die empfangenen Daten vergleichen und dann dementsprechend etwas ausführen. Mein Problem ist das ich nicht weis was ich da falsch mache? Mit einem 433Mhz Empfänger geht das perfekt aber mit den NRF24L01 Modulen komme ich nicht zum vergleich iwas an meinem Verständnis zum code ist falsch ?! Wär schön wenn mir jemand einen Tipp geben kann.

Fehlermeldung von der IDE:

Arduino: 1.6.5 (Mac OS X), Platine: "Arduino/Genuino Uno"

_4-Zeichen_Empf_nger_1.0.ino: In function 'void loop()':
_4-Zeichen_Empf_nger_1.0:41: error: void value not ignored as it ought to be
void value not ignored as it ought to be




Code:
#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>
#include <RF24_config.h>


RF24 radio(7,8);



unsigned long E1 = 0001;
unsigned long E2 = 0011;



void setup() {
  
    radio.begin();
    Serial.begin(57600);
    radio.openReadingPipe(1,0xF0F0F0F0D2LL);
    radio.startListening();
  
}


void loop()  {
  
    char text[6];
    if(radio.available()){
    radio.read( &text,5);
    Serial.println(text);

    unsigned long value = radio.read( &text,5);

    if (value == E1) {

    
}

    if (value == E2) {

    
}

  
}

delay(1000);

}



Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2016, 16:21 (Dieser Beitrag wurde zuletzt bearbeitet: 28.07.2016 16:22 von Scheams.)
Beitrag #2
RE: NRF24L01,Empfangene Daten auswerten
Hey!

Bin mir nicht sicher, da ich die Funktion nicht kenne (vom Aufbau), aber ich denke die Funktion hat einen Rückgabewert "void". D.h. du hast stehen bei der Definition der Variable value: "unsigned long value = void" und das ist nicht möglich. Statt der Variable "value" hast du die Variable "text", da du die ADRESSE der Variable übergiebst und somit auch in der Funktion der Wert von der "echten" Variable (nicht kopiert, was normalerweise bei einem Funktionsaufruf passiert) überschrieben werden kann.
Außerdem würde ich dabei aufpassen, 2x die read-Funktion zu verwenden, da beim zweiten Mal auslesen keine Daten mehr vorhanden sein können. (d.h. nur einmal Daten auslesen und verarbeiten)

mfg Scheams

ZUSATZ EDIT: Das Delay entfernen, da es vielleicht zu Datenverlusten führt oder sogar das Programm hindert korrekt zu laufen!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2016, 11:19
Beitrag #3
RE: NRF24L01,Empfangene Daten auswerten
Vielen Dank Scheams für die Hilfe Wink

Leider bin ich noch nicht zu einem erfolgreichen Ergebnis gekommen Undecided

Egal was ich versuche er will es nicht Kompilieren Huh

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2016, 13:08
Beitrag #4
RE: NRF24L01,Empfangene Daten auswerten
Gleicher Kompilierfehler? Wenn nicht bitte posten und den Code dazu!
Probier einmal die if's (die mit "value ==") wegzugeben, ob dann immernoch Kompilierfehler sind. Oder sogar neuen Sketch machen und immer eine Zeile hinzufügen (aufbauen), dann siehst du genau ab welcher Zeile es happert.

mfg Scheams
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.07.2016, 11:11
Beitrag #5
RE: NRF24L01,Empfangene Daten auswerten
Also ich habe jetzt mal zum test die If weggenommen:

Code:
#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>
#include <RF24_config.h>


RF24 radio(7,8);



unsigned long E1 = 0001;
unsigned long E2 = 0011;



void setup() {
  
    radio.begin();
    Serial.begin(57600);
    radio.openReadingPipe(1,0xF0F0F0F0D2LL);
    radio.startListening();
  
}


void loop()  {
  
    char text[6];
    if(radio.available()){
    radio.read( &text,5);
    Serial.println(text);

    unsigned long value = radio.read( &text,5);

  
  
}

delay(1000);

}

Fehlermeldung:

Arduino: 1.6.7 (Mac OS X), Board: "Arduino/Genuino Uno"


/Users/aerox-mc/Documents/Arduino/sketch_jul30a/sketch_jul30a.ino: In function 'void loop()':
sketch_jul30a:35: error: void value not ignored as it ought to be
unsigned long value = radio.read( &text,5);
^
exit status 1
void value not ignored as it ought to be


// Immer dieser Fehler.

Ich gehe davon aus das ich irgendetwas bei der Abfrage

Code:
unsigned long value = radio.read( &text,5);

falsch mache. Hat keiner Erfahrung mit den NRF24L01 ?

Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.07.2016, 14:41
Beitrag #6
RE: NRF24L01,Empfangene Daten auswerten
Hallo Marc,
bei mir laufen beide Codes ohne Fehler durch den Compiler.
Ich benutze die IDE Version 1.5.6 unter Win7.
Anbei mal die benutzte RF24 Lib. Vielleicht liegt es ja daran.
read() gibt übrigens true / false zurück
Grüße Ricardo


Angehängte Datei(en)
.zip  RF24.zip (Größe: 201,73 KB / Downloads: 9)

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.07.2016, 15:18
Beitrag #7
RE: NRF24L01,Empfangene Daten auswerten
Danke Ricardo Smile

jetzt klappt es bei mir auch war wohl eine Fehlerhafte Lib Huh

Jetzt gleich noch eine frage wenn das read nur true / false zurückgibt bin ich da ja auf dem Holzweg ... ich wollte ja die angekommenen Daten vergleichen zb :

Code:
unsigned long E1 = 0001;       // Wert 1
unsigned long E1 = 1101;       // Wert 2

und dann der vergleich :

Code:
unsigned long value = radio.read( &text,5);

    if (value == E1) {

    
}

    if (value == E2) {

aber wenn da true oder false kommt wird das ja nichts Big GrinHuh


Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.07.2016, 16:30 (Dieser Beitrag wurde zuletzt bearbeitet: 30.07.2016 16:35 von rkuehle.)
Beitrag #8
RE: NRF24L01,Empfangene Daten auswerten
Hallo Marc,
Zitat:Jetzt gleich noch eine frage wenn das read nur true / false zurückgibt bin ich da ja auf dem Holzweg ...
Ich sage mal Jain, read() sieht so aus:
Code:
bool RF24::read( void* buf, uint8_t len )
{
  // Fetch the payload
  read_payload( buf, len );

  // was this the last of the data available?
  return read_register(FIFO_STATUS) & _BV(RX_EMPTY);
}
Es wird also zurückgegeben ob das empfangene Byte das letzte war.
A-Bär: intern wird noch read_payload() benutzt. Diese Funktion schreibt die Daten nach buf (im folgenden Beispiel beim Receiver in msg[]).
Grundsätzlich könnte daher ein Beispiel so aussehen:
// Transmitter soll 111 senden
Code:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int msg[1];
RF24 radio(7, 8);
const uint64_t pipe = 0xF0F0F0F0D2LL;
void setup(void)
{
  radio.begin();
  radio.openWritingPipe(pipe);
  msg[0] = 111;
  radio.write(msg, 1);
}
void loop()
{
}
// Receiver soll auf 111 reagieren
Code:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int msg[1];
RF24 radio(7,8);
const uint64_t pipe = 0xF0F0F0F0D2LL;
void setup()
{
  radio.begin();
  radio.openReadingPipe(1, pipe);
  radio.startListening();
  if (radio.available())
  {
    bool done = false;
    while (!done)
    {
      done = radio.read(msg, 1);
      if (msg[0] == 111)
      {
        // Aktionen
      }
    }
  }
  else
  {
    // keine Signale
  }
}
void loop(void) {}
Hope it helps!
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Daten Visualisieren MeisterQ 12 576 01.12.2016 19:36
Letzter Beitrag: MeisterQ
  Data Logger Daten auf SD Card schreiben Crichton 12 312 22.11.2016 18:32
Letzter Beitrag: Crichton
  NRF24L01 Marc2014 0 101 08.11.2016 18:49
Letzter Beitrag: Marc2014
  NRF24L01 Packet / Msg Frage Marc2014 5 127 07.11.2016 18:08
Letzter Beitrag: hotsystems
  DHT + NRF24L01 Marc2014 6 158 07.11.2016 17:22
Letzter Beitrag: Marc2014
  Homeautomation ? Welches System ? MySensors - NRF24L01 - Arduino - OpenHAB Marc2014 0 107 07.11.2016 17:13
Letzter Beitrag: Marc2014
  I2C Daten übertragen Gandalf 3 217 04.11.2016 13:20
Letzter Beitrag: hotsystems
  NRF24L01 Interrupt MeisterQ 22 519 02.11.2016 15:50
Letzter Beitrag: MeisterQ
  Daten über USB verarbeiten Felix91 10 330 12.10.2016 13:00
Letzter Beitrag: Tommy56
  Can-Bus Shield ok, aber keine Daten Clubsport 38 1.545 01.09.2016 14:17
Letzter Beitrag: Clubsport

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste