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:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Lampennetzwerk nrf24 Gen.3 - Ideensammlung
06.01.2016, 07:48 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2016 13:57 von MaHaI976.)
Beitrag #1
Lampennetzwerk nrf24 Gen.3 - Ideensammlung
Hallo in die Runde,

einige haben vielleicht die 1. Generation meines Lampennetzwerkes mitbekommen, nach dem ich eine verfeinerte Variante bei meinen Eltern installiert habe möchte ich mich nun an die Umsetzung eines ausgeklügelteren Systems machen und hoffe auf ein paar Tipps aus dem Forum...

Die erste Generation basiert auf Maniacbugs Entwicklung und hat eine "Zentrale" mit nano, RTC, Helligkeitssenor, LEDs und einem nrf24. Diese sendet Programmvorgaben 1- 10 in den Raum, abhängig von Uhrzeit und Helligkeit.
Jede Lampe (alle mit selber Adresse) empfängt diese und setzt diese in eine bestimmte Beleuchtung um, so bald eine Bewegung über einen PIR erkannt wird. Die Werte für Helligkeit, Farbe, Fadingverhalten und Haltedauer sind in den Lampen hinterlegt.
Der Vorteil dieses Systems besteht darin, dass ich jederzeit eine weitere Lampe in Betrieb nehmen kann, ohne diese im System anzumelden.
Der klare Nachteil besteht darin, dass es keine echte Kommunikation gibt und jede Lampe für sich werkelt.

Bei meinen Eltern habe ich das erste mal mit der Zuordnung der einzelnen Lampen mit konkreten Adressen und der Kommunikation über Pipes begonnen. Diese funktioniert in beide Richtungen.
Somit hat diese Zentrale schon ein TFT, was alle möglichen Infos anzeigt, ein RTC und auch einen IR- Empfänger für eine Fernbedienung.
Die Steuerung verteilt noch immer einfach nur Programmnummer- mit der Fernbedienung sind das aber schon 50 verschiedene Programme und dank der verschiedenen Pipes kann ich da jeder Lampe ein anderes Programm zuweisen. Bis auf 2 Denkfehler an denen ich noch grübele läuft das echt gut.

Bei der 3. Generation möchte ich nun einen Schritt weiter gehen was die Adressierung angeht- ich möchte mich mal an einen Baum waagen, wobei ich bei den ersten Versuchen noch keinen richtigen Erfolg hatte.... aber das wird schon noch...
Ich möchte dafür in jedem Raum ca. 3 Sensoren einsetzen, die ich in ein Steckernetzteil wie Handyladegerät integrieren möchte und dann einfach in die Steckdose stecke die günstig positioniert ist.
Jeder Sensor soll 3x W2812 LEDs enthalten für einfache Statusanzeigen, einen PIR einen Helligkeitssensor und einen IR- Empfänger. Es wird hierfür dann eine Fernbedienung geben, mit der ich das Licht manuell steuern kann und eine "Service- Fernbedienung" mit der ich Einstellungen wie die Adresse ändern und im EEPROM speichern kann. Darüber hinaus wird es noch Sensoren geben, die ich an meinen HiFi Receiver anschließe und die dann Meldung geben, wenn ich Musik oder TV anmache.
Diese Sensoren sollen Ihren Status an die Haupt-Lampe im jeweiligen Raum senden.
Diese soll dann als ersten Schritt das Licht hochfahren und parallel an Tochter- Lampen im selben Raum die einzustellenden Farbe und Helligkeit senden... je nach Raum sind das 1- 2 Tochter-Lampen.
Parallel dazu senden die Lampen den Status an die Zentrale. Die Zentrale soll dann die Bewegungen in den verschiedenen Räumen auswerten. Und dann der aktiven Lampen ergänzende Daten zur Zielfarbe und -Helligkeit senden.
Ist z.b. in der Küche Bewegung werden die Lampen angeschalten- konzentriert sich die Bewegung um den Herd wird die Raumbeleuchtung reduziert und die Arbeitsbeleuchtung maximiert. Ist keine Bewegung mehr erkennbar wird z.b. die Raumbeleuchtung erhöht, die Arbeitsbeleuchtung aber redudziert, da ich am Herd kaum einschlafen werde- am Tisch aber vielleicht lese und daher still sitze...
Bleibt in der Küche alles still und es wird eine Bewegung im Flur erkannt soll das die Zentrale als Verlassen der Küche werten (so lange es da still bleibt) und umgehend das Licht im Flur aktivieren und in der Küche das Licht ausblenden (das ist eine recht einfache Logik, wo ich keine Probleme erwarte...)

Was für mich noch Neuland ist ist das Setzen von Werten im EEPROM...

Und mit der Adressierung der Pipes habe ich noch Verständnisprobleme... Die versuche ich mal noch mit drastisch reduzierten Sketches nach zu schieben und näher zu erörtern...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2016, 13:56
Beitrag #2
RE: Lampennetzwerk nrf24 Gen.3 - Ideensammlung
(06.01.2016 07:48)MaHaI976 schrieb:  ...
Was für mich noch Neuland ist ist das Setzen von Werten im EPROM...
...

Hallo,
du meinst sicherlich ein/das EEPROM ? Weil da gibt es einen feinen Unterschied was die Funktion angeht...
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2016, 13:58 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2016 21:50 von MaHaI976.)
Beitrag #3
RE: Lampennetzwerk nrf24 Gen.3 - Ideensammlung
Danke für den Hinweis- hab es korrigiert- ich sage ja- es ist Neuland in jeder Hinsicht ;-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2016, 20:50 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2016 21:49 von MaHaI976.)
Beitrag #4
RE: Lampennetzwerk nrf24 Gen.3 - Ideensammlung
[quote='MaHaI976' pid='26358' dateline='1452085083']
Danke für den Hinweis- hab es korrigiert- ich sage ja- es ist Neuland in jeder Hinsicht ;-)

So, ich habe mal schon einen "Sensor" zusammengelötet und einen Sketch gebastelt.... Als IR- Fernbedienung habe ich die die bei den ganzen RGB Streifen aus China immer mit dabei... Das sollte eine simple Basis für den Nachbau sein... (darin sehe ich den Sinn hier möglichst viel zu dokumentieren und mit dem Forum alles Schritt für Schritt zu machen- ich hoffe auf viele Nachahmer)

