Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
ik heb een nrf24l01 module maar ik krijg de hele tijd een foutmelding 'void value nont ignored as it ought to be'

ik pobeer een ledje met een button te laten branden (draadloos)
dit is mijn eerste project met deze module dus ik probeer het eerst met iets gemakkelijk

deze codes gebruik ik (op elke website die ik bezoek gebruiken ze deze code
de eerste code 'verzender' lukt mij om te uploaden
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// verzender
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int msg[1];
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int SW1 = 7;

void setup(void) {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
}

void loop(void) {
  if (digitalRead(SW1) == HIGH) {
    msg[0] = 111;
    radio.write(msg, 1);
  }
}


bij deze code 'ontvanger' krijg ik een foutmelding
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// ontvanger
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int msg[1];
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int LED1 = 3;
int LED2 = 5;

void setup(void) {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1, pipe);
  radio.startListening();
  pinMode(LED1, OUTPUT);
}

void loop(void) {
  if (radio.available()) {
    bool done = false;
    while (!done) {
      done = radio.read(msg, 1);
      Serial.println(msg[0]);
      if (msg[0] == 111) {
        delay(10);
        digitalWrite(LED1, HIGH);
      }
      else {
        digitalWrite(LED1, LOW);
      }
      delay(10);
    }
  }
  else {
    Serial.println("bo&#351;");
  }
}

bij deze code krijg ik de vooraf vermelde foutmelding 'void value nont ignored as it ought to be' bij de zin 'done = radio.read(msg, 1);'
op onderstaande foto is te zien dat de fout bij het gelijkheidsteken staat

nrf24l01
deze foutmelding heb ik nog nooit gezien, iemand enig idee hoe ik dit moet oplossen

Acties:
  • 0 Henk 'm!

  • dion_b
  • Registratie: September 2000
  • Laatst online: 09:56

dion_b

Moderator Harde Waren

say Baah

Aangezien het hier niet om de hardware gaat maar om problemen rondom programmeren van dit ding komt dit topic waarschijnlijk beter tot z'n recht in Programming.

Move PMG -> PRG

Oslik blyat! Oslik!


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 10:43
Er staat hier: https://maniacbug.github....16877ec7486936795aed3b5ee
Dat de return type een void* is, zie de note die bij Read staat.

Wat gebeurt er als je ipv "done" te assignen, je dit doet:
code:
1
2
3
while(radio.read(msg, 1)) {
    //doe je ding
}

?

Acties:
  • 0 Henk 'm!

  • expor
  • Registratie: Juni 2005
  • Laatst online: 09-08 21:53
Return type is bool, maar de buffer is void*. Wat als je type van buffer naar char of uint8_t verandert?

[ Voor 5% gewijzigd door expor op 19-07-2017 21:53 ]

AMD 5800X3D | 16gb DDR 4 @ 3800/14 | 4070 Ti | 1TB Samsung Evo 970, 1TB Samsung Evo 860, 512MB Crucial


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 10:43
expor schreef op woensdag 19 juli 2017 @ 21:51:
Return type is bool, maar de buffer is void*. Wat als je type van buffer naar char of uint8_t verandert?
Ah je hebt gelijk, ik las het verkeerd.

Acties:
  • 0 Henk 'm!

  • expor
  • Registratie: Juni 2005
  • Laatst online: 09-08 21:53
Nevermind mijn vorige reply. Kijk hier even, https://forum.arduino.cc/index.php?topic=302380.0

Ligt blijkbaar aan de versie van die rf24 library die je gebruikt.

AMD 5800X3D | 16gb DDR 4 @ 3800/14 | 4070 Ti | 1TB Samsung Evo 970, 1TB Samsung Evo 860, 512MB Crucial


Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
die andere bibliotheek die ze voorstelden op uw link werkte ook niet

[ Voor 67% gewijzigd door jonas-ventje op 20-07-2017 09:44 ]


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 10:43
jonas-ventje schreef op donderdag 20 juli 2017 @ 09:08:
die andere bibliotheek die ze voorstelden op uw link werkte ook niet
Heb je dat geprobeerd in combinatie met

