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
30.07.2016, 16:59
Beitrag #9
RE: NRF24L01,Empfangene Daten auswerten
Danke Ricardo Wink


Leider klappt es nach wie vor nicht Huh

Ich habe zuerst mal beide Uno's mit diesem BSP Sketch bespielt um die hardware seit zu testen. Es geht.

Code:
/*
Copyright (C) 2011 J. Coliz <maniacbug@ymail.com>

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*/

/**
* Example for Getting Started with nRF24L01+ radios.
*
* This is an example of how to use the RF24 class.  Write this sketch to two
* different nodes.  Put one of the nodes into 'transmit' mode by connecting
* with the serial monitor and sending a 'T'.  The ping node sends the current
* time to the pong node, which responds by sending the value back.  The ping
* node can then see how long the whole cycle took.
*/

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

//
// Hardware configuration
//

// Set up nRF24L01 radio on SPI bus plus pins 9 & 10

RF24 radio(7,8);

//
// Topology
//

// Radio pipe addresses for the 2 nodes to communicate.
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

//
// Role management
//
// Set up role.  This sketch uses the same software for all the nodes
// in this system.  Doing so greatly simplifies testing.  
//

// The various roles supported by this sketch
typedef enum { role_ping_out = 1, role_pong_back } role_e;

// The debug-friendly names of those roles
const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"};

// The role of the current running sketch
role_e role = role_pong_back;

void setup(void)
{
  //
  // Print preamble
  //

  Serial.begin(57600);
  printf_begin();
  printf("\n\rRF24/examples/GettingStarted/\n\r");
  printf("ROLE: %s\n\r",role_friendly_name[role]);
  printf("*** PRESS 'T' to begin transmitting to the other node\n\r");

  //
  // Setup and configure rf radio
  //

  radio.begin();

  // optionally, increase the delay between retries & # of retries
  radio.setRetries(15,15);

  // optionally, reduce the payload size.  seems to
  // improve reliability
  //radio.setPayloadSize(8);

  //
  // Open pipes to other nodes for communication
  //

  // This simple sketch opens two pipes for these two nodes to communicate
  // back and forth.
  // Open 'our' pipe for writing
  // Open the 'other' pipe for reading, in position #1 (we can have up to 5 pipes open for reading)

  //if ( role == role_ping_out )
  {
    //radio.openWritingPipe(pipes[0]);
    radio.openReadingPipe(1,pipes[1]);
  }
  //else
  {
    //radio.openWritingPipe(pipes[1]);
    //radio.openReadingPipe(1,pipes[0]);
  }

  //
  // Start listening
  //

  radio.startListening();

  //
  // Dump the configuration of the rf unit for debugging
  //

  radio.printDetails();
}

void loop(void)
{
  //
  // Ping out role.  Repeatedly send the current time
  //

  if (role == role_ping_out)
  {
    // First, stop listening so we can talk.
    radio.stopListening();

    // Take the time, and send it.  This will block until complete
    unsigned long time = millis();
    printf("Now sending %lu...",time);
    bool ok = radio.write( &time, sizeof(unsigned long) );
    
    if (ok)
      printf("ok...");
    else
      printf("failed.\n\r");

    // Now, continue listening
    radio.startListening();

    // Wait here until we get a response, or timeout (250ms)
    unsigned long started_waiting_at = millis();
    bool timeout = false;
    while ( ! radio.available() && ! timeout )
      if (millis() - started_waiting_at > 200 )
        timeout = true;

    // Describe the results
    if ( timeout )
    {
      printf("Failed, response timed out.\n\r");
    }
    else
    {
      // Grab the response, compare, and send to debugging spew
      unsigned long got_time;
      radio.read( &got_time, sizeof(unsigned long) );

      // Spew it
      printf("Got response %lu, round-trip delay: %lu\n\r",got_time,millis()-got_time);
    }

    // Try again 1s later
    delay(1000);
  }

  //
  // Pong back role.  Receive each packet, dump it out, and send it back
  //

  if ( role == role_pong_back )
  {
    // if there is data ready
    if ( radio.available() )
    {
      // Dump the payloads until we've gotten everything
      unsigned long got_time;
      bool done = false;
      while (!done)
      {
        // Fetch the payload, and see if this was the last one.
        done = radio.read( &got_time, sizeof(unsigned long) );

        // Spew it
        printf("Got payload %lu...",got_time);

    // Delay just a little bit to let the other unit
    // make the transition to receiver
    delay(20);
      }

      // First, stop listening so we can talk
      radio.stopListening();

      // Send the final one back.
      radio.write( &got_time, sizeof(unsigned long) );
      printf("Sent response.\n\r");

      // Now, resume listening so we catch the next packets.
      radio.startListening();
    }
  }

  //
  // Change roles
  //

  if ( Serial.available() )
  {
    char c = toupper(Serial.read());
    if ( c == 'T' && role == role_pong_back )
    {
      printf("*** CHANGING TO TRANSMIT ROLE -- PRESS 'R' TO SWITCH BACK\n\r");

      // Become the primary transmitter (ping out)
      role = role_ping_out;
      radio.openWritingPipe(pipes[0]);
      radio.openReadingPipe(1,pipes[1]);
    }
    else if ( c == 'R' && role == role_ping_out )
    {
      printf("*** CHANGING TO RECEIVE ROLE -- PRESS 'T' TO SWITCH BACK\n\r");
      
      // Become the primary receiver (pong back)
      role = role_pong_back;
      radio.openWritingPipe(pipes[1]);
      radio.openReadingPipe(1,pipes[0]);
    }
  }
}
// vim:cin:ai:sts=2 sw=2 ft=cpp

