Skocz do zawartości

Nie działa bool?


Marceltck

Pomocna odpowiedź

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"
Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

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 🙁

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.