code:
1
2
3
while(radio.available()){
  radio.read(msg, 1);
}


ipv "done" uit je read halen? Want dat is wat ze deden samen met de nieuwe library gebruiken, en dan werkt het volgens hen wel.

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
jonas-ventje schreef op donderdag 20 juli 2017 @ 09:08:
die andere bibliotheek die ze voorstelden op uw link werkte ook niet
Lees en begrijp de warning : je doet net alsof de read() call iets teruggeeft, maar dat doet het niet.

Zoek uit hoe je wel kunt zien of er data gelezen kan worden!

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
ik heb nu deze codes geprobeerd

verzender:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// verzender
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int msg[1];
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int SW1 = 7;

void setup(void) {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
}

void loop(void) {
  if (digitalRead(SW1) == HIGH) {
    msg[0] = 111;
    radio.write(msg, 1);
  }
}


ontvanger
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// ontvanger
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int msg[1];
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int LED1 = 3;
int LED2 = 5;

void setup(void) {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1, pipe);
  radio.startListening();
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
}

void loop(void) {
  if (radio.available()) {
    radio.read(msg, 1);
    Serial.println(msg[0]);
    if (msg[0] == 111) {
      delay(10);
      digitalWrite(LED1, HIGH);
    }
    else {
      digitalWrite(LED1, LOW);
    }
    delay(10);
  }
  else {
    Serial.println("bo&#351;");
  }
}

maar dit werkt ook niet, ik krijg deze wel geüpload maar als ik dan op de button klik gebeurt er niets

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 10:43
jonas-ventje schreef op donderdag 20 juli 2017 @ 10:57:
ik heb nu deze codes geprobeerd

verzender:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// verzender
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int msg[1];
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int SW1 = 7;

void setup(void) {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
}

void loop(void) {
  if (digitalRead(SW1) == HIGH) {
    msg[0] = 111;
    radio.write(msg, 1);
  }
}


ontvanger
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// ontvanger
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int msg[1];
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int LED1 = 3;
int LED2 = 5;

void setup(void) {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1, pipe);
  radio.startListening();
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
}

void loop(void) {
  if (radio.available()) {
    radio.read(msg, 1);
    Serial.println(msg[0]);
    if (msg[0] == 111) {
      delay(10);
      digitalWrite(LED1, HIGH);
    }
    else {
      digitalWrite(LED1, LOW);
    }
    delay(10);
  }
  else {
    Serial.println("bo&#351;");
  }
}

maar dit werkt ook niet, ik krijg deze wel geüpload maar als ik dan op de button klik gebeurt er niets
Je hebt een if om je available, niet een while... Zet het eens om naar een while-loop ipv een if en probeer het nog eens.

Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
maar dan heb ik toch een probleem met de else

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
if of while maakt hier niet veel uit aangezien de loop(...) periodiek wordt aangeroepen.

Zet her en der eens wat Serial.println( "Mark " ) in je transmitter en receiver om er achter te komen waar het fout gaat. Aangenomen dat je naar je debug console zit te kijken dan he?!

Yeh! Arduino, voor al uw printf debugging

[ Voor 10% gewijzigd door farlane op 20-07-2017 11:15 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
volgens mij heb ik wel een fout gevonden in de verzender maar dat is niet echt het probleem want het werkt nog steeds niet
de button was sowiso nog niet verklaart in de void setup
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// verzender
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int msg[1];
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int SW1 = 7;

void setup(void) {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
  pinMode(SW1, INPUT);
  digitalWrite(SW1, LOW);
}

void loop(void) {
  if (digitalRead(SW1) == HIGH) {
    msg[0] = 111;
    radio.write(msg, 1);
    Serial.println( "Mark " );
  }
}

ik krijg ook geen melding in de seriele monitor dat de button word ingedrukt

dus ik weet niet of er nog een fout in de ontvanger zit maar while gebruik ik niet want dan krijg ik een foutmelding dat de else niet werkt zo
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// ontvanger
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int msg[1];
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int LED1 = 3;
int LED2 = 5;

void setup(void) {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1, pipe);
  radio.startListening();
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
}

