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
nrf 24 und sensoren auslesen
03.10.2015, 16:08
Beitrag #1
nrf 24 und sensoren auslesen
ich komme hier echt nicht weiter ich habe mir eine hausteuerung gebaut auf ein 7zoll display alles so weit fertig .Wo ich jetzt nicht weiter komme ist die Nrf24 geschichte ich habe mir den code mal mit den joystick angeschaut habe es um geschrieben das er mir einen blumen sensor auslesen soll klappt alles solange es nur 2 nrf 24 sind (SCHREIBEN und ABLESEN)
aber wenn ich ein 3.oder mehr haben möchte spiel alles verückt.kann mir da jemand weiter helfen .

Hier mal mein code:

////////////////////////////////////////////EMPFÄNGER
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

int Wasser[3];
int Blumen[3];
int SER_Pin = 2; //pin 14 on the 75HC595
int RCLK_Pin = 3; //pin 12 on the 75HC595
int SRCLK_Pin = 5; //pin 11 on the 75HC595

#define number_of_74hc595s 4
//do not touch
#define numOfRegisterPins number_of_74hc595s * 8
boolean registers[numOfRegisterPins];
RF24 radio(9,10);
const uint64_t pipes[3] ={ 0xBABBCCDD00LL, 0xAABBCCDD11LL,0xAABBCCDD22LL};// Radio pipe addresses for the 2 nodes to communicate.
//const uint64_t pipes[2] = {0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL};

void setup(void)
{
pinMode(SER_Pin, OUTPUT);
pinMode(RCLK_Pin, OUTPUT);
pinMode(SRCLK_Pin, OUTPUT);
Serial.begin(9600);
radio.begin();
//radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(2,pipes[2]); //radio.openWritingPipe(pipes[0]);
radio.openReadingPipe(3,pipes[3]);
// radio.openReadingPipe(1,pipes[1]);
radio.startListening();
//reset all register pins
clearRegisters();
writeRegisters();
}
//set all register pins to LOW
void clearRegisters(){
for(int i = numOfRegisterPins - 1; i >= 0; i--){
registers[i] = LOW;
}
}


//Set and display registers
//Only call AFTER all values are set how you would like (slow otherwise)
void writeRegisters(){

digitalWrite(RCLK_Pin, LOW);

for(int i = numOfRegisterPins - 1; i >= 0; i--){
digitalWrite(SRCLK_Pin, LOW);

int val = registers[i];

digitalWrite(SER_Pin, val);
digitalWrite(SRCLK_Pin, HIGH);

}
digitalWrite(RCLK_Pin, HIGH);

}

//set an individual pin HIGH or LOW
void setRegisterPin(int index, int value){
registers[index] = value;
}

void loop(void)
{

if ( radio.available() )
{
bool done = false;
while (!done)
{
done = radio.read( Wasser, sizeof(Wasser) );
done = radio.read( Blumen, sizeof(Blumen) );




if(Wasser[1]<450)
{Serial.println(Wasser[1]);
Serial.println("KEIN WASSER");
setRegisterPin(1, HIGH);
}

else
{
Serial.println(" WASSER ist im dank");
setRegisterPin(1, LOW);
}




Serial.println(Blumen[1]);
if(Blumen[1]<450)
{

Serial.println("BLUMEN HABEN KEIN WASSER");
setRegisterPin(25, HIGH);
}
else
{
Serial.println("BLUMEN HABEN WASSER");
setRegisterPin(25, LOW);
}


// if(Blumen[2]>450)
//{
// setRegisterPin(11, HIGH);
// }
// else
// {
// setRegisterPin(11, LOW);
// }
// Serial.println(Blumen[1]);
// Serial.println(Blumen[2]);
writeRegisters();
}
}

else
{
Serial.println("Es wurde kein Sender gefunden");
}
// Delay para facilitar a visualização das informações no serial monitor
delay(10000);
}