Basis für meinen Sketch ist das alte RF24 "getting startet" . Ich habe das eigentliche Handling der Daten noch nicht drin.... erst mal nur die Basis um mit die Kommunikation auf zu bauen...

Der Sketch für die Sensoren:
Code:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "IRremote.h"
#include "FastLED.h"

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 };

uint8_t node_address;
int node_ebene1;
int master_node;

int receiver = 3;
IRrecv irrecv(receiver);      
decode_results results;
int IRStatus;

int PIR;
int sensorPin = 4;

long Sensor[6];
long Status[6];

#define DATA_PIN 2
#define NUM_LEDS 3
CRGB leds[NUM_LEDS];

void setup(void)
{
    node_address = 11; //oder 12, 13, 14, 15, Ebene darunter 111,121,131,141,151,112,122,132,142,152....)
    node_ebene1 = 121;

  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  
  pinMode(sensorPin, INPUT);
  irrecv.enableIRIn();

    leds[0] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[0] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Orange;
    FastLED.show();
    delay(200);    
    leds[0] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Black;
    FastLED.show();
    
  Serial.begin(57600);
  Serial.println("\n\rRF24/examples/starping/\n\r");
  Serial.print("ADDRESS: ");
  Serial.println(node_ebene1);

  radio.begin();

    radio.openWritingPipe(talking_pipes[master_node]);
    radio.openReadingPipe(1,listening_pipes[master_node]);

  radio.startListening();
  radio.printDetails();
}

void loop(void)
{
    leds[0] = CRGB::Black;
    FastLED.show();
    leds[1] = CRGB::Black;
    FastLED.show();
    leds[2] = CRGB::Black;
    FastLED.show();
    
PIR = digitalRead(sensorPin);
    if (PIR == LOW)
         {  
                leds[1] = CRGB::Green;
        FastLED.show();
                Serial.println("Bewegung erkannt.");
         }
    else
         {
                leds[1] = CRGB::Red;
        FastLED.show();
                Serial.println("keine Bewegung.");  
         }
        
if (irrecv.decode(&results))
  {
    translateIR();
    irrecv.resume();
  }  
  Sensor[0] = IRStatus;
  Sensor[1] = PIR;

  //sende den Status an Ebene1 und warte auf Rückmeldung
   radio.stopListening();
    unsigned long time = millis();
    Serial.println("Sende Sensordaten...");
    radio.write(   Sensor, sizeof(Sensor)  );

    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 )
    {
      Serial.println("Failed, response timed out.\n\r");    
                leds[0] = CRGB::Red;
        FastLED.show();
    }
    else
    {
        radio.read( Status, sizeof(Status) );
        Serial.print("empfange Status");
        Serial.println(Status[0]);
        Serial.println(Status[1]);
        Serial.println(Status[2]);
        Serial.println(Status[3]);
        Serial.println(Status[4]);
        Serial.println(Status[5]);  
                leds[0] = CRGB::Green;
        FastLED.show();  
    }
}