void loop(void) {
  if (radio.available()) {
    radio.read(msg, 1);
    Serial.println(msg[0]);
    if (msg[0] == 111) {
      delay(10);
      digitalWrite(LED1, HIGH);
    }
    else {
      digitalWrite(LED1, LOW);
    }
    delay(10);
  }
  else {
    Serial.println("bo&#351;");
  }
}

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
jonas-ventje schreef op donderdag 20 juli 2017 @ 11:34:
volgens mij heb ik wel een fout gevonden in de verzender maar dat is niet echt het probleem want het werkt nog steeds niet
...
ik krijg ook geen melding in de seriele monitor dat de button word ingedrukt
...
dus ik weet niet of er nog een fout in de ontvanger zit maar while gebruik ik niet want dan krijg ik een foutmelding dat de else niet werkt zo
Begin bij het begin : als je niet zeker weet of je knop werkt, kun je de rest laten hangen.

NB -1 : Test eerst of je debug console ueberhaupt werkt!

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
de button werkt sowiso zonder de wireless module maar je bedoeld dat ik moet testen of mijn wireless module werkt? en zo ja hoe doe ik dat dan

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
jonas-ventje schreef op donderdag 20 juli 2017 @ 12:14:
de button werkt sowiso zonder de wireless module maar je bedoeld dat ik moet testen of mijn wireless module werkt? en zo ja hoe doe ik dat dan
Nee.
- Test een simpele (zonder verdere voorwaarden) Serial.println en kijk of je wat ziet op je console
- Test een Serial.println op het punt waar jij van vind dat je code heeft gezien dat een knop is ingedrukt en kijk of deze komt als je de knop drukt
- Test een Serial.println als je een bericht verstuurt naar de RF chip (op de transmitter dus)
- Test een Serial.println als je een bericht ontvangt van de RF chip (op de receiver dus)
- etc etc

Baby steps.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Lennyz
  • Registratie: Januari 2010
  • Laatst online: 29-08 20:08
Ik heb geen idee hoe je je button hebt aangesloten, maar het is het makkelijkste als je gebruikt maakt van de interne pullup. Als je het werkende hebt en je krijgt spook berichten, dat kan kloppen omdat je geen debounce voor de knop in je code hebt verwerkt.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// verzender
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
int msg[1];
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int SW1 = 7;
byte buttonState; // Byte om de status in op te slaan

void setup(void) {
  Serial.begin(9600);
  pinMode(SW1, INPUT_PULLUP);
  radio.begin();
  radio.openWritingPipe(pipe);
  
//  digitalWrite(SW1, LOW); (Waarom heb je dit toegevoegd? Dit kan weg)
}

void loop(void) {
 buttonState = digitalRead(SW1); // Hierdoor slaat hij de keypress op in een byte.
// Door gebruik te maken van de interne pullup: LOW = ingedrukt, HIGH = niet ingedrukt
  if (buttonState == LOW) {    
    msg[0] = 111;
    radio.write(msg[0], 1); //Je moet wel de goede selecteren, [0] toegevoegd.
    Serial.println( "Mark " );
  }
}

[ Voor 6% gewijzigd door Lennyz op 21-07-2017 10:33 ]


Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
ja maar ik heb ook dat probleem bij de ontvanger

Acties:
  • 0 Henk 'm!

  • jonas-ventje
  • Registratie: Juli 2016
  • Laatst online: 19-01-2024
