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
NRF24 soll Daten empfangen und senden...
08.06.2015, 18:19
Beitrag #1
NRF24 soll Daten empfangen und senden...
Hallo zusammen,

ich habe eine Steuerung für meine Lampen gebastelt die gut funktioniert. Eine "Zentrale" definiert bestimmte Programme- standardmäßig automatisch nach Uhrzeit- man kann aber auch manuell eingreifen.

Diese Programmvorgabe wird via NRF24 gesendet- ohne bestimmte Adressierung.

aktuell 8 Lampen empfangen das Signal und stellen bei Bewegung, die mit einem PIR erkannt wird eine bestimmte Helligkeit und Farbe des Lichts ein... so habe ich überwiegend immer und überall in meiner Wohnung das passende Licht.

Nun habe ich noch einen externen Sensor gebaut, der das Außenlicht erfaßt- Helligkeit und Farbe. Das funktioniert soweit auch. Der soll nun aber diese Werte an die Zentrale senden.

Dafür muß also die Zentrale 2 Kanäle handhaben können- einen zum Empfangen des Außenlichtdaten, einen zum Senden der Programmvorgabe... bei mir scheitert es aber schon daran zu verstehen wie ich die Kanäle definiere- also 2 verschiedene... Ich bin mir auch nicht sicher, wie ich die Bedeutung der "Nodes" aus dem Beispielprogramm verstehen soll...

Ich hoffe ihr könnt mir auf die Sprünge helfen...

Zentral:
Code:
#include <DS1307RTC.h>    
#include <Wire.h>  
#include <Time.h>  
#include <TimeAlarms.h>
#include <FastLED.h>
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>

#define DATA_PIN 8
#define NUM_LEDS 7
#define CHIPSET NEOPIXEL
#define COLOR_ORDER GRB
//#define BRIGHTNESS 55
//int sensorPin = A0;  
int sensorValue = 0;
tmElements_t tm;
int Scene = 1;
int blau = 1;
int Sende = 1;
int inSwitch1 = 7;
int inSwitch2 = 6;
unsigned long switch1ActiveTime = 0;
const unsigned long intervalSwitch1Active = 1000;
CRGB leds[NUM_LEDS];

RF24 radio(9,10);
RF24Network network(radio);
const uint16_t this_node = 1;
const uint16_t other_node = 0;
const uint16_t onemore_node = 2;
const unsigned long interval = 2000;
unsigned long last_sent;
unsigned long packets_sent;

struct payload_t
{
  unsigned long ms;
  unsigned long counter;
};

struct aussensensor_t
{
  unsigned long ms;
  unsigned long aussen;
};