void translateIR()
{
  switch(results.value)
{
  case 0xFF3AC5:  
    IRStatus = 0xFF3AC5;
    leds[2] = CRGB::Green;
    FastLED.show();
    Serial.println(" heller            ");
    break;
    
  case 0xFFBA45:  
    IRStatus = 0xFFBA45;
    leds[2] = CRGB::Green;
    Serial.println(" dunkler             ");
    break;
    
  case 0xFF827D:
    IRStatus = 0xFF827D;
    leds[2] = CRGB::Green;
    Serial.println(" abspielen            ");
    break;
    
  case 0xFF02FD:
    IRStatus = 0xFF02FD;
    leds[2] = CRGB::Green;
    Serial.println(" an/aus           ");
    break;
    
  case 0xFF1AE5:
    IRStatus = 0xFF1AE5;
    leds[2] = CRGB::Green;
    Serial.println(" rot           ");
    break;
    
  case 0xFF9A65:  
    IRStatus = 0xFF9A65;
    leds[2] = CRGB::Green;
    Serial.println(" gruen     ");
    break;
    
  case 0xFFA25D:
    IRStatus = 0xFFA25D;
    leds[2] = CRGB::Green;
    Serial.println(" blau           ");
    break;
    
  case 0xFF22DD:
    IRStatus = 0xFF22DD;
    leds[2] = CRGB::Green;
    Serial.println(" weis           ");
    break;
    
  case 0xFF2AD5:
    IRStatus = 0xFF2AD5;
    leds[2] = CRGB::Green;
    Serial.println(" rot-orange             ");
    break;
    
  case 0xFFAA55:  
    IRStatus = 0xFFAA55;
    leds[2] = CRGB::Green;
    Serial.println(" tuerkis              ");
    break;
    
  case 0xFF926D:  
    IRStatus = 0xFF926D;
    leds[2] = CRGB::Green;
    Serial.println(" hellblau           ");
    break;

  case 0xFF12ED:  
    IRStatus = 0xFF12ED;
    leds[2] = CRGB::Green;
    Serial.println(" beige           ");
    break;

  case 0xFF0AF5:  
    IRStatus = 0xFF0AF5;
    leds[2] = CRGB::Green;
    Serial.println(" gelb              ");
    break;

  case 0xFF8A75:  
    IRStatus = 0xFF8A75;
    leds[2] = CRGB::Green;
    Serial.println(" hellgruen              ");
    break;

  case 0xFFB24D:  
    IRStatus = 0xFFB24D;
    leds[2] = CRGB::Green;
    Serial.println(" hellblau             ");
    break;

  case 0xFF32CD:
    IRStatus = 0xFF32CD;
    leds[2] = CRGB::Green;
    Serial.println(" warmweis              ");
    break;

  case 0xFF38C7:
    IRStatus = 0xFF38C7;
    leds[2] = CRGB::Green;
    Serial.println(" dunkelgelb              ");
    break;

  case 0xFFB847:
    IRStatus = 0xFFB847;
    leds[2] = CRGB::Green;
    Serial.println(" blassgruen             ");
    break;

  case 0xFF7887:
    IRStatus = 0xFF7887;
    leds[2] = CRGB::Green;
    Serial.println(" blassblau              ");
    break;
    
  case 0xFFF807:
    IRStatus = 0xFFF807;
    leds[2] = CRGB::Green;
    Serial.println(" kaltweis              ");
    break;

  case 0xFF18E7:
    IRStatus = 0xFF18E7;
    leds[2] = CRGB::Green;
    Serial.println(" gelblich              ");
    break;

  case 0xFF9867:
    IRStatus = 0xFF9867;
    leds[2] = CRGB::Green;
    Serial.println(" blau-gruen              ");
    break;

case 0xFF58A7:  
    IRStatus = 0xFF58A7;
    leds[2] = CRGB::Green;
    Serial.println(" violett            ");
    break;

  case 0xFFD827:
    IRStatus = 0xFFD827;
    leds[2] = CRGB::Green;
    Serial.println(" blau-weis            ");
    break;

  case 0xFF28D7:
    IRStatus = 0xFF28D7;
    leds[2] = CRGB::Green;
    Serial.println(" rot+            ");
    break;

  case 0xFFA857:
    IRStatus = 0xFFA857;
    leds[2] = CRGB::Green;
    Serial.println(" gruen+           ");
    break;

  case 0xFF6897:
    IRStatus = 0xFF6897;
    leds[2] = CRGB::Green;
    Serial.println(" blau+           ");
    break;

  case 0xFFE817:
    IRStatus = 0xFFE817;
    leds[2] = CRGB::Green;
    Serial.println(" quick     ");
    break;

  case 0xFF08F7:
    IRStatus = 0xFF08F7;
    leds[2] = CRGB::Green;
    Serial.println(" rot-           ");
    break;

  case 0xFF8877:
    IRStatus = 0xFF8877;
    leds[2] = CRGB::Green;
    Serial.println(" gruen-           ");
    break;

  case 0xFF48B7:
    IRStatus = 0xFF48B7;
    leds[2] = CRGB::Green;
    Serial.println(" blau-             ");
    break;

  case 0xFFC837:
    IRStatus = 0xFFC837;
    leds[2] = CRGB::Green;
    Serial.println(" slow              ");
    break;

  case 0xFF30CF:  
    IRStatus = 0xFF30CF;
    leds[2] = CRGB::Green;
    Serial.println(" DIY1           ");
    break;

  case 0xFFB04F:
    IRStatus = 0xFFB04F;
    leds[2] = CRGB::Green;
    Serial.println(" DIY2           ");
    break;

  case 0xFF708F:
    IRStatus = 0xFF708F;
    leds[2] = CRGB::Green;
    Serial.println(" DIY3              ");
    break;

  case 0xFFF00F:
    IRStatus = 0xFFF00F;
    leds[2] = CRGB::Green;
    Serial.println(" auto              ");
    break;

  case 0xFF10EF:
    IRStatus = 0xFF10EF;
    leds[2] = CRGB::Green;
    Serial.println(" DIY4              ");
    break;

  case 0xFF906F:  
    IRStatus = 0xFF906F;
    leds[2] = CRGB::Green;
    Serial.println(" DIY5              ");
    break;

  case 0xFF50AF:
    IRStatus = 0xFF50AF;
    leds[2] = CRGB::Green;
    Serial.println(" DIY6              ");
    break;

  case 0xFFD02F:
    IRStatus = 0xFFD02F;
    leds[2] = CRGB::Green;
    Serial.println(" flash              ");
    break;

  case 0xFF20DF:
    IRStatus = 0xFF20DF;
    leds[2] = CRGB::Green;
    Serial.println(" Jump3              ");
    break;

  case 0xFFA05F:
    IRStatus = 0xFFA05F;
    leds[2] = CRGB::Green;
    Serial.println(" Jump7              ");
    break;

  case 0xFF609F:
    IRStatus = 0xFF609F;
    leds[2] = CRGB::Green;
    Serial.println(" Fade3              ");
    break;

  case 0xFFE01F:
    IRStatus = 0xFFE01F;
    leds[2] = CRGB::Green;
    Serial.println(" Fade7              ");
    break;
    
  case 0xFFFFFFFF:  
    IRStatus = 0xFFFFFFFF;
    leds[2] = CRGB::Green;
    Serial.println(" Taste halten       ");
    break;
    
  default:
    leds[2] = CRGB::Red;
    Serial.println(" other button   ");
  }

  delay(40);
}

Lampen, die Sensoren und Zentrale verlinken

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

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 };

uint8_t node_address;
uint8_t master_node;

long Sensor[6];
long Status[6];
long Trigger[6];

#define DATA_PIN 4
#define NUM_LEDS 3
CRGB leds[NUM_LEDS];

void setup(void)
{
    node_address = 11; //oder 12, 13, 14, 15, Ebene darunter 111,121,131,141,151,112,122,132,142,152....)
    master_node = 1;
    
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);

  Serial.begin(57600);
  Serial.println("\n\rRF24/examples/starping/\n\r");
  Serial.print("ADDRESS: ");
  Serial.println(node_address);
  
    leds[0] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[0] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Orange;
    FastLED.show();
    delay(200);    
    leds[0] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Black;
    FastLED.show();
    
  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.openWritingPipe(talking_pipes[master_node]);
    radio.openReadingPipe(1,listening_pipes[master_node]);

  radio.startListening();
  radio.printDetails();
}