ik heb nu eindelijk via mirf mijn nrf24l01 aan de praat gekregen maar nu wil ik mijn joystick eraan hangen maar dit moet wel weer met de nrf24l01 library en ik krijg ook nog steeds "no radio available" dus ik krijg nog geen communicatie maar tussenin heb ik wel soms iets dat er op komt maar dat reageert niet op mijn joystick:
Afbeeldingslocatie: https://tweakers.net/ext/f/UBLHpYY6O3DYUc7sIFUnxMNY/full.png
ik heb deze codes gebruikt:(ik weet dat er nog wat op staat van een servo motor maar dat komt omdat ik het rechtstreeks van het internet geplukt heb)
verzender
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//verzender
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN   9
#define CSN_PIN 10
#define JOYSTICK_X A0
#define JOYSTICK_Y A1
const uint64_t pipe = 0xE8E8F0F0E1LL;
RF24 radio(CE_PIN, CSN_PIN);
int joystick[6];
int upbut = 2;
int rightbut = 3;
int downbut = 4;
int leftbut = 5;
void setup()
{
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
  pinMode(upbut, INPUT);
  digitalWrite(upbut, LOW);
  pinMode(rightbut, INPUT);
  digitalWrite(upbut, LOW);
  pinMode(downbut, INPUT);
  digitalWrite(downbut, LOW);
  pinMode(leftbut, INPUT);
  digitalWrite(leftbut, LOW);
}
void loop()
{
  joystick[0] = analogRead(JOYSTICK_X);
  joystick[1] = analogRead(JOYSTICK_Y);
  joystick[2] = digitalRead(upbut);
  joystick[3] = digitalRead(rightbut);
  joystick[4] = digitalRead(downbut);
  joystick[5] = digitalRead(leftbut);
  radio.write( joystick, sizeof(joystick) );
  Serial.print("X = ");
  Serial.print(analogRead(JOYSTICK_X));
  Serial.print(" Y = ");
  Serial.print(analogRead(JOYSTICK_Y));
  Serial.print(" Y = ");
  Serial.print(" Up = ");
  Serial.print(digitalRead(upbut));
  Serial.print(" Right = ");
  Serial.print(digitalRead(rightbut));
  Serial.print(" Down = ");
  Serial.print(digitalRead(downbut));
  Serial.print(" Left = ");
  Serial.println(digitalRead(leftbut));
}

bij deze code kloppen de getallen op mijn seriële monitor wel

ontvanger
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//ontvanger
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>
#define CE_PIN 6
#define CSN_PIN 7
const uint64_t pipe = 0xE8E8F0F0E1LL;
const int servo1 = 9;
const int servo2 = 10;
int servoVal;
Servo myservo1;
Servo myservo2;
RF24 radio(CE_PIN, CSN_PIN);
int joystick[6];
void setup()
{
  Serial.begin(9600);
  delay(1000);
  myservo1.attach(servo1);
  myservo2.attach(servo2);
  Serial.println("Nrf24L01 Receiver Starting");
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();;
}
void loop()
{
  if ( radio.available() )
  {
    bool done = false;
    while (!done)
    {
      done = radio.read( joystick, sizeof(joystick) );
      int joystickX = map(joystick[0],0,1023,0,180);
      int joystickY = map(joystick[1],0,1023,0,180);
      int upbut = joystick[2];
      int rightbut = joystick[3];
      int downbut = joystick[4];
      int lefttbut = joystick[5];
      servoVal = joystickX;
      myservo2.write(servoVal);
      servoVal = joystickY; 
      myservo1.write(servoVal);
      Serial.print("X = ");
      Serial.print(joystickX);
      Serial.print(" Y = ");  
      Serial.print(joystickY);
      Serial.print(" Up = ");
      Serial.print(joystick[2]);
      Serial.print(" Right = ");  
      Serial.print(joystick[3]);
      Serial.print(" Down = ");
      Serial.print(joystick[4]);
      Serial.print(" Left = ");  
      Serial.println(joystick[5]);
     delay(15);
    }
  }
  else
  {    
      Serial.println("No radio available");
  }
}

hier loopt het waarschijnlijk mis (of mijn nrf24l01 is kapot) want ik krijg hier "bovenstaande foto" op mijn seriele monitor
Pagina: 1