void setup(void)
{
  Serial.begin(57600);
  Serial.println("RF24Network/examples/helloworld_tx/");
  setSyncProvider(RTC.get);

    FastLED.addLeds<CHIPSET, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
    LEDS.setBrightness(25);
  // create the alarms
  //Alarm.alarmRepeat(6,20,0,Scene02);
  //Alarm.alarmRepeat(7,30,0,Scene03);
  Alarm.alarmRepeat(13,30,0,Scene04);
  Alarm.alarmRepeat(17,30,0,Scene05);
  Alarm.alarmRepeat(19,30,0,Scene06);
  Alarm.alarmRepeat(22,0,0,Scene07);
  Alarm.alarmRepeat(22,20,0,Scene08);
  //Alarm.alarmRepeat(21,45,0,Scene09);
  //Alarm.alarmRepeat(23,10,0,Scene10);
  //Alarm.alarmRepeat(22,10,0,Scene0);
  Alarm.alarmRepeat(dowMonday,7,30,30,Scene01);  
  Alarm.alarmRepeat(dowTuesday,7,30,30,Scene01);
  Alarm.alarmRepeat(dowWednesday,7,30,30,Scene01);
  Alarm.alarmRepeat(dowThursday,7,30,30,Scene01);
  Alarm.alarmRepeat(dowFriday,7,30,30,Scene01);
  Alarm.alarmRepeat(dowSaturday,7,40,30,Scene01);
  Alarm.alarmRepeat(dowSunday,7,40,30,Scene01);
  Alarm.alarmRepeat(dowMonday,8,50,30,Scene02);  
  Alarm.alarmRepeat(dowTuesday,8,50,30,Scene02);
  Alarm.alarmRepeat(dowWednesday,8,50,30,Scene02);
  Alarm.alarmRepeat(dowThursday,8,50,30,Scene02);
  Alarm.alarmRepeat(dowFriday,8,50,30,Scene02);
  Alarm.alarmRepeat(dowSaturday,8,40,30,Scene02);
  Alarm.alarmRepeat(dowSunday,8,40,30,Scene02);
  Alarm.alarmRepeat(dowMonday,11,0,30,Scene03);  
  Alarm.alarmRepeat(dowTuesday,11,0,30,Scene03);
  Alarm.alarmRepeat(dowWednesday,11,0,30,Scene03);
  Alarm.alarmRepeat(dowThursday,11,0,30,Scene03);
  Alarm.alarmRepeat(dowFriday,11,0,30,Scene03);
  Alarm.alarmRepeat(dowSaturday,10,45,30,Scene03);
  Alarm.alarmRepeat(dowSunday,10,45,30,Scene03);
  Alarm.alarmRepeat(dowMonday,21,55,30,Scene10);  
  Alarm.alarmRepeat(dowTuesday,21,55,30,Scene10);
  Alarm.alarmRepeat(dowWednesday,21,55,30,Scene10);
  Alarm.alarmRepeat(dowThursday,21,55,30,Scene10);
  Alarm.alarmRepeat(dowFriday,22,45,30,Scene10);
  Alarm.alarmRepeat(dowSaturday,22,45,30,Scene10);
  Alarm.alarmRepeat(dowSunday,21,55,30,Scene10);
  //Alarm.timerRepeat(30, Repeats);
    
  bool parse=false;
  bool config=false;
    if (getDate(__DATE__) && getTime(__TIME__))
  {
    parse = true;
    if (RTC.write(tm))
    {
      config = true;
    }
}


  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 50, /*node address*/ this_node);
  
      int i = 0;
  while (timeStatus() == timeNotSet) {
                Serial.println("Unable to sync with the RTC");
        leds[i] = CRGB::Orange;
        FastLED.show(85);

        delay(300);
        leds[i++] = CRGB::Black;
        if (i == NUM_LEDS)
            i = 0;

        leds[0] = CRGB::Green;
        FastLED.show(35);

            }

                Serial.println("RTC has set the system time");

                
tmElements_t tm;
setSyncProvider(RTC.get); // holen Zeit von RTC(Uhr)

  if (RTC.read(tm))
  {
    Serial.print("Ok, Time = ");
    print2digits(tm.Hour);
    Serial.write(':');
    print2digits(tm.Minute);
    Serial.write(':');
    print2digits(tm.Second);
    Serial.print(", Date (D/M/Y) = ");
    Serial.print(tm.Day);
    Serial.write('/');
    Serial.print(tm.Month);
    Serial.write('/');
    Serial.print(tmYearToCalendar(tm.Year));
    Serial.println();
  } else
  {
    if (RTC.chipPresent())
    {
      Serial.println("The DS1307 is stopped.  Please run the SetTime");
      Serial.println("example to initialize the time and begin running.");
      Serial.println();
    } else {
      Serial.println("DS1307 read error!  Please check the circuitry.");
      Serial.println();
    }
    delay(90);
  }
  delay(10);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    Serial.write('0');
  }
  Serial.print(number);
}


void Scene0()
{
  Serial.println("00");
  Scene = 0;
}
void Scene01()
{
  Serial.println("01");
  Scene = 1;
}

void Scene02()
{
  Serial.println("02");
  Scene = 2;
}
void Scene03()
{
  Serial.println("03");
  Scene = 3;
}
void Scene04()
{
  Serial.println("04");
  Scene = 4;
}
void Scene05()
{
  Serial.println("05");
  Scene = 5;
}
void Scene06()
{
  Serial.println("06");
  Scene = 6;
}
void Scene07()
{
  Serial.println("07");
  Scene = 7;
}
void Scene08()
{
  Serial.println("08");
  Scene = 8;
}