void loop(void)
{
    leds[0] = CRGB::Black;
    FastLED.show();
    leds[1] = CRGB::Black;
    FastLED.show();
    leds[2] = CRGB::Black;
    FastLED.show();
    
  //sende den Status an den Master und warte auf Rückmeldung
    radio.stopListening();
    Serial.println("Sende...");
    radio.write(  Sensor, sizeof(Sensor) );

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

    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 )
    {
      Serial.println("keine Antwort erhalten.");    
                leds[0] = CRGB::Red;
        FastLED.show();
    }
    else
    {
        radio.read( Status, sizeof(Status) );
        Serial.print("empfange Status");
        Serial.println(Status[0]);
        Serial.println(Status[1]);
        Serial.println(Status[2]);
        Serial.println(Status[3]);
        Serial.println(Status[4]);
        Serial.println(Status[5]);
                leds[0] = CRGB::Green;
        FastLED.show();
    }


    // wenn sich aus der Ebene darunter ein Node meldet, lese die Daten und sende die Antwort
    uint8_t pipe_num;
    if ( radio.available(&pipe_num) )
    {
      unsigned long got_time;
      bool done = false;
      while (!done)
      {
        done = radio.read( Trigger, sizeof(Trigger) );
        Serial.print("Antwort erhalten von: ");
        Serial.println(pipe_num+1);
                leds[2] = CRGB::Green;
        FastLED.show();
      }
      radio.stopListening();
      radio.openWritingPipe(listening_pipes[pipe_num-1]);
      uint16_t pipe_id = listening_pipes[pipe_num-1] & 0xffff;

      radio.write( &got_time, sizeof(unsigned long) );
      Serial.print("Antworte an:");
      Serial.println(pipe_id);
                leds[2] = CRGB::Orange;
        FastLED.show();

      radio.startListening();
    }
    // werte die empfangenen Daten aus und sende diese an die nächste Ebene (Master) weiter
}

Und das Gerüst für die Zentrale

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

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 };

uint8_t master_node;

long Status[6];
long Trigger[6];

#define DATA_PIN 4
#define NUM_LEDS 3
CRGB leds[NUM_LEDS];

void setup(void)
{
    master_node = 1; //Adresse Master=1; nächste Ebene 11,12,13,14,15, Ebene darunter 111,121,131,141,151,112,122,132,142,152....)
  
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  
    leds[0] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[0] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Orange;
    FastLED.show();
    delay(200);    
    leds[0] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Black;
    FastLED.show();
    
  Serial.begin(57600);
  Serial.println("\n\rRF24/examples/starping/\n\r");
  Serial.print("ADDRESS: ");
  Serial.println(master_node);
  
  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)
{
    leds[0] = CRGB::Black;
    FastLED.show();
    leds[1] = CRGB::Black;
    FastLED.show();
    leds[2] = CRGB::Black;
    FastLED.show();
    
    uint8_t pipe_num;
    if ( radio.available(&pipe_num) )
   {
      bool done = false;
      while (!done)
      {
        done = radio.read( Status, sizeof(Status) );
        Serial.print("empfange Status der Sensoren");
        Serial.println(Status[0]);
        Serial.println(Status[1]);
        Serial.println(Status[2]);
        Serial.println(Status[3]);
        Serial.println(Status[4]);
        Serial.println(Status[5]);
        Serial.println(pipe_num+1);
                leds[2] = CRGB::Green;
        FastLED.show();
      }

      radio.stopListening();
      radio.openWritingPipe(listening_pipes[pipe_num-1]);
      uint16_t pipe_id = listening_pipes[pipe_num-1] & 0xffff;
      
      radio.write( Trigger, sizeof(Trigger) );
      Serial.print("Sende Vorgaben an die Lampen");
      Serial.println(pipe_id);
                leds[2] = CRGB::Orange;
        FastLED.show();

      radio.startListening();
   }
}

Ich habe mal 5 Sensoren, 3 "Lampen" und 1 Zentrale zusammen gelötet.... Die funktionieren auch alle soweit, dass versucht wird zu senden und zu empfangen und das Signal der Fernbedienung korrekt erkannt wird...

Allerdings kommt keine Kommunikation zustande... Ich glaube ich habe das mit den Pipes und der Adressierung noch nicht final verstanden...

Für mein Verständnis sind die 6 Pipes Hardwareseitig realisiert und haben den Vorteil, dass die Kommunikation "parallel" erfolgen kann.... Um die Pipes von der Zentrale zu den Lampen zu öffnen, müssen diese von beiden Seiten mit den Adressen des Gegenübers bekannt gemacht werden...
Das gleiche dann von den Lampen zu den Sensoren....

Hab ich das soweit richtig verstanden?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.01.2016, 18:21
Beitrag #5
RE: Lampennetzwerk nrf24 Gen.3 - Ideensammlung
keine Ideen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2016, 18:21
Beitrag #6
RE: Lampennetzwerk nrf24 Gen.3 - Ideensammlung
Hm.... ist das Interesse an dem Thema so gering?

Ich habe noch weiter an dem Thema gearbeitet... wenn es aber nicht interessant ist spare ich mir das getippe....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2016, 20:23 (Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2016 20:37 von MaHaI976.)
Beitrag #7
RE: Lampennetzwerk nrf24 Gen.3 - Ideensammlung
Welche Plattform man nutzt sollte doch eigentlich egal sein, oder? Gut... es hilft mir dann beim Verständnis der Adressierung nicht weiter... aber das Senden und Empfangen macht ja am Sketch nur gut 10% aus...

der aktuelle Status, wo die Kommunikation auch steht.... (allerdings weiß ich noch nicht genau, wie ich die Adressierung wirklich handlen müßte)

Ich habe mir auch mal mySensors.org angeschaut... aber bin mir nicht sicher ob das was für mich ist...

Zentrale:

Code:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "FastLED.h"
#include <UTFT.h>
#include <DS3232RTC.h>
#include <Time.h>
#include <TimeAlarms.h>
#include <Wire.h>

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 };

uint8_t master_node;

int Programmvorgabe[] = {500,120,200,160}; // definiere Grundwerte 0,5s Fading, gelb, 200hell, etwas blasser
long Status[6];  // definiere das Verhalten der Lampen
long Sensor[6];  // Fadingzeit, Farbe (CSV), Helligkeit (CSV), Sättigung (CSV), Haltezeit, Adresse Lampe, Pipe
long Status0[6]; // Flur
long Sensor0[6]; // Flur
long Status1[6]; // Bad
long Sensor1[6]; // Bad
long Status2[6]; // Küche
long Sensor2[6]; // Küche
long Status3[6]; // Wohnzimmer
long Sensor3[6]; // Wohnzimmer
long Status4[6]; // Schlafzimmer
long Sensor4[6]; // Schlafzimmer
long Status5[6]; // frei
long Sensor5[6]; // frei