Dann habe ich den Sender / Empfänger Code den du mir netter weise im letzten Post geschickt hast getestet.
Ergebnis: keine Reaktion ...Huh

Dann habe ich beide von dir so geändert:

sender:

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) {
  
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
  msg[0] = 111;
  radio.write(msg, 1);
  
}


void loop() {

  Serial.print("sende...");
  radio.openWritingPipe(pipe);
  msg[0] = 111;
  radio.write(msg, 1);

  delay(250);
  
  
}


Und hier Empfänger:

Code:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int msg[1];
RF24 radio(7,8);
const uint64_t pipe = 0xF0F0F0F0D2LL;
void setup() {
  
  Serial.begin(9600);
  radio.begin();
  
}

void loop() {
  
  radio.openReadingPipe(1, pipe);
  radio.startListening();
  if (radio.available())
  {
    bool done = false;
    while (!done)
    {
      done = radio.read(msg, 1);
      Serial.println(msg[0]);
      if (msg[0] == 111)
      {
        // Vergleiche
      }
    }
  }
  else
  {
    // keine Signale
  }
  
  
  
  
  }


Dann wieder getestet... Keine Antwort .

Dann habe ich den Sender Code ( den letzten ) gelassen und als Empfänger code den BSP. Getting Started code in den Empfänger uno geladen und siehe da es kommt an:

payload: 111 / sending response

dann bleibt er natürlich stehen.

Also ist wirklich das Problem der Empfangscode ?! Huh



Gruß Marc

Shy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.07.2016, 19:34
Beitrag #10
RE: NRF24L01,Empfangene Daten auswerten
Für heute das letztemal:
Zitat:Also ist wirklich das Problem der Empfangscode ?!
Wenn du den Code so wie gezeigt genuutzt hast, dann ja.
An der Stelle wo "// Vergleiche" steht musst du natürlich die Aktionen einbauen, die erfolgen sollen, wenn er 111 empfängt.
Grüße Ricardo
PS: das Serial.print() kann raus

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 565 01.12.2016 19:36
Letzter Beitrag: MeisterQ
  Data Logger Daten auf SD Card schreiben Crichton 12 303 22.11.2016 18:32
Letzter Beitrag: Crichton
  NRF24L01 Marc2014 0 99 08.11.2016 18:49
Letzter Beitrag: Marc2014
  NRF24L01 Packet / Msg Frage Marc2014 5 123 07.11.2016 18:08
Letzter Beitrag: hotsystems
  DHT + NRF24L01 Marc2014 6 154 07.11.2016 17:22
Letzter Beitrag: Marc2014
  Homeautomation ? Welches System ? MySensors - NRF24L01 - Arduino - OpenHAB Marc2014 0 106 07.11.2016 17:13
Letzter Beitrag: Marc2014
  I2C Daten übertragen Gandalf 3 215 04.11.2016 13:20
Letzter Beitrag: hotsystems
  NRF24L01 Interrupt MeisterQ 22 516 02.11.2016 15:50
Letzter Beitrag: MeisterQ
  Daten über USB verarbeiten Felix91 10 322 12.10.2016 13:00
Letzter Beitrag: Tommy56
  Can-Bus Shield ok, aber keine Daten Clubsport 38 1.537 01.09.2016 14:17
Letzter Beitrag: Clubsport

Gehe zu:


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