void Scene09()
{
  Serial.println("09");
  Scene = 9;
}

void Scene10()
{
  Serial.println("10");
  Scene = 10;
}

void Scene11()
{
  Serial.println("11");
  Scene = 11;
}

void Scene12()
{
  Serial.println("12");
  Scene = 12;
}
void Scene13()
{
  Serial.println("13");
  Scene = 13;
}
void Scene14()
{
  Serial.println("14");
  Scene = 14;
}
void Scene15()
{
  Serial.println("15");
  Scene = 15;
}
void Scene16()
{
  Serial.println("16");
  Scene = 16;
}
void Scene17()
{
  Serial.println("17");
  Scene = 17;
}


/*void Repeats(){
  Serial.println("Testsignal");        
  Scene = 99;
}  
*/

void loop(void)
{
  Alarm.delay(10);
  
  tmElements_t tm;
  network.update();
  
  if ((digitalRead(inSwitch1) == LOW) && Scene < 10)
  {
        Serial.print("Switch 1 pressed!\n\r");
                Scene = Scene + 1;
                delay(100);
  }
  if ((digitalRead(inSwitch2) == LOW) && Scene > 0)
  {
        Serial.print("Switch 2 pressed!\n\r");
                Scene = Scene - 1;
                delay(100);
  }
            leds[Scene] = CRGB::Cyan;
            FastLED.show(55);
            leds[Scene - 1] = CRGB::Black;
            FastLED.show();
            leds[Scene + 1] = CRGB::Black;
            FastLED.show();

        leds[0] = CRGB::Green;
        FastLED.show(25);
                delay(30);

    if (sensorValue < 2000)
  {
    Sende = Scene;
  }  
  
  else
  {
    Sende = 0;
  }
{
  unsigned long now = millis();
  if ( now - last_sent >= interval  )
    last_sent = now;
    RTC.read;
    Serial.print("Helligkeit: ");
    Serial.println(blau);
    Serial.println(",  Sending...");
    
    payload_t payload = { millis(), Sende };
    RF24NetworkHeader header(/*to node*/ other_node);
    bool ok = network.write(header,&payload,sizeof(payload));
    if (ok)
    {
      Serial.println("ok-  ");
      Serial.println("Szenario:  ");
      Serial.println(Sende);
              leds[0] = CRGB::Green;
        FastLED.show(55);
    }
    else
      Serial.println("failed.");
              leds[0] = CRGB::Red;
        FastLED.show(75);
  }
  
    RF24NetworkHeader header;
    payload_t payload;
    network.read(header,&payload,sizeof(payload));
    Serial.print("blauaussen: ");
    Serial.println(payload.counter);
    blau = payload.counter;
}