// Ordne automatische Programme zu
int Alarm1[2] = {7,30};
int Alarm2[2] = {7,45};
int Alarm3[2] = {8,50};
int Alarm4[2] = {11,0};
int Alarm5[2] = {13,30};
int Alarm6[2] = {17,30};
int Alarm7[2] = {19,30};
int Alarm8[2] = {20,15};
int Alarm9[2] = {21,45};
int Alarm10[2] = {22,10};

#define DATA_PIN 4
#define NUM_LEDS 3
CRGB leds[NUM_LEDS];

void setup(void)
{
    master_node = 1; //Adresse Master=1; nächste Ebene 11,12,13,14,15, Ebene darunter 111,121,131,141,151,112,122,132,142,152....)
  
  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  
    leds[0] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[0] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Orange;
    FastLED.show();
    delay(200);    
    leds[0] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Black;
    FastLED.show();
    
  Serial.begin(57600);
  Serial.println("\n\rRF24/examples/starping/\n\r");
  Serial.print("ADDRESS: ");
  Serial.println(master_node);
  
  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)
{
    leds[0] = CRGB::Black;
    FastLED.show();
    leds[1] = CRGB::Black;
    FastLED.show();
    leds[2] = CRGB::Black;
    FastLED.show();
    
    tmElements_t tm;
setSyncProvider(RTC.get);
  
  if ((hour()*60 + minute()) > (Alarm1[0]*60 + Alarm1[1]) && (hour()*60 + minute()) < (Alarm2[0]*60 + Alarm2[1]))
  {Programm1();}
    
  if ((hour()*60 + minute()) > (Alarm2[0]*60 + Alarm2[1]) && (hour()*60 + minute()) < (Alarm3[0]*60 + Alarm3[1]))
  {Programm2();}

  if ((hour()*60 + minute()) > (Alarm3[0]*60 + Alarm3[1]) && (hour()*60 + minute()) < (Alarm4[0]*60 + Alarm4[1]))
  {Programm3();}  

  if ((hour()*60 + minute()) > (Alarm4[0]*60 + Alarm4[1]) && (hour()*60 + minute()) < (Alarm5[0]*60 + Alarm5[1]))
  {Programm4();}  

  if ((hour()*60 + minute()) > (Alarm5[0]*60 + Alarm5[1]) && (hour()*60 + minute()) < (Alarm6[0]*60 + Alarm6[1]))
  {Programm5();}  

  if ((hour()*60 + minute()) > (Alarm6[0]*60 + Alarm6[1]) && (hour()*60 + minute()) < (Alarm7[0]*60 + Alarm7[1]))
  {Programm6();}  

  if ((hour()*60 + minute()) > (Alarm7[0]*60 + Alarm7[1]) && (hour()*60 + minute()) < (Alarm8[0]*60 + Alarm8[1]))
  {Programm7();}

  if ((hour()*60 + minute()) > (Alarm8[0]*60 + Alarm8[1]) && (hour()*60 + minute()) < (Alarm9[0]*60 + Alarm9[1]))
  {Programm8();}

  if ((hour()*60 + minute()) > (Alarm9[0]*60 + Alarm9[1]) && (hour()*60 + minute()) < (Alarm10[0]*60 + Alarm10[1]))
  {Programm9();}  

  if ((hour()*60 + minute()) > (Alarm10[0]*60 + Alarm10[1]))
  {Programm10();}  


    
    if (Sensor0[0] == 1)   // Bewegung im Flur, mache das Licht im Flur an
    {Status0[0] == Programmvorgabe[0];
     Status0[1] == Programmvorgabe[1];
     Status0[2] == Programmvorgabe[2];
     Status0[3] == Programmvorgabe[3];}
    
    if (Sensor1[0] == 1)   // Bewegung im Bad, mache das Licht im Bad an
    {Status0[0] == Programmvorgabe[0];
     Status0[1] == Programmvorgabe[1];
     Status0[2] == Programmvorgabe[2];
     Status0[3] == Programmvorgabe[3];}
    
    if (Sensor2[0] == 1)   // Bewegung in der Küche, mache das Licht in der Küche an
    {Status0[0] == Programmvorgabe[0];
     Status0[1] == Programmvorgabe[1];
     Status0[2] == Programmvorgabe[2];
     Status0[3] == Programmvorgabe[3];}
    
    if (Sensor3[0] == 1)    // Bewegung im Wohnzimmer, mache das Licht im Wohnzimmer an
    {Status0[0] == Programmvorgabe[0];
     Status0[1] == Programmvorgabe[1];
     Status0[2] == Programmvorgabe[2];
     Status0[3] == Programmvorgabe[3];}
    
    if (Sensor4[0] == 1)    // Bewegung im Schlafzimmer, mache das Licht im Schlafzimmer an
    {Status0[0] == Programmvorgabe[0];
     Status0[1] == Programmvorgabe[1];
     Status0[2] == Programmvorgabe[2];
     Status0[3] == Programmvorgabe[3];}
    
    if (Sensor0[0] == 1 && Sensor1[0] == 0)
    {Status0[2] == 0;}     // Bewegung im Flur, aber im Bad ist alles still- dann mache das Licht im Bad aus
          
    if (Sensor0[0] == 1 && Sensor2[0] == 0)
    {Status0[2] == 0;}     // Bewegung im Flur, aber in der Küche ist alles still- dann mache das Licht in der Küche aus
    
    if (Sensor0[0] == 1 && Sensor3[0] == 0)
    {Status0[2] == 0;}     // Bewegung im Flur, aber im Wohnzimmer ist alles still- dann mache das Licht im Wohnzimmer aus
    
    if (Sensor4[0] == 1 && Sensor3[0] == 0)
    {Status3[2] == 0;}     // Bewegung im Schlafzimmer, aber im Wohnzimmer ist alles still- dann mache das Licht im Wohnzimmer aus
    
    if (Sensor3[0] == 1 && Sensor4[0] == 0)
    {Status4[2] == 0;}     // Bewegung im Wohnzimmer, aber im Schlafzimmer ist alles still- dann mache das Licht im Schlafzimmer aus
        
    if (Sensor0[0] == 0 && Sensor1[0] == 1 || Sensor2[0] == 1  || Sensor3[0] == 1  || Sensor4[0] == 1 )
    {Status0[2] == 0;}    // Im Flur ist alles still, aber woanders ist Bewegung? Dann mach doch das Licht im Flur aus! (aber was machst du beim Verlassen der Wohnung?
          
    if (Sensor0[0] == 0 && Sensor1[0] == 0 && Sensor2[0] == 0 && Sensor3[0] == 0 && Sensor4[0] == 0)
    {Status0[2] == 0;
     Status0[4] == 20000;}    // Wenn es überall still ist, mache das Licht im Flur aus, warte aber bitte etwas...
    
    
    int i;
    for (i = 0 ; i < 6 ; i++ );
    
    uint8_t pipe_num = i;
    if ( radio.available(&pipe_num) )
   {
      bool done = false;
      while (!done)
      {
        Serial.print("empfange Sensordaten...");
        done = radio.read(   Sensor, sizeof(Sensor));
        Serial.print("  Bewegung erkannt: ");
        Serial.print(Sensor[0]);
        Serial.print("  IR- Code ");
        Serial.print(Sensor[1]);
        Serial.print("  offen ");
        Serial.print(Sensor[2]);
        Serial.print("  offen ");
        Serial.print(Sensor[3]);
        Serial.print("  offen ");
        Serial.print(Sensor[4]);
        Serial.print("  offen ");  
        Serial.print(Sensor[5]);
        Serial.print("   Pipe:   ");
        Serial.println(i);
        Serial.println("");
        Serial.println("");
        
                leds[2] = CRGB::Green;
        FastLED.show();

    if (i == 0)
        {
        Sensor0[0] = Sensor[0];
        Sensor0[1] = Sensor[1];
        Sensor0[2] = Sensor[2];
        Sensor0[3] = Sensor[3];
        Sensor0[4] = Sensor[4];
        Sensor0[5] = Sensor[5];
        }
        else if (i == 1)
        {
        Sensor1[0] = Sensor[0];
        Sensor1[1] = Sensor[1];
        Sensor1[2] = Sensor[2];
        Sensor1[3] = Sensor[3];
        Sensor1[4] = Sensor[4];
        Sensor1[5] = Sensor[5];
        }
        else if (i == 2)
        {
        Sensor2[0] = Sensor[0];
        Sensor2[1] = Sensor[1];
        Sensor2[2] = Sensor[2];
        Sensor2[3] = Sensor[3];
        Sensor2[4] = Sensor[4];
        Sensor2[5] = Sensor[5];
        }
        else if (i == 3)
        {
        Sensor3[0] = Sensor[0];
        Sensor3[1] = Sensor[1];
        Sensor3[2] = Sensor[2];
        Sensor3[3] = Sensor[3];
        Sensor3[4] = Sensor[4];
        Sensor3[5] = Sensor[5];
        }
        else if (i == 4)
        {
        Sensor4[0] = Sensor[0];
        Sensor4[1] = Sensor[1];
        Sensor4[2] = Sensor[2];
        Sensor4[3] = Sensor[3];
        Sensor4[4] = Sensor[4];
        Sensor4[5] = Sensor[5];
        }
        else if (i == 5)
        {
        Sensor5[0] = Sensor[0];
        Sensor5[1] = Sensor[1];
        Sensor5[2] = Sensor[2];
        Sensor5[3] = Sensor[3];
        Sensor5[4] = Sensor[4];
        Sensor5[5] = Sensor[5];
        }
      }
      
        if (i == 0)
        {
        Status[0] = Status0[0];
        Status[1] = Status0[1];
        Status[2] = Status0[2];
        Status[3] = Status0[3];
        Status[4] = Status0[4];
        Status[5] = Status0[5];
        }
        else if (i == 1)
        {
        Status[0] = Status1[0];
        Status[1] = Status1[1];
        Status[2] = Status1[2];
        Status[3] = Status1[3];
        Status[4] = Status1[4];
        Status[5] = Status1[5];
        }
        else if (i == 2)
        {
        Status[0] = Status2[0];
        Status[1] = Status2[1];
        Status[2] = Status2[2];
        Status[3] = Status2[3];
        Status[4] = Status2[4];
        Status[5] = Status2[5];
        }
        else if (i == 3)
        {
        Status[0] = Status3[0];
        Status[1] = Status3[1];
        Status[2] = Status3[2];
        Status[3] = Status3[3];
        Status[4] = Status3[4];
        Status[5] = Status3[5];
        }
        else if (i == 4)
        {
        Status[0] = Status4[0];
        Status[1] = Status4[1];
        Status[2] = Status4[2];
        Status[3] = Status4[3];
        Status[4] = Status4[4];
        Status[5] = Status4[5];
        }
        else if (i == 5)
        {
        Status[0] = Status5[0];
        Status[1] = Status5[1];
        Status[2] = Status5[2];
        Status[3] = Status5[3];
        Status[4] = Status5[4];
        Status[5] = Status5[5];
        }

      radio.stopListening();
      radio.openWritingPipe(listening_pipes[pipe_num-1]);
      uint16_t pipe_id = listening_pipes[pipe_num-1] & 0xffff;
      
      radio.write(  Status, sizeof(Status) );
        Serial.print("Sende Vorgaben:   ");
        Serial.print("Fadingzeit: ");
        Serial.print(Status[0]);
        Serial.print("  - Farbe (CSV): ");
        Serial.print(Status[1]);
        Serial.print("  - Helligkeit (CSV: )");
        Serial.print(Status[2]);
        Serial.print("  - Saettigung (CSV): ");
        Serial.print(Status[3]);
        Serial.print("  - Haltezeit: ");
        Serial.print(Status[4]);
        Serial.print("  - Adresse Lampe: ");  
        Serial.print(Status[5]);
        Serial.print("   Pipe:   ");
        Serial.println(i);
        Serial.println("");
        Serial.println("");
        
                leds[2] = CRGB::Orange;
        FastLED.show();
      
      radio.startListening();
   }
}

