TFT экран. Подвижный элемент на сложном фоне

STM32F303CCT6 там 256 КБ флэша.
т е полностью влазило фоновая картинка + все шаги двух или трех спрайтов, птичка летала за бомбочкой и взрывалась.

Повторю вопрос. Используется 153 кБ памяти плюс спрайт?

В моём примере экранчик меньше (ST7735) - там примерно 41 кБ на фоновую картинку и мелочь на спрайты.

написано же - не памяти, а флеша

Здравой ли выглядит идея, если я закину картинку в EEPROM? Я в любом случае попробую, но вдруг уже кто-то так делал и пришел к однозначному выводу, что так нельзя.

Где написано?

сообщение 21

1 лайк

А на какой плате экспериментируете?

В какую именно ЕЕПРОМ?

Вопрос снят. Я 21 сообщение не увидел.
ESP8266

Это слабо развитое направление в Ардуино. Пока практическое значение неочевидно. Я пробовал как визуализацию графики для плоттера.


у нее же до 4 Мб (если не до 16-ти) внешнего флеша, в чем проблема-то?

Вот, правда библиотека не под Ардуино, и библиотека, а не функция.

/**************************************************************************/
/*!
    @brief  Read 8 bits of data from ILI9341 configuration memory. NOT from RAM!
            This is highly undocumented/supported, it's really a hack but kinda
   works?
    @param    commandByte  The command register to read data from
    @param    index  The byte index into the command to read from
    @return   Unsigned 8-bit data read from ILI9341 register
 */
/**************************************************************************/
uint8_t Adafruit_ILI9341::readcommand8(uint8_t commandByte, uint8_t index) {
  uint8_t data = 0x10 + index;
  sendCommand(0xD9, &data, 1); // Set Index Register
  return Adafruit_SPITFT::readcommand8(commandByte);
}

Нашёл в файле библиотеки Adafruit_ILI9341.
Пишут, что это недокументированная функция, хак-хуяк какой то. Что она делает? Что является её аргументами?

Какая разница, что там внутри?
Главное, дисплей можно сконфигурировать так, что на пиксель будет именно 16 разрядов.

Если помещается - почему нет? Но обычно флэша больше. И доступ к нему быстрее.

Всплыл новый пробел в образовании. Я запихнул картинку в память в виде строк. У меня есть координаты подвижного объекта, соответственно я читаю строки (получается 12 строк) получается 3.4 кБ (цвета я сократил до 256 при отправке в дисплей перекодирую) Перерисовываю на дисплее только область где находился старый объект (сразу же дорисовываю новый).
Вопрос в чем, мне кажется я перемудрил. Смущает два момента:

  1. Что пришлось придумать свой формат для изображения
  2. Что каждый раз приходится читать файл с первой строки
    П.С. ЕЕПРОМ не получилось. С первого раза я прочитал, что ее можно до 4096 кБ перераспределять, а потом глаза разул и увидел, что “к” нет :frowning:

это как?

любое изображение это точки, обычно расположенные построчно

какой файл вы считываете сначала? фон? это конечно быстро работать не будет, читается только та область, котороя будет под спрайтом. Там чистая математика, не изобретайте велосипед…

Сначала надо самому придумать функцию как выводить цветную картинку заданных размеров, штатных функций в библиотеках нет. Удивительно, правда? Потом надо дописать функцию на вывод фрагментов из неё и т.д. На форуме куча моих тем про картинки :), начиная с темы 128 битное число - это как?
Пример:

VID_20240127_155944

Насколько я знаю файлы читаются только последовательно. Т.к. Память позволяет, то для удобства обработки (возможности обращения по адресу) считываю всю строку.

какой нафиг файл? у вас картинка набор байтов в памяти, ничего не мешает прочитать эту область памяти в любом месте. Откройте уже какие нибудь примеры, хоть мой со спрайтами выше, разберите простенькую функцию как работает.