///////////////////////////////////////////////////sender 1
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "DHT.h"

//#define DHTPIN A3
//#define DHTTYPE DHT11
//DHT dht(DHTPIN, DHTTYPE);
int Blumen[3];

//float dht_nem[3];

RF24 radio(9,10);
const uint64_t pipes[] ={ 0xAABBCCDD11LL};//,0xE8E8F0F0D2LL,0xE8E8F0F0E3LL};

void setup(void)
{ Serial.begin(9600);
//dht.begin();
radio.begin();
radio.openWritingPipe(pipes[0]);
//radio.openReadingPipe(1,pipes[0]);
}

void loop(void)
{
// float t = dht.readTemperature();

Blumen[0] = analogRead(A0);
Blumen[1] = analogRead(A1);
Blumen[2] = analogRead(A2);
//Blumen[3] =analogRead(A3);//DHT.temperature;
// DHT.temperature;//analogRead(A3);

radio.write( Blumen, sizeof(Blumen) );
Serial.println(Blumen[1]);
}


/////////////////////////////////////////////////sender 2[/php]
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "DHT.h"

//#define DHTPIN A3
//#define DHTTYPE DHT11
//DHT dht(DHTPIN, DHTTYPE);
int Wasser[3];

//float dht_nem[3];

RF24 radio(9,10);
const uint64_t pipes[] ={ 0xAABBCCDD22LL};//,0xE8E8F0F0D2LL,0xE8E8F0F0E3LL};

void setup(void)
{ Serial.begin(9600);
//dht.begin();
radio.begin();
radio.openWritingPipe(pipes[0]);
//radio.openReadingPipe(1,pipes[0]);
}

void loop(void)
{
// float t = dht.readTemperature();

Wasser[0] = analogRead(A0);
Wasser[1] = analogRead(A1);
Wasser[2] = analogRead(A2);
//Blumen[3] =analogRead(A3);//DHT.temperature;
// DHT.temperature;//analogRead(A3);

radio.write( Wasser, sizeof(Wasser) );
Serial.println(Wasser[1]);
}

Geht nicht gibt es nicht
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.10.2015, 16:29
Beitrag #2
RE: nrf 24 und sensoren auslesen
Du solltest deinen Sketch mal richtig dokumentieren, damit wir auch erkennen, was dieser machen soll. So dauert es für uns einfach zu lange, um uns einzuarbeiten.

Und dann setze deinen Sketch in Code-Tags hier rein, so wird er auch besser lesbar.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2015, 22:10
Beitrag #3
RE: nrf 24 und sensoren auslesen
Sobald ich die Woche Zeit habe setze ich nochmal den code beschriftet rein mit den tags muss ich schauen ob ich das hin bekomme weiß nicht wo man das hier macht. MFG schlappy

Geht nicht gibt es nicht
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2015, 22:14
Beitrag #4
RE: nrf 24 und sensoren auslesen
(05.10.2015 22:10)schlappy82 schrieb:  Sobald ich die Woche Zeit habe setze ich nochmal den code beschriftet rein mit den tags muss ich schauen ob ich das hin bekomme weiß nicht wo man das hier macht. MFG schlappy

Wenn du im letzten Post auf "Reply" klickst, hast du oben die Schaltflächen und drückst auf "#" "für formatierten Code einsetzen".

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.10.2015, 22:34
Beitrag #5
RE: nrf 24 und sensoren auslesen
...oder man setzt vor das coding ein "[ code ]" (ohne die Blanks und Anfuehrungszeichen) und danach ein "[ /code ]" (auch ohne Blanks und Anfuehrungszeichen).

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.10.2015, 13:47
Beitrag #6
RE: nrf 24 und sensoren auslesen
(03.10.2015 16:08)schlappy82 schrieb:  ich komme hier echt nicht weiter ich habe mir eine hausteuerung gebaut auf ein 7zoll display alles so weit fertig .Wo ich jetzt nicht weiter komme ist die Nrf24 geschichte ich habe mir den code mal mit den joystick angeschaut habe es um geschrieben das er mir einen blumen sensor auslesen soll klappt alles solange es nur 2 nrf 24 sind (SCHREIBEN und ABLESEN)
aber wenn ich ein 3.oder mehr haben möchte spiel alles verückt.kann mir da jemand weiter helfen .