void Programm1()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

void Programm2()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

void Programm3()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

void Programm4()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

void Programm5()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

void Programm6()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

void Programm7()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

void Programm8()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

void Programm9()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

void Programm10()
{
Programmvorgabe[0] = 1000;
Programmvorgabe[1] = 80;
Programmvorgabe[2] = 255;
Programmvorgabe[3] = 10;
}

beliebige Node...

Code:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "IRremote.h"
#include "FastLED.h"

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 };

uint8_t node_address;
int node_ebene1;
int master_node;
int thisnode = 131;

int receiver = 3;
IRrecv irrecv(receiver);      
decode_results results;
int IRStatus;

int PIR;
int sensorPin = 4;

long Sensor[6];
long Status[6];

#define DATA_PIN 2
#define NUM_LEDS 3
CRGB leds[NUM_LEDS];

void setup(void)
{
    node_address = thisnode; //oder 12, 13, 14, 15, Ebene darunter 111,121,131,141,151,112,122,132,142,152....)
    node_ebene1 = 121;

  FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  
  pinMode(sensorPin, INPUT);
  irrecv.enableIRIn();

    leds[0] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Cyan;
    FastLED.show();
    delay(200);
    leds[0] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Orange;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Orange;
    FastLED.show();
    delay(200);    
    leds[0] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[1] = CRGB::Black;
    FastLED.show();
    delay(200);
    leds[2] = CRGB::Black;
    FastLED.show();
    
  Serial.begin(57600);
  Serial.println("\n\rRF24/examples/starping/\n\r");
  Serial.print("ADDRESS: ");
  Serial.println(node_ebene1);

  radio.begin();

    radio.openWritingPipe(talking_pipes[master_node]);
    radio.openReadingPipe(1,listening_pipes[master_node]);

  radio.startListening();
  radio.printDetails();
}

