Работа с библиотекой glcd

Ye11ow
Offline
Зарегистрирован: 04.10.2018

При компиляции кода:

#include <glcd.h>
#include <glcd_Buildinfo.h>
#include <glcd_Config.h>
#include "fonts/SystemFont5x7.h" //

int j = 7;

void setup ()
{
  GLCD.Init (NON_INVERTED);
  GLCD.ClearScreen();
  GLCD.SelectFont(System5x7); 
}

void loop ()
{
  GLCD.ClearScreen();
  GLCD.CursorTo(1,1);
  GLCD.Puts("Hello world");
  do {} while(1);
}

 

Возникает ошибка:

Arduino: 1.8.5 (Windows 7), Плата:"Arduino/Genuino Uno"
 
In file included from C:\Users\User\Desktop\arduino-1.8.5\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,
 
                 from sketch\Project_grafLcd.ino.cpp:1:
 
C:\Users\User\Desktop\arduino-1.8.5\libraries\glcd/fonts/SystemFont5x7.h:48:28: error: variable 'System5x7' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 
 static uint8_t System5x7[] PROGMEM = {
 
                            ^
 
exit status 1
Ошибка компиляции для платы Arduino/Genuino Uno.
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 
Как мне решить эту проблему?
 
DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

После static добавить ключевое слово const

Ye11ow
Offline
Зарегистрирован: 04.10.2018

что за static?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015
 static uint8_t System5x7[] PROGMEM = {

Так понятней, что за static? Надо после него написать const, чтобы получилось

 static const uint8_t System5x7[] PROGMEM = {

 

Ye11ow
Offline
Зарегистрирован: 04.10.2018

хммм. а в этом массиве что я должен указать? код изображения?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Понятно, проехали. Если вы не понимаете, что вам пишет компилятор, и не можете даже попытаться перевести это дело гугльпереводчиком - то и мои ответы покажутся вам китайской грамотой. Я - пас, правильный совет я вам уже дал, более добавить нечего, кроме того, что смотреть надо внутри файла SystemFont5x7.h - о чём и говорит компилятор. Он даже путь к этому файлу показывает: C:\Users\User\Desktop\arduino-1.8.5\libraries\glcd/fonts/SystemFont5x7.h

Ye11ow
Offline
Зарегистрирован: 04.10.2018

Я переводил, но как вы верно подметили, я не понимаю что он мне говорит...Вы, как специалист, могли бы мне, начинающему, подсказать что мне говорит компилятор и что это означает, т.к. мне интересно это знать.

По самостоятельным деймствиям: в файле Systemfont5x7 я нашел строку с static, но я не понимаю что с ней делать...как я понимаю, PROGMEM это массив для отображения алфавита. Но что такое static и для чегго он я не понимаю.

Надеюсь на понимание и буду рад, если вы мне сможете объяснить.

sadman41
Offline
Зарегистрирован: 19.10.2016

Как любитель могу вам посоветовать поискать другую библиотеку.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Ещё раз перечитайте, что я писал. Раз уж нашли строку в файле - будьте добры перечитать, что именно я советовал сделать. Это моё последнее сообщение в данной теме, ибо ответ - уже дан. Всего хорошего.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ye11ow пишет:

Но что такое static и для чегго он я не понимаю.

Вы этоно не "не понимаете", а попросту "не знаете". А не знаете потому, что не прочли ни одной книжки по языку.

Читайте книги - и будет Вам щастте.

Ye11ow
Offline
Зарегистрирован: 04.10.2018

На счет книги, какую посоветуете?

Ye11ow
Offline
Зарегистрирован: 04.10.2018

Разобрался, компиляция прошла. Спасибо.