Hallo,
ich habe den Code nur kurz überflogen, aber es sieht so aus als ob deine Sender alle senden wann sie wollen. Also völlig unkoordiniert. Das finde ich nicht gut.

Vorschlag:
Nutze zum Senden und empfangen bei allen Teilnehmern nur pipe 0/1.
Baue im Empfänger einen Code ein der die Sender reihum zum senden auffordert. Wenn der angeforderte Sender geantwortet hat wird der nächste angefordert. u.s.w.

So bist du dann mit der Anzahl der Sender nicht an die maximale Anzahl der pipes gefunden und das Ganze läuft koordiniert ab.

Gruß
Arne

ExclamationMit zunehmender Anzahl qualifizierter Informationen bei einer Problemstellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.Exclamation
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.10.2015, 15:41
Beitrag #7
RE: nrf 24 und sensoren auslesen
Schau dir mal das Beispiel "startping" an... Um es dir einfacher zu machen- ich habe aus diesem Beispiel mal die "Zentrale" extrahiert- das ist dann dein "Node1" und die "Antworter"- die mußt du dann mit "Node2" bis "Node6" betiteln.... damit kannst du schon mal beliebige Daten von den 5 Antwortern zu der Zentrale schicken und die Zentrale darauf antworten lassen...

Code:
#include <SPI.h>
#include <EEPROM.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

long Sensor = 1;
int SensorPIN = A7;

RF24 radio(9,10);

const uint64_t talking_pipes[5] = { 0xF0F0F0F0D2LL, 0xF0F0F0F0C3LL, 0xF0F0F0F0B4LL, 0xF0F0F0F0A5LL, 0xF0F0F0F096LL };
const uint64_t listening_pipes[5] = { 0x3A3A3A3AD2LL, 0x3A3A3A3AC3LL, 0x3A3A3A3AB4LL, 0x3A3A3A3AA5LL, 0x3A3A3A3A96LL };

typedef enum { role_invalid = 0, role_ping_out, role_pong_back } role_e;
const char* role_friendly_name[] = { "Ungültig", "Sender", "Anwortender"};
role_e role;
const uint8_t address_at_eeprom_location = 0;
uint8_t node_address;

void setup(void)
{
  pinMode(SensorPIN, INPUT);
  
    role = role_ping_out;
    node_address = 2; //Adresse 2- 6 gültige

  Serial.begin(57600);
  printf_begin();
  printf("\n\rRF24/examples/starping/\n\r");
  printf("ROLE: %s\n\r",role_friendly_name[role]);
  printf("ADDRESS: %i\n\r",node_address);
  
  radio.begin();

    radio.openWritingPipe(talking_pipes[node_address-2]);
    radio.openReadingPipe(1,listening_pipes[node_address-2]);
  
  radio.startListening();
  radio.printDetails();
}

void loop(void)
{
    Sensor = analogRead(SensorPIN);
  
    radio.stopListening();
    printf("Sende Sensorwert %lu...",Sensor);
    radio.write( &Sensor, sizeof(unsigned long) );
    
    radio.startListening();
    unsigned long started_waiting_at = millis();
    bool timeout = false;
    while ( ! radio.available() && ! timeout )
      if (millis() - started_waiting_at > 250 )
        timeout = true;
        
    if ( timeout )
    {
      printf("fehlgeschlagen- die Zeit wurde ueberschritten.\n\r");
    }
    else
    {
      unsigned long Szene;
      radio.read( &Szene, sizeof(unsigned long) );
      printf("Antwort erhalten %lu\n\r",Szene);
    }
    delay(1000);
}