void loop(void)
{
    leds[0] = CRGB::Black;
    FastLED.show();
    leds[1] = CRGB::Black;
    FastLED.show();
    leds[2] = CRGB::Black;
    FastLED.show();
    
PIR = digitalRead(sensorPin);
    if (PIR == HIGH)
         {  
                leds[1] = CRGB::Green;
        FastLED.show();
                Serial.println("Bewegung erkannt.");
         }
    else
         {
                leds[1] = CRGB::Red;
        FastLED.show();
                Serial.println("keine Bewegung.");  
         }
        
if (irrecv.decode(&results))
  {
    translateIR();
    irrecv.resume();
  }  
  Sensor[0] = PIR;
  Sensor[1] = IRStatus;
  Sensor[5] = thisnode;

  //sende den Status an Ebene1 und warte auf Rückmeldung
   radio.stopListening();
    Serial.println("Sende Sensordaten...");
    radio.write(   Sensor, sizeof(Sensor)  );
        Serial.print("  Bewegung erkannt: ");
        Serial.print(Sensor[0]);
        Serial.print("  IR- Code ");
        Serial.print(Sensor[1]);
        Serial.print("  offen ");
        Serial.print(Sensor[2]);
        Serial.print("  offen ");
        Serial.print(Sensor[3]);
        Serial.print("  offen ");
        Serial.print(Sensor[4]);
        Serial.print("  Adresse Sensor ");  
        Serial.println(Sensor[5]);

    radio.startListening();

    unsigned long started_waiting_at = millis();
    bool timeout = false;
    while ( ! radio.available() && ! timeout )
      if (millis() - started_waiting_at > 357 )
        timeout = true;

    if ( timeout )
    {
      Serial.println("Failed, response timed out.\n\r");    
                leds[0] = CRGB::Red;
        FastLED.show();
    }
    else
    {  
        IRStatus = 0;
        radio.read( Status, sizeof(Status) );
        Serial.print("empfange Status:   ");
        Serial.print("Fadingzeit: ");
        Serial.print(Status[0]);
        Serial.print("  - Farbe (CSV): ");
        Serial.print(Status[1]);
        Serial.print("  - Helligkeit (CSV: )");
        Serial.print(Status[2]);
        Serial.print("  - Saettigung (CSV): ");
        Serial.print(Status[3]);
        Serial.print("  -Adresse Lampe: ");
        Serial.print(Status[4]);
        Serial.print("   offen   ");  
        Serial.println(Status[5]);
                leds[0] = CRGB::Green;
        FastLED.show();  
    }
}

