Arduino Polska Forum
Jak poradzić sobie z tym błędem? - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Instalacja i rozwiązywanie problemów (https://forum.arduinopolska.pl/dzial-instalacja-i-rozwi%C4%85zywanie-problem%C3%B3w)
+--- Wątek: Jak poradzić sobie z tym błędem? (/watek-jak-poradzi%C4%87-sobie-z-tym-b%C5%82%C4%99dem)



Jak poradzić sobie z tym błędem? - Mick_SQ6IYV - 22-04-2022

Witam!

Może mi ktoś podpowiedzieć jak sobie poradzić z tym błędem? Wszystkie moje pomysły spełzły na niczym Huh


"Arduino:1.8.19 (Windows 10), Płytka:"Arduino Duemilanove or Diecimila, ATmega168"

In file included from C:\Users\PWr\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\cores\arduino/Arduino.h:28:0,

                from C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.h:7,

                from C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp:58:

C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp:69:19: error: variable 'morseTable' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

char morseTable[] PROGMEM = "*5*H*4*S***V*3*I***F***U?*_**2*E*&*L\"**R*+.****A***P@**W***J'1* *6-B*=*D*/"

                  ^

exit status 1

Błąd kompilacji dla płytki Arduino Duemilanove or Diecimila."


Pozdrawiam,


RE: Jak poradzić sobie z tym błędem? - Robson Kerman - 22-04-2022

No jest napisane, że: "variable 'morseTable' must be const", więc w czym problem?


RE: Jak poradzić sobie z tym błędem? - Irvin - 23-04-2022

Można też użyć jakiegoś programu Arduino w wersji ~1.5, potem trzeba było dopisywać const przy progmem.


RE: Jak poradzić sobie z tym błędem? - Mick_SQ6IYV - 25-04-2022

Po próbie dopisania "na żywca" const we wskazanej linii ilość komunikatów zwiększyła się do załączonego niżej rozmiaru:

"C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp:69:19: error: expected initializer before 'const'

char morseTable[] const PROGMEM = "*5*H*4*S***V*3*I***F***U?*_**2*E*&*L\"**R*+.****A***P@**W***J'1* *6-B*=*D*/"

^~~~~

In file included from C:\Users\PWr\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\cores\arduino/Arduino.h:28:0,

from C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.h:7,

from C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp:58:

C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp: In member function 'void morseDecoder::decode()':

C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp:280:45: error: 'morseTable' was not declared in this scope

decodedMorseChar = pgm_read_byte_near(morseTable + morseTablePointer);

^

C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp:280:45: note: suggested alternative: 'morseSpace'

C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp: In member function 'void morseEncoder::encode()':

C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp:319:63: error: 'morseTable' was not declared in this scope

for (i=0; i<morseTableLength; i++) if (pgm_read_byte_near(morseTable + i) == encodeMorseChar) break;

^

C:\Program Files (x86)\Arduino\libraries\MorseEnDecoder\MorseEnDecoder.cpp:319:63: note: suggested alternative: 'Printable'

exit status 1

Błąd kompilacji dla płytki Arduino Duemilanove or Diecimila."


RE: Jak poradzić sobie z tym błędem? - Robson Kerman - 25-04-2022

Po pierwsze zamień to:
char morseTable[] const PROGMEM = "*5*H*4*S***V*3*I***F***U?*_**2*E*&*L\"**R*+.****A***P@**W***J'1* *6-B*=*D*/"

na to:
const char morseTable[] PROGMEM = "*5*H*4*S***V*3*I***F***U?*_**2*E*&*L\"**R*+.****A***P@**W***J'1* *6-B*=*D*/"

Po drugie:
Powiedz mi jaka to płytka i w jakim środowisku programujesz?


RE: Jak poradzić sobie z tym błędem? - kaczakat - 25-04-2022

Jest postęp, bo błędy inne.
Czasami dla jednego projektu prościej jednak ściągnąć starszą wersję Arduino, są ciągle do pobrania i w wersji portable. Masz dziwne miejsce tej biblioteki, mnie pobiera (czy sam wgrywam) do katalogu Arduino w "Moje dokumenty".
Biblioteka też może być w innej wersji stąd błędy.
Jak nie chcesz mieć problemów to najlepiej wszystko mieć zgodne: wersję Arduino, płytkę, biblioteką i program (z tego samego okresu).