const char *monthName[12] = {
  "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};

bool getTime(const char *str)
{
  int Hour, Min, Sec;
  if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
  tm.Hour = Hour;
  tm.Minute = Min;
  tm.Second = Sec;
  return true;
}

bool getDate(const char *str)
{
  char Month[12];
  int Day, Year;
  uint8_t monthIndex;
  if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;
  for (monthIndex = 0; monthIndex < 12; monthIndex++) {
  if (strcmp(Month, monthName[monthIndex]) == 0) break;
  }
  if (monthIndex >= 12) return false;
  tm.Day = Day;
  tm.Month = monthIndex + 1;
  tm.Year = CalendarYrToTm(Year);
  return true;
}

Beispiel eines Empfängers:

Code:
#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>
#include <Time.h>      
#include <TimeAlarms.h>

RF24 radio(9,10);
RF24Network network(radio);
const uint16_t this_node = 0;
const uint16_t other_node = 1;
struct payload_t
{
  unsigned long ms;
  unsigned long counter;
};

int Scene = 1;
const int sensorPinoben = 4;  // sensor pin
const int sensorPinunten = 2;
int sensorStateoben = 0;
int sensorStateunten = 0;
int ledoben = 6;    // output (LED) pin 1
int ledmitte = 5;
int ledunten = 3;
int fadeAmount = 1;
int brightnessoben = 175;
int brightnessobenneu = 1;
int brightnessmitte = 175;
int brightnessmitteneu = 1;
int brightnessunten = 175;
int brightnessuntenneu = 1;
int stepupoben = 5; //ms pro Helligkeitswert heller
int stepdownoben = 10; //ms pro Helligkeitswert dunkler
long holdtimeoben = 5000; //ms Haltezeit
int stepupmitte = 15; //ms pro Helligkeitswert heller
int stepdownmitte = 20; //ms pro Helligkeitswert dunkler
long holdtimemitte = 10000; //ms Haltezeit
int stepupunten = 30; //ms pro Helligkeitswert heller
int stepdownunten = 50; //ms pro Helligkeitswert dunkler
long holdtimeunten = 20000; //ms Haltezeit

void setup(void)
{
  Serial.begin(57600);
  Serial.println("Empfange Szenario");

  SPI.begin();
  radio.begin();
  network.begin(/*channel*/ 50, /*node address*/ this_node);
  
  pinMode(sensorPinoben, INPUT);  
  pinMode(sensorPinunten, INPUT);
  pinMode(ledoben, OUTPUT);
  pinMode(ledmitte, OUTPUT);
  pinMode(ledunten, OUTPUT);
}

void loop(void)
{
static unsigned long lastHighoben = 0;  
static int lastSensorStateoben = LOW;  
static unsigned long lastHighunten = 0;
static int lastSensorStateunten = LOW;

analogWrite(ledoben, brightnessobenneu);
analogWrite(ledmitte, brightnessmitteneu);
analogWrite(ledunten, brightnessuntenneu);

if (brightnessobenneu < brightnessoben)
   {
    brightnessobenneu++ ;
    delay(stepupoben);
   }  
else if (brightnessobenneu > brightnessoben)
   {
    brightnessobenneu-- ;
   delay(stepdownoben);
   }
else
   {
     brightnessobenneu = brightnessoben;
   }

if (brightnessmitteneu < brightnessmitte)
   {
    brightnessmitteneu++ ;
    delay(stepupmitte);
   }  
else if (brightnessmitteneu > brightnessmitte)
   {
    brightnessmitteneu-- ;
   delay(stepdownmitte);
   }
else
   {
     brightnessmitteneu = brightnessmitte;
   }
  
if (brightnessuntenneu < brightnessunten)
   {
    brightnessuntenneu++ ;
    delay(stepupunten);
   }  
else if (brightnessuntenneu > brightnessunten)
   {
    brightnessuntenneu-- ;
   delay(stepdownunten);
   }
else
   {
     brightnessuntenneu = brightnessunten;
   }

Serial.print(" - Szene ");
Serial.print(Scene);
Serial.print(" - PIR: ");
Serial.print(sensorStateoben);
Serial.print("  - PIR: ");
Serial.print(sensorStateunten);
Serial.print(" - LED oben: ");
Serial.print(brightnessobenneu);
Serial.print(" - LED mitte: ");
Serial.println(brightnessmitteneu);
Serial.print(" - LED unten: ");
Serial.println(brightnessuntenneu);

  network.update();
  while ( network.available() )
  {
    RF24NetworkHeader header;
    payload_t payload;
    network.read(header,&payload,sizeof(payload));
    Serial.print("Szenario- Vorgabe: ");
    Serial.println(payload.counter);
    Scene = payload.counter;
  }

sensorStateoben = digitalRead(sensorPinoben);
unsigned long now = millis();  

if (sensorStateoben == LOW && now - lastHighoben > holdtimeoben)  
{
  Szene0ob();
}

if (sensorStateoben == HIGH)
   lastHighoben = now;    

if (sensorStateoben == HIGH && lastSensorStateoben == LOW)  
{

    switch (Scene)
    {
      case 0:
      Szene0ob();
         Serial.println("Start- Scene");
      break;
      
      case 1:
      Szene1ob();
         Serial.println("Scene 1");
      break;
      
      case 2:
      Szene2ob();
         Serial.println("Scene 2");
      break;
      
      case 3:
      Szene3ob();
         Serial.println("Scene 3");
      break;
      
      case 4:
      Szene4ob();
         Serial.println("Scene 4");
      break;
      
      case 5:
      Szene5ob();
         Serial.println("Scene 5");
      break;
      
      case 6:
      Szene6ob();
         Serial.println("Scene 6");
      break;
      
      case 7:
      Szene7ob();
         Serial.println("Scene 7");
      break;
      
      case 8:
      Szene8ob();
         Serial.println("Scene 8");
      break;
      
      case 9:
      Szene9ob();
         Serial.println("Scene 9");
      break;
      
      case 10:
      Szene10ob();
         Serial.println("Scene 10");
      break;
      
      case 11:
      Szene11ob();
         Serial.println("Scene 11");
      break;
      
      case 12:
      Szene12ob();
         Serial.println("Scene 12");
      break;
      
      case 13:
      Szene13ob();
         Serial.println("Scene 13");
      break;
      
      case 14:
      Szene14ob();
         Serial.println("Scene 14");
      break;
            
      case 15:
      Szene15ob();
         Serial.println("Scene 15");
      break;
      
      case 16:
      Szene16ob();
         Serial.println("Scene 16");
      break;
      
      case 17:
      Szene17ob();
         Serial.println("Scene 17");
      break;
      
      default:
         Serial.println("keine Scene erkannt");
        
    }
  }
lastSensorStateoben = sensorStateoben;  

sensorStateunten = digitalRead(sensorPinunten);

if (sensorStateunten == LOW && now - lastHighunten > holdtimeunten)  
{
  Szene0un();
}

if (sensorStateunten == HIGH)
   lastHighunten = now;  

if (sensorStateunten == HIGH && lastSensorStateunten == LOW)  
{

    switch (Scene)
    {
      case 0:
      Szene0un();
         Serial.println("Start- Scene");
      break;
      
      case 1:
      Szene1un();
         Serial.println("Scene 1");
      break;
      
      case 2:
      Szene2un();
         Serial.println("Scene 2");
      break;
      
      case 3:
      Szene3un();
         Serial.println("Scene 3");
      break;
      
      case 4:
      Szene4un();
         Serial.println("Scene 4");
      break;
      
      case 5:
      Szene5un();
         Serial.println("Scene 5");
      break;
      
      case 6:
      Szene6un();
         Serial.println("Scene 6");
      break;
      
      case 7:
      Szene7un();
         Serial.println("Scene 7");
      break;
      
      case 8:
      Szene8un();
         Serial.println("Scene 8");
      break;
      
      case 9:
      Szene9un();
         Serial.println("Scene 9");
      break;
      
      case 10:
      Szene10un();
         Serial.println("Scene 10");
      break;
      
      case 11:
      Szene11un();
         Serial.println("Scene 11");
      break;
      
      case 12:
      Szene12un();
         Serial.println("Scene 12");
      break;
      
      case 13:
      Szene13un();
         Serial.println("Scene 13");
      break;
      
      case 14:
      Szene14un();
         Serial.println("Scene 14");
      break;
            
      case 15:
      Szene15un();
         Serial.println("Scene 15");
      break;
      
      case 16:
      Szene16un();
         Serial.println("Scene 16");
      break;
      
      case 17:
      Szene17un();
         Serial.println("Scene 17");
      break;
      
      default:
         Serial.println("keine Scene erkannt");
        
    }
  }
lastSensorStateunten = sensorStateunten;  
}

void Szene0ob()
{
  brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  /*brightnessunten = 0;
  stepupoben = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;*/
}

void Szene1ob()
{
  brightnessoben = 255;
  stepupoben = 10;
  stepdownoben = 100;
  holdtimeoben = 200000;  
  brightnessmitte = 155;
  stepupmitte = 10;
  stepdownmitte = 200;
  holdtimemitte = 20000;  
  brightnessunten = 125;
  stepupunten = 10;
  stepdownunten = 500;
  holdtimeunten = 20000;
}

void Szene2ob()
{
  brightnessoben = 155;
  stepupoben = 10;
  stepdownoben = 500;
  holdtimeoben = 200000;  
  brightnessmitte = 195;
  stepupmitte = 10;
  stepdownmitte = 200;
  holdtimemitte = 100000;  
  brightnessunten = 30;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene3ob()
{  
  brightnessoben = 155;
  stepupoben = 10;
  stepdownoben = 500;
  holdtimeoben = 200000;  
  brightnessmitte = 255;
  stepupmitte = 10;
  stepdownmitte = 200;
  holdtimemitte = 50000;  
  brightnessunten = 50;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene4ob()
{
  brightnessoben = 155;
  stepupoben = 10;
  stepdownoben = 200;
  holdtimeoben = 200000;  
  brightnessmitte = 55;
  stepupmitte = 10;
  stepdownmitte = 500;
  holdtimemitte = 50000;  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene5ob()
{
  brightnessoben = 205;
  stepupoben = 10;
  stepdownoben = 200;
  holdtimeoben = 200000;  
  brightnessmitte = 255;
  stepupmitte = 10;
  stepdownmitte = 500;
  holdtimemitte = 50000;  
  brightnessunten = 205;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene6ob()
{
  brightnessoben = 65;
  stepupoben = 10;
  stepdownoben = 200;
  holdtimeoben = 200000;  
  brightnessmitte = 35;
  stepupmitte = 10;
  stepdownmitte = 500;
  holdtimemitte = 50000;  
  brightnessunten = 35;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene7ob()
{
  brightnessoben = 65;
  stepupoben = 10;
  stepdownoben = 200;
  holdtimeoben = 200000;  
  brightnessmitte = 35;
  stepupmitte = 10;
  stepdownmitte = 500;
  holdtimemitte = 50000;  
  brightnessunten = 65;
  stepupunten = 10;
  stepdownunten = 500;
  holdtimeunten = 150000;
}

void Szene8ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 5;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 15;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene9ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 2;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 3;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene10ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 2;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 3;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene11ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 2;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 3;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene12ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 2;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 3;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene13ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 2;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 3;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene14ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 2;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 3;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene15ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 2;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 3;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene16ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 2;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 3;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene17ob()
{
  brightnessoben = 5;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 2;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;  
  brightnessunten = 3;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}


void Szene0un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/
  brightnessunten = 0;
  stepupunten = 10;
  stepdownunten = 50;
  holdtimeunten = 2000;
}

void Szene1un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 255;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 20000;
}

void Szene2un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 155;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 15000;
}

void Szene3un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 255;
  stepupunten = 10;
  stepdownunten = 180;
  holdtimeunten = 10000;
}

void Szene4un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 155;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 20000;
}

void Szene5un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 255;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 20000;
}

