• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak poradzić sobie z tym błędem?
#1
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,
Rób to, co kochasz i kochaj to, co robisz! VY 73 Smile
 
Odpowiedź
#2
No jest napisane, że: "variable 'morseTable' must be const", więc w czym problem?
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
Można też użyć jakiegoś programu Arduino w wersji ~1.5, potem trzeba było dopisywać const przy progmem.
 
Odpowiedź
#4
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."
Rób to, co kochasz i kochaj to, co robisz! VY 73 Smile
 
Odpowiedź
#5
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?
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#6
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).
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości