|
Подключение LCD TFT к ARDUINO UNO
|
|
05-04-2025, 21:35
А так...?
const uint8_t gImage_16[] PROGMEM = {....
05-04-2025, 23:02
06-04-2025, 09:24
Я понял в чём дело, это-же очевидно, видимо просто давно не работал с PROGMEM.
К данным из PROGMEM надо обращаться через специальные функции, почитать про это - например тут https://alexgyver.ru/lessons/progmem/ Получается что надо переписать всю библиотеку и везде где есть обращение к массиву заменить это обращение на pgm_read_byte(&img) или pgm_read_byte(&img[i]), но и при это будут ещё подводные камни так как там все обращения через ссылки.
06-04-2025, 12:12
06-04-2025, 12:59
(06-04-2025, 12:12)Sam : подразумевает чтение из Флэш уже. Нужно только звёздочку поставить.Звёздочка подразумевает что в переменной храниться не значение переменной а адрес по которому это значение храниться в памяти. (06-04-2025, 12:12)Sam : И это я тоже пробовал. Не помогает.Значит не правильно пробовали, дело именно в этом, надо во всех функциях библиотеки прописать pgm_read_byte вместо обычного обращения к массиву просто там есть нюансы, вероятно проще написать свою функцию чем разбираться в библиотечных. В любом случае это не травильная задача на которую надо потратить время и энергию.
06-04-2025, 13:15
06-04-2025, 13:25
Ну да, вроде вся суть именно в этом, с обычным массивом работает а с PROGMEM нет,
и происходит это именно из за того что работа с PROGMEM сильно отличается от работы с обычными переменными, функции библиотеки не рассчитаны для работы с PROGMEM, и поэтому их надо либо модифицировать либо писать свои.
06-04-2025, 15:28
06-04-2025, 23:22
Ради интереса попробуйте...
Надо заменить только одну строку тут https://tehnodium.ru/thread-960-post-248...l#pid24841 Заменить на это: LCD_Output_image(10, 10, 50, 50, pgm_read_word((int)(img_hi)) , 90); или это: LCD_Output_image(10, 10, 50, 50, pgm_read_word((int)(img_hi+1)) , 90); Вот тут про то как передавать массивы PROGMEM в функцию, понять сложно и реализовать с первого раза может и не получится. http://arduino.ru/forum/programmirovanie...ent-336371 PS Исправил на pgm_read_word, но возможно надо использовать на pgm_read_word_near |
|
« Предыдущая тема Следующая »
|



