NRF24I01 met controle LED

Arduino specifieke Software
Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

NRF24I01 met controle LED

Berichtdoor DeDraak » 28 Apr 2017, 11:59

Hallo Allemaal,

Ik heb een projectje met 2 arduino's waarbij de ene middels een NRF24I01 DHT22 gegevens verzend naar de andere. Op de ontvanger heb ik een LCD aangesloten waarbij ik de waardes uit kan lezen.
Nu zou ik graag een controle LED willen gebruiken op mijn ontvanger die aan is wanneer er verbinding is. Echter hier kom ik nu niet uit.

Dit is de sketch:
Code: Alles selecteren
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display A4 en A5
LiquidCrystal_I2C lcd(0x27, 16, 2);

// ONTVANGER NODE, RF24 SENSOR NETWERK
// PROGRAMMEERVOORBEELD BITS & PARTS, http://WWW.BITSANDPARTS.EU
// http://www.bitsandparts.eu/blog/rf24-nrf24l01-sensor-netwerk-tutorial/

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

// we definieeren de structuur van het te ontvangen bericht (het envelopje met daarin de gegevens)
struct sensor_bericht
{
   
  float sensor_waarde;  // de uitgelezen sensor-waarde
  float RV;

};

RF24 radio(9, 10);      // nRF24L01(+) transceiver aangesloten met pins 9 en 10
RF24Network network(radio);   // netwerk definiëren

const uint16_t deze_node = 0;   // adres van onze (ontvanger) node
const uint16_t andere_node = 1; // adres van de andere (sensor) node

//*******************************************************************************
// SETUP
//*******************************************************************************
void setup(void)
{

  lcd.begin();
  Serial.begin(57600);
  SPI.begin();
  radio.begin();
  network.begin(/*kanaal*/ 90, /*node adres*/ deze_node);

  lcd.setCursor(0, 0);
  lcd.print("Temp:");
  lcd.setCursor(0, 1);
  lcd.print("RV:");
  lcd.setCursor(0, 2);
  Serial.println("Sensor netwerk ontvanger start...");
}

//*******************************************************************************
// HOOFD LOOP
//*******************************************************************************
void loop(void)
{
  // houdt het netwerk aan de gang
  network.update();

  // is er data beschikbaar op het netwerk voor ons?
  while ( network.available() )
   
  {
    // zo ja, pak de data en print het

    // we geven aan dat 'header' de structuur heeft van 'RF24NetworkHeader' (voorgedefinieerd in de RF24network library)
    RF24NetworkHeader header;

    // we geven aan dat 'bericht' de structuur heeft van 'sensor_bericht'
    sensor_bericht bericht;

    // we lezen het bericht van het netwerk
    network.read(header, &bericht, sizeof(bericht));

    // de ontvangen gegevens die in het sensor bericht zaten printen
    Serial.print(" Temperatuur: ");
    Serial.println(bericht.sensor_waarde, 1);

    Serial.print(" RV: ");
    Serial.println(bericht.RV, 1);

    lcd.setCursor(11, 0);
    lcd.print(bericht.sensor_waarde, 1);
    lcd.setCursor(11, 1);
    lcd.print(bericht.RV, 1);


  }
}



Advertisement

Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

Re: NRF24I01 met controle LED

Berichtdoor DeDraak » 28 Apr 2017, 12:03

Ik heb het volgende al geprobeerd:

Code: Alles selecteren
 // is er data beschikbaar op het netwerk voor ons?
  while ( network.available() )
  digitalWrite(ledPin, HIGH);


Alleen komen de gegevens niet moor over van de zender, de LED gaat wel aan!?

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: NRF24I01 met controle LED

Berichtdoor nicoverduin » 28 Apr 2017, 13:40

Dat is ook volkomen juist wat er gebeurt. Immers dat geef je ook aan:
cpp code
ALS er netwerk data is voer DAN UITSLUITEND de volgende opdracht uit.....


En dat is anders als in de oorspronkelijke sketch....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

Re: NRF24I01 met controle LED

Berichtdoor DeDraak » 28 Apr 2017, 13:43

Dat klopt, Was alleen vergeten te melden dat hij uit moet als er geen verbinding is.
Ik ben al bezig geweest met if en else maar loop knel met de while die er al inzit..

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: NRF24I01 met controle LED

Berichtdoor nicoverduin » 28 Apr 2017, 13:45

Misschien eens een reden om eens na te denken (wat er nou eigenlijk precies gebeurt in die while....
Dit moet je zelf kunnen.... En anders heb je legio voorbeelden in de IDE die je eens zou kunnen bekijken....
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

Re: NRF24I01 met controle LED

Berichtdoor DeDraak » 28 Apr 2017, 14:33

hmmm....
Die While kom ik niet uit, maar heb nu if/else geprobeerd, dan lukt het ook alleen knippert hij alleen die tijd dat er gezonden wordt..
Nu moet ik daar weer iets op verzinnen dat hij blijft branden :|

Code: Alles selecteren
 if ( network.available()== true)
  {
    digitalWrite(ledPin, HIGH); // action A
  }
  else
  {
    digitalWrite(ledPin, LOW);  // action B
  }

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 18 gasten