void value not ignored as it ought to be

Arduino specifieke Software
Berichten: 6
Geregistreerd: 11 Aug 2018, 14:20

void value not ignored as it ought to be

Berichtdoor wdefossez » 23 Apr 2019, 22:11

Hoi,

Bij het inladen van mijn sketch krijg ik deze boodschap: void value not ignored as it ought to be

Wat kan er fout zijn?

dank je voor de hulp!

sketch hieronder

het gaat over een projectje om een boot aan te sturen via RC..

Het is bij het onderdeel van de ontvanger dat ik deze boodschap krijg.

mrcikes!

w@lter
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>

#include <SPI.h>
#include <Servo.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

//
// Hardware configuration
//

Servo myservo;

// Set up nRF24L01 radio on SPI bus plus pins 9 & 10
RF24 radio(9,10);

//
// Topology
//

// Radio pipe addresses for the 2 nodes to communicate.
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

// Default Values
int servoPos = 92; // Steady point of the servo

void setup(void)
{

//
// Setup and configure rf radio
//

radio.begin();

// optionally, increase the delay between retries & # of retries
radio.setRetries(15,15);

// optionally, reduce the payload size. seems to
// improve reliability
radio.setPayloadSize(8);

//
// Open pipes to other nodes for communication
//

// This simple sketch opens two pipes for these two nodes to communicate
// back and forth.
// Open 'our' pipe for writing
// Open the 'other' pipe for reading, in position #1 (we can have up to 5 pipes open for reading)

radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);

//
// Start listening
//

radio.startListening();

//
// Dump the configuration of the rf unit for debugging
//

// The servo is attached to pin 2
myservo.attach(2);
// Start with the steady point of the servo
myservo.write(servoPos);
}


void receiveOrder()
{
// if there is data ready
if ( radio.available() )
{
// Dump the payloads until we've gotten everything
unsigned long message;
bool done = false;
while (!done)
{
// Fetch the payload, and see if this was the last one.
done = radio.read( &message, sizeof(unsigned long) );

// Use it
// The servo can only ake a value fro 0 to 180
if(message > 180) message = 180;
else if(message < 0) message = 0;
// Save the postion
servoPos = message;
// Write the position to the servo
myservo.write(servoPos);
}

// First, stop listening so we can talk
radio.stopListening();

// Send the final one back.
radio.write( &message, sizeof(unsigned long) );

// Now, resume listening so we catch the next packets.
radio.startListening();
}
}

void loop(void)
{
receiveOrder();
}

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: void value not ignored as it ought to be

Berichtdoor Koepel » 24 Apr 2019, 04:11

Die foutmelding zou voor kunnen komen als je iets vreemds doet met variabele argumenten. Aangezien je 'printf.h' gebruikt, zou het daar mee te maken kunnen hebben. Gebruik je die 'printf.h' ? Misschien kun je die even wegcommentariëren.
Ik zie geen fout in de code, maar je doet wel erg je best om de compiler in de war te brengen met de includes.

Dit zijn je includes, netjes op volgorde:
Code: Alles selecteren
#include <SPI.h>
#include <Servo.h>
#include <nRF24L01.h>
#include "nRF24L01.h"
#include <RF24.h>
#include "RF24.h"
#include <RF24_config.h>
#include <printf.h>
#include "printf.h"


Een #include "RF24.h" (met dubbele aanhalingstekens) wordt meestal gebruikt om een *.h bestand van het eigen project te includen.
Een #include <RF24.h> (met kleiner-dan en groter-dan tekens) wordt meestal gebruikt om een library te includen.
Bij Arduino is dat verschil er nauwelijks, maar omdat het om libraries gaat, heeft de #include <RF24.h> de voorkeur. Dat voor de andere ook, en niet dubbel includen vanzelfsprekend.

Berichten: 6
Geregistreerd: 11 Aug 2018, 14:20

Re: void value not ignored as it ought to be

Berichtdoor wdefossez » 24 Apr 2019, 17:16

alvast bedankt

maar het probleem blijft zich voordoen met de sketch.
wat doe ik toch verkeerd ?
mvg


ontvanger_test_23_apr:84:14: error: void value not ignored as it ought to be

done = radio.read( &message, sizeof(unsigned long) );

^

exit status 1
void value not ignored as it ought to be

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: void value not ignored as it ought to be

Berichtdoor Koepel » 24 Apr 2019, 18:32

O, dat is eigenlijk heel duidelijk.

Weet je wat een "void" is ? Dat is een "niets", een "leegte", "noppes", "nada", "helemaal niks", "bestaat niet".

De radio.read() geeft niets terug. Er is geen return waarde.
Zie de read functie hier: https://github.com/nRF24/RF24/blob/master/RF24.h#L205.
De "void" vóór de functie naam geeft de return waarde aan, maar die is er dus niet want die is "void".
Die functie heeft een parameter "void* buf". Dat ligt iets anders. Dat is een pointer naar "iets", naar "zomaar wat", naar "zoek het lekker zelf uit". Het is dus wel een echte pointer.

Jij wil de return waarde toekennen aan een bool variabele. Maar er is niets om ergens aan toe te kennen.

Dus zegt de compiler: "Die functie heeft geen return waarde, dus de return waarde (die er niet is) behoort genegeerd te worden".

Als je weet waar het over gaat, dan is die melding van de compiler dus best wel duidelijk 8-)

Berichten: 6
Geregistreerd: 11 Aug 2018, 14:20

Re: void value not ignored as it ought to be

Berichtdoor wdefossez » 30 Apr 2019, 09:27

Hoi ,

Bedankt voor je klare uitleg, ik ben echter een complete leek en dit is dus voor mij... Chinees...

Wat moet ik dan aanpassen om de sketch te doen lopen?

vr gr

w@lter

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: void value not ignored as it ought to be

Berichtdoor Koepel » 30 Apr 2019, 10:43

Dit kan niet:
Code: Alles selecteren
done = radio.read( &message, sizeof(unsigned long) );


Dit kan wel:
Code: Alles selecteren
radio.read( &message, sizeof(unsigned long) );


De return waarde van radio.read() probeer je in de variabele 'done' te stoppen. Maar die functie heeft helemaal geen return waarde, want die is "void" en dat betekent "er is geen return waarde".

Berichten: 6
Geregistreerd: 11 Aug 2018, 14:20

Re: void value not ignored as it ought to be

Berichtdoor wdefossez » 30 Apr 2019, 11:08

Ok ik probeer het deze avond als ik terug aan het "prutsen" ben!

alvast een "dikke merci"

w@lter

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: StephenMax en 22 gasten