кто вам мешает сделать приведение указателя на массив к типу uint16_t* в момент передачи в функцию, если вы считаете, что только в этом дело?
Попробуйте, только картинку возьмите 16битную
//вывод фотокартинок
#include <Adafruit_GFX.h>
#include <TFT_eSPI.h>
#include <SPI.h>
#include "ris_.h"//файл хранения массивов фотокартинок
TFT_eSPI tft = TFT_eSPI();//
void setup() {
tft.init();
tft.setRotation(4);
tft.fillScreen(tft.color565(0,0,0));
}
void loop() {
draw_Ris(0,0,ris_00,320,480);
draw_Ris(0,0,ris_11,320,480);
//tft.pushImage(0, 0, 320, 480, (const uint16_t*) ris_00);
//tft.pushImage(0, 0, 320, 480, (const uint16_t*) ris_11);
}
//
void draw_Ris(int x, int y, const uint8_t *bitmap, int w, int h) { //функция вывода фотокартинки
if (x < 0 || x + w > 320 || y < 0 || y + h > 480) {
return;
}
tft.setAddrWindow(x,y,w ,h );
for (int j = 0; j < h; j++) {
for (int i = 0; i < 2 * w; i = i + 2) {
tft.pushColor(256 * bitmap[i + 1 + j * 2 * w] + bitmap[i + j * 2 * w]);
}
}
}
//
Но с цветами враньё, видимо не первый байт со вторым, а наоборот. То есть когда соединяет первый байт старшим считает, второй младшим, а надо наоборот скорее всего. Вот и неясно зачем авторы так пишут функции если конвертер картинок с опцией два байта в одном хрен найдёшь.
Неясно зачем так поступают писатели конвертеров.
По логике тип данных должен определяться глубиной цвета. Т.е. первично - формат изображения.
Впрочем, приведение типа - операция настолько элементарная, что писатели конвертеров об этом могли просто не задумываться.
У компьютера нет “справа налево”, у компьютера есть только последовательность адресов. То есть либо от старшего к младшему, либо наоборот.
Отправь на помойку этот конвертер.
Меня вообще удивляет постановка вопроса: ты что, вообще программировать не умеешь, если вместо того, чтобы написать собственный конвертер пользуешься каким-то левым и неудобным?
И не так просто написать аналог. Проще не пользоваться функцией из библиотеки или её переделать. Тем более, что визуально скорость отрисовки картинок одинаковая (скетч из 29 поста). Хотя библиотека весьма богата функциями.
Зачем? Эта функция работает правильно в рамках данной библиотеки и цвета выводит верно. А вот штатная функция как теперь выяснилось требует постановки галки на опции MSB First в конвертере и писания при вызове