Заливка цветом экрана ST7735

Доброго времени суток. Мучаюсь с экраном на ST7735. Использую библиотеку Adafruit_ST7735.
по идее за заливку цветом отвечает параметр:

tft.fillScreen(ST77XX_BLACK);

Белый и черный получаются без проблем. Зеленый тоже. Но вот синий, красный и ещё несколько из библиотеки выводятся с ошибкой. Их всего-то 7 доп цветов:

// Some ready-made 16-bit ('565') color settings:
#define ST7735_BLACK ST77XX_BLACK
#define ST7735_WHITE ST77XX_WHITE
#define ST7735_RED ST77XX_RED
#define ST7735_GREEN ST77XX_GREEN
#define ST7735_BLUE ST77XX_BLUE
#define ST7735_CYAN ST77XX_CYAN
#define ST7735_MAGENTA ST77XX_MAGENTA
#define ST7735_YELLOW ST77XX_YELLOW
#define ST7735_ORANGE ST77XX_ORANGE

Поэтому хотелось бы понять, как правильно выводить цвета и где и как их можно добавить?

ты неправильно заинициализировал дисплей, посмотри код под спойлером, там и этот дисплей в коде есть и дополнен набор цветов

Что означает эта фраза?
Цвет выводится, но возникает ошибка. Цвет выводится, но не тот? Цвет вообще не выводится, вместо этого высвечивается ошибка?

Выводит другой цвет. Помню, что вместо красного оттенок синего. Если надо, посмотрю точнее

Вроде бы из примера взял:

#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>

  #define TFT_CS         D2
  #define TFT_RST        D6                                            
  #define TFT_DC         D1
//   SCK — D5
//   SDA — D7
//   A0 — D1  он же dc
//   CS — D2
//   RESET — 3V (можно подключить к D6)

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

void setup(void) {
  Serial.begin(9600);
tft.initR(INITR_REDTAB);      // Init ST7735S chip, green tab
  uint16_t time = millis();
//  tft.fillScreen(ST77XX_GREEN);
  time = millis() - time;
tft.fillScreen(ST77XX_RED);  // Вот тут получается ошибка
  delay(4000);
}

Спойлер сейчас гляну

Ах да, совсем забыл. Это я с esp8266 балуюсь. Вдруг имеет значение

что мешает задать цвет не названием, а значениями RGB ?

строка 18, на дисплее наклейка какая, черная и зелёная бывают, с Али обычно чёрные идут, если 1.8

tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab
// Use this initializer if using a 1.8" TFT screen:
  //  tft.initR(INITR_BLACKTAB);      // Init ST7735S chip, black tab

  // OR use this initializer if using a 1.8" TFT screen with offset such as WaveShare:
  // tft.initR(INITR_GREENTAB);      // Init ST7735S chip, green tab

  // OR use this initializer (uncomment) if using a 1.44" TFT:
  //tft.initR(INITR_144GREENTAB); // Init ST7735R chip, green tab

  // OR use this initializer (uncomment) if using a 0.96" 160x80 TFT:
  //tft.initR(INITR_MINI160x80);  // Init ST7735S mini display

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

Насчёт синего ничего не могу сказать, а вот с красным, рискну предположить, что часть библиотеки написана на языке INTERCAL. Там была команда для работы с монитором “передавать все цвета, тщательно избегая красного”. Может, она?

пока ТС не озвучит какой именно дисплей использует это гадание на кофейной гуще или хрустальном шаре…ИМХО

Вы правы. Я сглупил. Вроде бы ж и хотел дать ссылку на дисплей. Вот он

Так глубоко не разбираюсь. Но библиотека стандартная, подтянулась в Arduino IDE. Да и на самом деле, вряд ли была бы такая приписка. Ведь цветов в библиотеке не так много, все показал выше. И красный среди них. Да и из 8 цветов, только 3 правильных. Так что вряд ли. А как понять, что за языки участвовали в написании библиотеки, так вообще не знаю. Как и не знаю такого языка INTERCAL

Цвета так закодированы в самой библиотеке. Они простые, нет каких-то типа серо-буро-малиновых. Вот и использовал то, что проще на мой взгляд

это заработало?

В принципе, в первом сообщении я опубликовал все цвета из библиотеки, и сказал, что правильно отображаются только черный, зеленый и белый. С остальными проблема.

Так это ж инициализация экрана при запуске. Если не ошибаюсь. Но у неё есть только черная, красная и зеленая. Вот пример из библиотеки:

// some flags for initR() :(
#define INITR_GREENTAB 0x00
#define INITR_REDTAB 0x01
#define INITR_BLACKTAB 0x02
#define INITR_18GREENTAB INITR_GREENTAB
#define INITR_18REDTAB INITR_REDTAB
#define INITR_18BLACKTAB INITR_BLACKTAB
#define INITR_144GREENTAB 0x01
#define INITR_MINI160x80 0x04
#define INITR_HALLOWING 0x05

И совсем забыл, что с красным тоже вроде бы и тут проблемы
Но черный и зеленый точно работают

Ну наверное, если белый, зелёный и чёрный на месте, то переставлены местами красный-синий,… не?

А остальные? Ещё ж 5 цветов прописано в библиотеке:

// Some ready-made 16-bit ('565') color settings:
#define ST7735_BLACK ST77XX_BLACK
#define ST7735_WHITE ST77XX_WHITE
#define ST7735_RED ST77XX_RED
#define ST7735_GREEN ST77XX_GREEN
#define ST7735_BLUE ST77XX_BLUE
#define ST7735_CYAN ST77XX_CYAN
#define ST7735_MAGENTA ST77XX_MAGENTA
#define ST7735_YELLOW ST77XX_YELLOW
#define ST7735_ORANGE ST77XX_ORANGE

Может, конечно не правильно читаю библиотеку. Но вроде так.

добавь скока тебе надо, вот тут я определял нужные мне

// Some ready-made 16-bit ('565') color settings:
#define ST77XX_BLACK 0x0000       ///<   0,   0,   0
#define ST77XX_NAVY 0x000F        ///<   0,   0, 123
#define ST77XX_DARKGREEN 0x03E0   ///<   0, 125,   0
#define ST77XX_DARKCYAN 0x03EF    ///<   0, 125, 123
#define ST77XX_MAROON 0x7800      ///< 123,   0,   0
#define ST77XX_PURPLE 0x780F      ///< 123,   0, 123
#define ST77XX_OLIVE 0x7BE0       ///< 123, 125,   0
#define ST77XX_LIGHTGREY 0xC618   ///< 198, 195, 198
#define ST77XX_DARKGREY 0x7BEF    ///< 123, 125, 123
#define ST77XX_BLUE 0x001F        ///<   0,   0, 255
#define ST77XX_GREEN 0x07E0       ///<   0, 255,   0
#define ST77XX_CYAN 0x07FF        ///<   0, 255, 255
#define ST77XX_RED 0xF800         ///< 255,   0,   0
#define ST77XX_MAGENTA 0xF81F     ///< 255,   0, 255
#define ST77XX_YELLOW 0xFFE0      ///< 255, 255,   0
#define ST77XX_WHITE 0xFFFF       ///< 255, 255, 255
#define ST77XX_ORANGE 0xFD20      ///< 255, 165,   0
#define ST77XX_GREENYELLOW 0xAFE5 ///< 173, 255,  41
#define ST77XX_PINK 0xFC18        ///< 255, 130, 198
1 лайк

RGB - это всего три цвета: красный, зеленый и синий. Смешением этих цветов получаются все остальные. Поэтому черный (все выключено) и белый (все включено) будет работать всегда, с остальными цветами возможны варианты