void Szene6un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 155;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 20000;
}

void Szene7un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 75;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 20000;
}

void Szene8un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

void Szene9un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

void Szene10un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

void Szene11un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

void Szene12un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

void Szene13un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

void Szene14un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

void Szene15un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

void Szene16un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

void Szene17un()
{
  /*brightnessoben = 0;
  stepupoben = 10;
  stepdownoben = 50;
  holdtimeoben = 2000;  
  brightnessmitte = 0;
  stepupmitte = 10;
  stepdownmitte = 50;
  holdtimemitte = 2000;*/  
  brightnessunten = 25;
  stepupunten = 10;
  stepdownunten = 120;
  holdtimeunten = 2000;
}

und der Außensensor:


#include <RF24Network.h>
#include <RF24.h>
#include <SPI.h>


int sensorblauPIN = A7;
int sensorblau = 0;
int sensorgruenPIN = A6;
int sensorgruen = 0;
int sensorrotPIN = A5;
int sensorrot = 0;

RF24 radio(9,10);

RF24Network network(radio);
const uint16_t this_node = 2;
const uint16_t other_node = 1;
const unsigned long interval = 2000;
unsigned long last_sent;
unsigned long packets_sent;

struct payload_t
{
unsigned long ms;
unsigned long counter;
};

void setup(void)
{
Serial.begin(57600);
Serial.println("RF24Network/examples/helloworld_tx/");

SPI.begin();
radio.begin();
network.begin(/*channel*/ 90, /*node address*/ this_node);
}