Code:
#include <SPI.h>
#include <EEPROM.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

int Szene = 1;

RF24 radio(9,10);

const uint64_t talking_pipes[5] = { 0xF0F0F0F0D2LL, 0xF0F0F0F0C3LL, 0xF0F0F0F0B4LL, 0xF0F0F0F0A5LL, 0xF0F0F0F096LL };
const uint64_t listening_pipes[5] = { 0x3A3A3A3AD2LL, 0x3A3A3A3AC3LL, 0x3A3A3A3AB4LL, 0x3A3A3A3AA5LL, 0x3A3A3A3A96LL };

typedef enum { role_invalid = 0, role_ping_out, role_pong_back } role_e;
const char* role_friendly_name[] = { "Ungueltig", "Antworter", "Sender"};
role_e role;
const uint8_t address_at_eeprom_location = 0;
uint8_t node_address;

void setup(void)
{
    role = role_pong_back;
    node_address = 1;
  
  Serial.begin(57600);
  printf_begin();
  printf("\n\rRF24/examples/starping/\n\r");
  printf("ROLE: %s\n\r",role_friendly_name[role]);
  printf("ADDRESS: %i\n\r",node_address);
  
  radio.begin();

    radio.openReadingPipe(1,talking_pipes[0]);
    radio.openReadingPipe(2,talking_pipes[1]);
    radio.openReadingPipe(3,talking_pipes[2]);
    radio.openReadingPipe(4,talking_pipes[3]);
    radio.openReadingPipe(5,talking_pipes[4]);
    
  radio.startListening();
  radio.printDetails();
}

void loop(void)
{
    uint8_t pipe_num;
    if ( radio.available(&pipe_num) )
    {
      unsigned long Status;
      bool done = false;
      while (!done)
      {
        done = radio.read( &Status, sizeof(unsigned long) );
        printf("Empfange payload %lu von node %i...",Status,pipe_num+1);
      }
      
      radio.stopListening();
      radio.openWritingPipe(listening_pipes[pipe_num-1]);
      uint16_t pipe_id = listening_pipes[pipe_num-1] & 0xffff;

      radio.write( &Szene, sizeof(unsigned long) );
      printf("Sende Rueckmeldung %lu an %04x.\n\r",Szene,pipe_id);

      radio.startListening();
    }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Messchieber auslesen mit nem UNO roadcaptain 8 286 15.11.2016 14:30
Letzter Beitrag: Tommy56
  U-blox Neo 6M GPS auslesen Matthias_Arduino 15 864 09.11.2016 16:40
Letzter Beitrag: AvrRobot
  mit Attiny85 Feuchtigkeitssensor auslesen toto1975 17 554 19.08.2016 22:40
Letzter Beitrag: hotsystems
  Encoder auslesen Phil333 1 661 23.03.2016 21:40
Letzter Beitrag: hotsystems
Question DUE I2C Sensoren ummappen Stephan_56 3 391 15.03.2016 22:52
Letzter Beitrag: hotsystems
  "WORT" über die serielle Schnittstelle auslesen hannes77 1 518 08.03.2016 12:13
Letzter Beitrag: Binatone
  Probleme beim Auslesen eines IR Empfängers linuxpaul 7 571 06.03.2016 14:44
Letzter Beitrag: hotsystems
  Problem bei Aktorpositionierung via Hall-Sensoren Corban 0 277 22.02.2016 14:39
Letzter Beitrag: Corban
  Elro HIS20m Wandsender 433MHz auslesen mayrst 6 938 10.02.2016 12:33
Letzter Beitrag: mayrst
  Wetterdaten von Yahoo auslesen nowak222 12 1.264 08.02.2016 16:33
Letzter Beitrag: ardu_arne

Gehe zu:


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