void translateIR()
{
  switch(results.value)
{
  case 0xFF3AC5:  
    IRStatus = 0xFF3AC5;
    leds[2] = CRGB::Green;
    FastLED.show();
    Serial.println(" heller            ");
    break;
    
  case 0xFFBA45:  
    IRStatus = 0xFFBA45;
    leds[2] = CRGB::Green;
    Serial.println(" dunkler             ");
    break;
    
  case 0xFF827D:
    IRStatus = 0xFF827D;
    leds[2] = CRGB::Green;
    Serial.println(" abspielen            ");
    break;
    
  case 0xFF02FD:
    IRStatus = 0xFF02FD;
    leds[2] = CRGB::Green;
    Serial.println(" an/aus           ");
    break;
    
  case 0xFF1AE5:
    IRStatus = 0xFF1AE5;
    leds[2] = CRGB::Green;
    Serial.println(" rot           ");
    break;
    
  case 0xFF9A65:  
    IRStatus = 0xFF9A65;
    leds[2] = CRGB::Green;
    Serial.println(" gruen     ");
    break;
    
  case 0xFFA25D:
    IRStatus = 0xFFA25D;
    leds[2] = CRGB::Green;
    Serial.println(" blau           ");
    break;
    
  case 0xFF22DD:
    IRStatus = 0xFF22DD;
    leds[2] = CRGB::Green;
    Serial.println(" weis           ");
    break;
    
  case 0xFF2AD5:
    IRStatus = 0xFF2AD5;
    leds[2] = CRGB::Green;
    Serial.println(" rot-orange             ");
    break;
    
  case 0xFFAA55:  
    IRStatus = 0xFFAA55;
    leds[2] = CRGB::Green;
    Serial.println(" tuerkis              ");
    break;
    
  case 0xFF926D:  
    IRStatus = 0xFF926D;
    leds[2] = CRGB::Green;
    Serial.println(" hellblau           ");
    break;

  case 0xFF12ED:  
    IRStatus = 0xFF12ED;
    leds[2] = CRGB::Green;
    Serial.println(" beige           ");
    break;

  case 0xFF0AF5:  
    IRStatus = 0xFF0AF5;
    leds[2] = CRGB::Green;
    Serial.println(" gelb              ");
    break;

  case 0xFF8A75:  
    IRStatus = 0xFF8A75;
    leds[2] = CRGB::Green;
    Serial.println(" hellgruen              ");
    break;

  case 0xFFB24D:  
    IRStatus = 0xFFB24D;
    leds[2] = CRGB::Green;
    Serial.println(" hellblau             ");
    break;

  case 0xFF32CD:
    IRStatus = 0xFF32CD;
    leds[2] = CRGB::Green;
    Serial.println(" warmweis              ");
    break;

  case 0xFF38C7:
    IRStatus = 0xFF38C7;
    leds[2] = CRGB::Green;
    Serial.println(" dunkelgelb              ");
    break;

  case 0xFFB847:
    IRStatus = 0xFFB847;
    leds[2] = CRGB::Green;
    Serial.println(" blassgruen             ");
    break;

  case 0xFF7887:
    IRStatus = 0xFF7887;
    leds[2] = CRGB::Green;
    Serial.println(" blassblau              ");
    break;
    
  case 0xFFF807:
    IRStatus = 0xFFF807;
    leds[2] = CRGB::Green;
    Serial.println(" kaltweis              ");
    break;

  case 0xFF18E7:
    IRStatus = 0xFF18E7;
    leds[2] = CRGB::Green;
    Serial.println(" gelblich              ");
    break;

  case 0xFF9867:
    IRStatus = 0xFF9867;
    leds[2] = CRGB::Green;
    Serial.println(" blau-gruen              ");
    break;

case 0xFF58A7:  
    IRStatus = 0xFF58A7;
    leds[2] = CRGB::Green;
    Serial.println(" violett            ");
    break;

  case 0xFFD827:
    IRStatus = 0xFFD827;
    leds[2] = CRGB::Green;
    Serial.println(" blau-weis            ");
    break;

  case 0xFF28D7:
    IRStatus = 0xFF28D7;
    leds[2] = CRGB::Green;
    Serial.println(" rot+            ");
    break;

  case 0xFFA857:
    IRStatus = 0xFFA857;
    leds[2] = CRGB::Green;
    Serial.println(" gruen+           ");
    break;

  case 0xFF6897:
    IRStatus = 0xFF6897;
    leds[2] = CRGB::Green;
    Serial.println(" blau+           ");
    break;

  case 0xFFE817:
    IRStatus = 0xFFE817;
    leds[2] = CRGB::Green;
    Serial.println(" quick     ");
    break;

  case 0xFF08F7:
    IRStatus = 0xFF08F7;
    leds[2] = CRGB::Green;
    Serial.println(" rot-           ");
    break;

  case 0xFF8877:
    IRStatus = 0xFF8877;
    leds[2] = CRGB::Green;
    Serial.println(" gruen-           ");
    break;

  case 0xFF48B7:
    IRStatus = 0xFF48B7;
    leds[2] = CRGB::Green;
    Serial.println(" blau-             ");
    break;

  case 0xFFC837:
    IRStatus = 0xFFC837;
    leds[2] = CRGB::Green;
    Serial.println(" slow              ");
    break;

  case 0xFF30CF:  
    IRStatus = 0xFF30CF;
    leds[2] = CRGB::Green;
    Serial.println(" DIY1           ");
    break;

  case 0xFFB04F:
    IRStatus = 0xFFB04F;
    leds[2] = CRGB::Green;
    Serial.println(" DIY2           ");
    break;

  case 0xFF708F:
    IRStatus = 0xFF708F;
    leds[2] = CRGB::Green;
    Serial.println(" DIY3              ");
    break;

  case 0xFFF00F:
    IRStatus = 0xFFF00F;
    leds[2] = CRGB::Green;
    Serial.println(" auto              ");
    break;

  case 0xFF10EF:
    IRStatus = 0xFF10EF;
    leds[2] = CRGB::Green;
    Serial.println(" DIY4              ");
    break;

  case 0xFF906F:  
    IRStatus = 0xFF906F;
    leds[2] = CRGB::Green;
    Serial.println(" DIY5              ");
    break;

  case 0xFF50AF:
    IRStatus = 0xFF50AF;
    leds[2] = CRGB::Green;
    Serial.println(" DIY6              ");
    break;

  case 0xFFD02F:
    IRStatus = 0xFFD02F;
    leds[2] = CRGB::Green;
    Serial.println(" flash              ");
    break;

  case 0xFF20DF:
    IRStatus = 0xFF20DF;
    leds[2] = CRGB::Green;
    Serial.println(" Jump3              ");
    break;

  case 0xFFA05F:
    IRStatus = 0xFFA05F;
    leds[2] = CRGB::Green;
    Serial.println(" Jump7              ");
    break;

  case 0xFF609F:
    IRStatus = 0xFF609F;
    leds[2] = CRGB::Green;
    Serial.println(" Fade3              ");
    break;

  case 0xFFE01F:
    IRStatus = 0xFFE01F;
    leds[2] = CRGB::Green;
    Serial.println(" Fade7              ");
    break;
    
  case 0xFFFFFFFF:  
    IRStatus = 0xFFFFFFFF;
    leds[2] = CRGB::Green;
    Serial.println(" Taste halten       ");
    break;
    
  default:
    leds[2] = CRGB::Red;
    Serial.println(" other button   ");
  }

  delay(40);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  7 Zoll Display und NRF24 Propleme schlappy82 15 420 28.11.2016 17:10
Letzter Beitrag: hotsystems
  Musik- Netzwerk (nrf24?) MaHa1976 5 1.326 30.03.2015 06:57
Letzter Beitrag: MaHa1976

Gehe zu:


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