void loop(void)
{
sensorblau = analogRead(sensorblauPIN);
sensorgruen = analogRead(sensorgruenPIN);
sensorrot = analogRead(sensorrotPIN);
network.update();

unsigned long now = millis();
if ( now - last_sent >= interval )
{
last_sent = now;

Serial.print("blau: ");
Serial.println(sensorblau);
Serial.print("gruen: ");
Serial.println(sensorgruen);
Serial.print("rot: ");
Serial.println(sensorrot);
Serial.println(", Sending...");
payload_t payload = { millis(), sensorblau };
RF24NetworkHeader header(/*to node*/ other_node);
bool ok = network.write(header,&payload,sizeof(payload));
if (ok)
Serial.println("ok.");
else
Serial.println("failed.");
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.06.2015, 19:04
Beitrag #2
RE: NRF24 soll Daten empfangen und senden...
Hi,
was spricht dagegen, einfach mit network.available abzufragen, ob etwas empfangen wurde und dann mit network.read die Daten zu lesen.
Es kann dann natürlich passieren, dass die Zentrale und der Sensor gleichzeitig senden, aber das ist womöglich nicht so schlimm oder sogar schon irgendwo im "network" geregelt. Ansonsten muss man sich dazu ein kleines Protokoll ausdenken.
Gruß,
Thorsten

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
08.06.2015, 19:36
Beitrag #3
RE: NRF24 soll Daten empfangen und senden...
Hallo Thorsten,

ich möchte nach und nach tiefer in die Thematik einsteigen und auch mal den PIR einer Lampe nutzen, um der Zentrale eine Info zu senden...

dafür möchte ich verstehen, wie man verschiedene Kanäle handhaben kann, um die Informationen sauber zu trennen...

Also sollte der Außensensor z.B. auf Kanal 49 senden, die Zentrale auf 50...

allerdings habe ich noch nicht ganz verstanden, wie ich zum senden und empfangen immer zwischen den Kanälen umschalten kann....
Prinzipiell ist mir der Rolle der Nodes noch nicht klar... in einer anderen Beschreibung habe ich gesehen, dass man über "Pipes" Daten trennen kann... das ist mir aber genau so wenig verständlich....
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 574 01.12.2016 19:36
Letzter Beitrag: MeisterQ
  Data Logger Daten auf SD Card schreiben Crichton 12 310 22.11.2016 18:32
Letzter Beitrag: Crichton
  I2C Daten übertragen Gandalf 3 216 04.11.2016 13:20
Letzter Beitrag: hotsystems
  Daten über USB verarbeiten Felix91 10 326 12.10.2016 13:00
Letzter Beitrag: Tommy56
  nrf24 an Mega 2560 jgrothe 2 164 10.09.2016 13:39
Letzter Beitrag: jgrothe
  Temperatur mit nrf24 übertragen jgrothe 17 672 09.09.2016 14:01
Letzter Beitrag: jgrothe
  Can-Bus Shield ok, aber keine Daten Clubsport 38 1.540 01.09.2016 14:17
Letzter Beitrag: Clubsport
  NRF24L01+ "Ping" senden, empfangen, bestätigen MeisterQ 8 387 23.08.2016 13:19
Letzter Beitrag: MeisterQ
  Servo soll nur in Ruhelage stoppen Sven1996 1 240 19.08.2016 14:37
Letzter Beitrag: StephanBuerger
  Daten an mysql diode1990 24 1.308 31.07.2016 10:29
Letzter Beitrag: Gandalf

Gehe zu:


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