Skocz do zawartości

Pomocna odpowiedź

Napisano

Kiedyś działał mi ten kod, a teraz wyskakuje jakiś błąd i z tego co widzę w arduino nie podświetla mi się zmienna bool. Co może być tego powodem? Testowane na 2 komputerach z różnymi IDE.

Poniżej kod ale podświetla tylko to ->>>> done = radio.read(msg, 1);

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int msg[1];
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int LED1 = 3;

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

void loop()
{
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("Radio nie dostępne");
}
} 

a problem wyskakuje taki.

Arduino:1.8.1 (Windows 8.1), Płytka:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

C:\Users\Marcinek\Desktop\Robot\Nadajnik\Nadajnik.ino: In function 'void loop()':

Nadajnik:24: error: void value not ignored as it ought to be

     done = radio.read(msg, 1);      

          ^

Znaleziono wiele bibliotek w "SPI.h"
Wykorzystane: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI
Niewykorzystane: C:\Program Files (x86)\Arduino\libraries\SPI
exit status 1
void value not ignored as it ought to be

Ten raport powinien zawierać więcej informacji jeśli w 
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"

Marceltck, korzystasz z biblioteki RF24, ale nie napisałeś co to za biblioteka, jaka wersja i skąd pobrana. Bez takich informacji ciężko jest cokolwiek pomóc. Prawdopodobnie metoda read() zwraca typ void, jest tak np. Tutaj http://tmrh20.github.io/RF24/classRF24.html

Dlaczego wcześniej działało, ciężko stwierdzić. Może inna biblioteka zwracała bool, a może starsza wersja kompilatora nie wykrywała błędu.

Sprawdź jak wygląda sygnatura metody read w Twojej bibliotece, jeśli zwraca void zagadka jest rozwiązana.

Czyli to może być kwestia złej biblioteki RF24? kurcze dziwne bo wydaje mi się że cały czas korzystam z tej samej wgle to nawet pobrałem z miejsca gdzie pisał ten artykuł sam autor.

http://roboblog.eu/2016/03/12/nrf24l01/

u niego w tekscie właśnie widać że bool jest podkreślone u mnie nie. Poza tym coś w błędach wyskoczyło że z biblioteką SPI jest coś nie halo

To dużo wyjaśnia. Biblioteka definuje read() bez zwracania wartości:

  void read( void* buf, uint8_t len );

Pewnie starsza wersja kompilatora (gcc) to tolerowała i program jakoś działał. W nowszej wersji Arduino dali poprawiony gcc i przestało.

Wniosek z tego jest taki: nie każdy program, który działa jest poprawny.

Wniosek nr 2: nie wszystko co znajdziemy w sieci to prawda. Niestety teraz każdy może założyć stronę, albo bloga i wypisywać tam dowolne bzdury 🙁

tzn ja korzystałem już z tego kodu z powodzeniem. Chciałem go zrobić sobie jeszcze raz zeby upewnić się czy mi nrfy działąją a tu psikus nawet nie moge skompilowac

To trochę jakby napisać - zawsze jeździłem 100km/h po mieście i było dobrze, a teraz dostałem mandat, dlaczego? Program był od początku niepoprawny, a że dziłał to zupełnie inna sprawa.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...