st7735 160 на 128 подсветка барахлит

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Update:

только соотвественно вместо отправки двух байт

14   spiwrite(color >> 8);
15   spiwrite(color);

вам необходимо отправлять массив (буфер)

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

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Проверил крайнюю версию Adafruit библиотеки с github - по умолчанию она стартует на скорости SPI = FCPU/2 - 8 МГц для плат с кварцем на 16 МГц

fillScreen выводит байты парами и заполняет экран 132х162 за ~69-70 мс

Написано не оптимально. Грузит байт и висит пока он не отправится. Если проверять свободен ли SPI перед отправкой байта и не ждать окончания - накладных расходов будет меньше !

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Komandir, а вы попробуйте работать с дисплеем не ожидая отправки байта и написать логику чтоб в этот момент что то делать) сложность кода усложняется в разы!
Не...проще просто отправлять партиями построчно, ускориться минимум в три раза за счёт отказа отправки команд по spi

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

Ну да.

Сначала setAddrWindow(0,y,_width,y+1);

Затем вместо строк 14-15 - цикл. Даже вложенный цикл: внешний по байтам строки монохромной картинки, а внутренний - по битам внутри байта. 

Ну и, как верно заметил Kommandir, вместо ожидания - перекодирование следующего пикселя.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

И fillscreen заполняет одним цветом, т е упирается в скорость шины, а если картинку из eeprom тащить то замедляем сразу в несколько раз.

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

andycat пишет:
И fillscreen заполняет одним цветом, т е упирается в скорость шины, а если картинку из eeprom тащить то замедляем сразу в несколько раз.
Не будет там в несколько раз. 

Оптимально написанное перекодирование, думаю, не вылезет за время ожидания передачи. Т.е. отрисовка картинки будет выполняться практически столько же, сколько и заливка одним цветом.

Только картинку не из EEPROM, а из Flash.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

А зачем цвет/пиксель перекодировать?
Если из 24 в 16 битный цвет то это надо делать заранее и всю картинку хранить уже в правильном расположении цветов.

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

Так у него картинка с однобитным цветом. На каждый бит экрану нужно отправить два байта.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

andriano пишет:

andycat пишет:
И fillscreen заполняет одним цветом, т е упирается в скорость шины, а если картинку из eeprom тащить то замедляем сразу в несколько раз.
Не будет там в несколько раз. 

Оптимально написанное перекодирование, думаю, не вылезет за время ожидания передачи. Т.е. отрисовка картинки будет выполняться практически столько же, сколько и заливка одним цветом.

Только картинку не из EEPROM, а из Flash.


А вы попробуйте а не думайте)
Я это уже прошёл на stm32, любая online обработка цветов замедляет работу, при spi 48 МГц у меня получалось 29 кадров 320х240 в секунду, МК между отрисовкой кадров не успевает кадр обработать ь

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

andriano пишет:

Так у него картинка с однобитным цветом. На каждый бит экрану нужно отправить два байта.


Тогда да, это проще и быстрее.

lilik
Offline
Зарегистрирован: 19.10.2017

Пока такой вариант раскраски картинки тремя фонами. Пока не очень представляю как от попиксельной передачи перейти к построчной. Нужен доп. буфер на строку? Идея чтоб разноцветные "картиночные шкалы влазили в про мини 168" и указатель-стрелка быстро реагировал на изменение величины. 

// РИСУНОК и способы его раскраски
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#define TFT_CS     10
#define TFT_RST    9  
#define TFT_DC     8
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);
extern const unsigned char ris_1[];

void setup(void) {
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
 tft.fillScreen(ST7735_BLACK);
 tft.setRotation(0);//ориентация экрана
 }
void loop() {
//демонстрация вариантов раскраски
drawBitmap_(0,0,ris_1, 128,160,0);
delay(1000);//
drawBitmap_(0,0,ris_1, 128,160,1);
delay(5000);//
drawBitmap_(0,0,ris_1, 128,160,0);
delay(1000);//
drawBitmap_(0,0,ris_1, 128,160,2);
delay(5000);//
drawBitmap_(0,0,ris_1, 128,160,0);
delay(1000);//
drawBitmap_(0,0,ris_1, 128,160,3);
delay(5000);//
}
////////////////////////////////////////////////////////
void drawBitmap_(int16_t x, int16_t y,
 const uint8_t *bitmap, int16_t w, int16_t h,byte raskraska) {
 int16_t i, j, byteWidth = (w + 7) / 8;
  uint8_t byte;

  for(j=0; j<h; j++) {
    for(i=0; i<w; i++) {
      if(i & 7) byte <<= 1;
      else      byte   = pgm_read_byte(bitmap + j * byteWidth + i / 8);
      if(byte & 0x80)
      {
      if(raskraska==0){tft.drawPixel(x+i, y+j,tft.Color565(255,255,255) );}//задаём один цвет  
      if(raskraska==1){tft.drawPixel(x+i, y+j,tft.Color565((1.6)*(j%h),200-(200/w)*(i%w),(255/w)*(i%w)));}//задаём зависимости градиентов цветов 
      if(raskraska==2){
        if(j>h/2-5&&i<=w/2-5){tft.drawPixel(x+i, y+j,tft.Color565(0,255,0) );}// задаём условия цветных секторов
        if(j<=h/2-5&&i>w/2-5){tft.drawPixel(x+i, y+j,tft.Color565(255,0,255) );}
        if(j>h/2-5&&i>w/2-5){tft.drawPixel(x+i, y+j,tft.Color565(0,150,255) );}
        if(i*i+j*j<10010&&j<=w){tft.drawPixel(x+i, y+j,tft.Color565(255,0,0) );}
       }
       if(raskraska==3){
       tft.drawPixel(x+i,y+j,tft.Color565(50*random(1,6),150-50*random(0,4),0));//задаём условие пиксельного ассорти
      }
       }
     
    }
  }
}
//////////////////////////////////////////////////////////

Картинка подобно трафарету накладывается на цветной фон.

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

andycat пишет:
А вы попробуйте а не думайте) Я это уже прошёл на stm32, любая online обработка цветов замедляет работу, при spi 48 МГц у меня получалось 29 кадров 320х240 в секунду, МК между отрисовкой кадров не успевает кадр обработать ь
Не хочу пробовать. 

Для всего, что имеет больше 8 кБайт видеопамяти, я использую исключительно параллельный интерфейс. Ну и, соответственно, для 320*240 - за сотню fps при одноцветной заливке. Это для f103. А для f407 - там радикально быстрее за счет аппаратного интерфейса внешней памяти. Но цифр для этого режима у меня сейчас нет.

lilik
Offline
Зарегистрирован: 19.10.2017
   



#include <avr/pgmspace.h>

const unsigned char ris_1[]PROGMEM = {
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X80,0X40,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0XFF,0XC1,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X01,0XFF,0X83,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X01,0XFF,0X0F,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X01,0XFE,0X1F,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X03,0XFC,0X3F,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X03,0XF8,0X7F,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X07,0XF0,0XFF,0XFF,0X01,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X07,0XE1,0XFF,0XFC,0X07,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X07,0XC3,0XFF,0XF8,0X0F,0XFF,0X80,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X07,0X83,0XFF,0XF0,0X3F,0XFF,0X00,0X00,0X03,0XE0,0X00,0X00,0X01,0XC0,
0X03,0X80,0X07,0X07,0XFF,0XC0,0X7F,0XFE,0X00,0X80,0X1F,0XFC,0X00,0X00,0X01,0XC0,
0X03,0X80,0X07,0X0F,0XFF,0X81,0XFF,0XFC,0X07,0XF8,0X7F,0XFF,0X00,0X00,0X01,0XC0,
0X03,0X80,0X06,0X1F,0XFF,0X03,0XFF,0XF8,0X1F,0XF8,0XFF,0XFF,0X80,0X7C,0X01,0XC0,
0X03,0X80,0X00,0X3F,0XFE,0X07,0XFF,0XF0,0X3F,0XF0,0XFF,0XFF,0XC0,0X7E,0X01,0XC0,
0X03,0X80,0X00,0X7F,0XF8,0X1F,0XFF,0XE0,0X7F,0XF1,0XFF,0X7F,0XC0,0X7E,0X01,0XC0,
0X03,0X80,0X00,0X7F,0XF0,0X3F,0XFF,0XC0,0XFF,0XE1,0XF8,0X0F,0XE0,0X7F,0X01,0XC0,
0X03,0X80,0X00,0XFF,0XE0,0X7F,0XFF,0X83,0XFF,0XE3,0XF0,0X03,0XE0,0X7F,0X01,0XC0,
0X03,0X80,0X01,0XFF,0XC0,0XFF,0XFF,0X07,0XFF,0XC3,0XF0,0X03,0XF0,0X7F,0X01,0XC0,
0X03,0X80,0X01,0XFE,0X01,0XFF,0XFE,0X0F,0XFF,0X87,0XE3,0XE1,0XF8,0X3F,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X7F,0XF8,0X3F,0XFF,0X87,0XE7,0XF0,0XFC,0X3F,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X1F,0XE0,0X7F,0XFF,0X0F,0XCF,0XF8,0XFF,0XFF,0X01,0XC0,
0X03,0X80,0X03,0XFE,0X00,0X00,0X00,0XFF,0XFE,0X0F,0XCF,0XF8,0X7F,0XFF,0X01,0XC0,
0X03,0X80,0X0F,0XFF,0XF8,0X00,0X01,0XFF,0XFE,0X1F,0XCF,0XF8,0X3F,0XFE,0X01,0XC0,
0X03,0X80,0X1F,0XFF,0XFF,0X80,0X03,0XFF,0XFC,0X1F,0XCF,0XFC,0X1F,0XFC,0X01,0XC0,
0X03,0X80,0X1F,0XFF,0XFF,0XF0,0X03,0XFF,0XF8,0X3F,0X8F,0XFC,0X07,0XF8,0X01,0XC0,
0X03,0X80,0X1F,0XFF,0XFF,0XFE,0X01,0XFF,0XF8,0X3F,0X87,0XFE,0X00,0X00,0X01,0XC0,
0X03,0X80,0X0F,0XFF,0XFF,0XFF,0X80,0XFF,0XF0,0X7F,0X87,0XFF,0X00,0X00,0X01,0XC0,
0X03,0X80,0X0F,0XFF,0XFF,0XFF,0XE0,0X3F,0XE0,0XFF,0X87,0XFF,0X80,0X1F,0X01,0XC0,
0X03,0X80,0X0F,0XFF,0XFF,0XFF,0XF8,0X0F,0XE0,0XFF,0X07,0XFF,0XC0,0X7F,0X01,0XC0,
0X03,0X80,0X07,0XFF,0XFF,0XFF,0XFE,0X00,0X01,0XFF,0X07,0XFF,0XE0,0X7F,0X81,0XC0,
0X03,0X80,0X07,0XFF,0XFF,0XFF,0XFF,0X80,0X00,0XFE,0X07,0XFF,0XF0,0X7F,0X81,0XC0,
0X03,0X80,0X03,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X3C,0X07,0XFF,0XF0,0XFF,0X81,0XC0,
0X03,0X80,0X00,0X00,0X07,0XFF,0XFF,0XFC,0X00,0X00,0X07,0XFF,0XF0,0XFF,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X7F,0XFF,0XFF,0X80,0X00,0X0F,0XFF,0XF0,0XFF,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X07,0XFF,0XFF,0XFE,0X0F,0X0F,0XFF,0XE0,0X7F,0X01,0XC0,
0X03,0X80,0X00,0X3F,0XF0,0X00,0XFF,0XFF,0XFF,0XFF,0X87,0XFF,0XE0,0X00,0X01,0XC0,
0X03,0X80,0X00,0X7F,0XFF,0X80,0X1F,0XFF,0XFF,0XFF,0XC7,0XFF,0XC0,0X00,0X01,0XC0,
0X03,0X80,0X00,0X7F,0XFF,0XF8,0X03,0XFF,0XFF,0XFF,0XC3,0XFF,0X80,0X00,0X01,0XC0,
0X03,0X80,0X00,0X7F,0XFF,0XFF,0X00,0X7F,0XFF,0XFF,0XC0,0XFC,0X02,0X00,0X01,0XC0,
0X03,0X80,0X00,0XFF,0XFF,0XFF,0XE0,0X07,0XFF,0XFF,0XC0,0X00,0X0F,0X00,0X01,0XC0,
0X03,0X80,0X00,0XFF,0XFF,0XFF,0XF8,0X00,0X1F,0XFF,0X80,0X00,0X1F,0X80,0X01,0XC0,
0X03,0X80,0X00,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X0F,0X80,0X01,0XC0,
0X03,0X80,0X00,0XFF,0X80,0X7F,0XFF,0XF0,0X00,0X00,0X07,0X0F,0X8F,0XC0,0X01,0XC0,
0X03,0X80,0X01,0XFC,0X00,0X1F,0XFF,0XFC,0X03,0XF8,0X07,0X8F,0X8F,0XE0,0X01,0XC0,
0X03,0X80,0X01,0XF8,0X00,0X07,0XFF,0XFC,0X0F,0XFE,0X07,0X8F,0XC7,0XF0,0X01,0XC0,
0X03,0X80,0X01,0XF1,0X80,0X01,0XFF,0XFC,0X1F,0XFF,0X07,0X8F,0XC7,0XF0,0X01,0XC0,
0X03,0X80,0X01,0XF1,0XF0,0XF0,0XFF,0XFC,0X3F,0XFF,0X87,0X87,0XC7,0XF8,0X01,0XC0,
0X03,0X80,0X03,0XE1,0XE3,0XFC,0X7F,0XF8,0X7E,0X3F,0X87,0X87,0XE3,0XFC,0X01,0XC0,
0X03,0X80,0X03,0XE1,0XE7,0XFE,0X1F,0XF8,0X7C,0X1F,0X87,0XC7,0XE3,0XFC,0X01,0XC0,
0X03,0X80,0X03,0XE3,0XE7,0XFE,0X03,0XE0,0X7E,0X0F,0X87,0XC7,0XE3,0XFE,0X01,0XC0,
0X03,0X80,0X07,0XE3,0XC7,0XFE,0X00,0X00,0X7E,0X0F,0X87,0XC7,0XE1,0XFE,0X01,0XC0,
0X03,0X80,0X07,0XE3,0XC7,0XFE,0X00,0X00,0X3F,0X0F,0X87,0XC7,0XF1,0XFF,0X01,0XC0,
0X03,0X80,0X07,0XE3,0XE0,0XFE,0X00,0X00,0X3F,0X0F,0X87,0XC3,0XF0,0XFF,0X81,0XC0,
0X03,0X80,0X0F,0XE1,0XE0,0X7C,0X00,0X00,0X00,0X1F,0X87,0XC3,0XF0,0XFF,0X81,0XC0,
0X03,0X80,0X1F,0XE1,0XF0,0X7C,0X0F,0XE0,0X00,0X3F,0X07,0XE3,0XF0,0XFF,0X81,0XC0,
0X03,0X80,0X1F,0XF1,0XFF,0XF8,0X3F,0XF8,0X00,0XFF,0X07,0XE3,0XF8,0XFF,0XC1,0XC0,
0X03,0X80,0X3F,0XF0,0XFF,0XF0,0X7F,0XF8,0X03,0XFE,0X07,0XE3,0XF8,0X7F,0XC1,0XC0,
0X03,0X80,0X7F,0XF8,0X7F,0XC1,0XFF,0XF8,0X07,0XFE,0X07,0XE3,0XF8,0X7F,0XC1,0XC0,
0X03,0X80,0XFF,0XFC,0X1F,0X03,0XFF,0XF0,0X0F,0XFC,0X07,0XE1,0XFC,0X7F,0XE1,0XC0,
0X03,0X81,0XFF,0XFE,0X00,0X0F,0XFF,0XF0,0X1F,0XF8,0X03,0XE1,0XFC,0X3F,0XE1,0XC0,
0X03,0X81,0XFF,0XFF,0X80,0X3F,0XFF,0XF0,0X1F,0XF8,0X03,0XE1,0XFC,0X3F,0XE1,0XC0,
0X03,0X81,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X0F,0XF0,0X03,0XF1,0XFE,0X3F,0XE1,0XC0,
0X03,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X03,0XF1,0XFE,0X1F,0XC1,0XC0,
0X03,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XE0,0X00,0X00,0X03,0XF1,0XFE,0X1F,0XC1,0XC0,
0X03,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,0X3F,0X00,0X03,0XF0,0XFF,0X0F,0X81,0XC0,
0X03,0X83,0XFF,0XFF,0XFF,0XFF,0XFF,0XC1,0XFF,0XFF,0X03,0XF0,0XFF,0X07,0X01,0XC0,
0X03,0X83,0XF8,0X0F,0XFF,0XFF,0XFF,0XC3,0XFF,0XFF,0X83,0XF0,0XFF,0X00,0X01,0XC0,
0X03,0X83,0XF8,0X0F,0XFF,0XFF,0XFF,0X87,0XFF,0XFF,0X83,0XF0,0XFF,0X80,0X01,0XC0,
0X03,0X87,0XFF,0X07,0XFF,0XFF,0XFF,0X87,0XFF,0XFF,0X83,0XF8,0XFF,0X80,0X01,0XC0,
0X03,0X87,0XFF,0XC7,0XFF,0XFF,0XFF,0X87,0XFF,0XFF,0XC3,0XF8,0XFF,0X80,0X01,0XC0,
0X03,0X87,0XFF,0XC7,0XFF,0XFF,0XFF,0X87,0XFF,0XFF,0XC3,0XF8,0X7F,0XC0,0X01,0XC0,
0X03,0X87,0XFF,0XC7,0XFF,0XFF,0XFF,0X8F,0XF0,0X3F,0XC3,0XF8,0X7F,0XC0,0X01,0XC0,
0X03,0X87,0XFF,0XC3,0XFF,0XFF,0XFF,0X8F,0XF0,0X3F,0XC3,0XF8,0X7F,0XC0,0X01,0XC0,
0X03,0X87,0XFF,0X83,0XFF,0XFF,0XFF,0X8F,0XE0,0X1F,0XC3,0XF8,0X7F,0XC0,0X01,0XC0,
0X03,0X87,0XFF,0X01,0XFF,0XFF,0XFF,0X8F,0XE0,0X3F,0XC3,0XF8,0X7F,0XE0,0X01,0XC0,
0X03,0X80,0X78,0X00,0X7F,0XFF,0XFF,0X8F,0XE0,0X3F,0XC3,0XF8,0X7F,0XE0,0X01,0XC0,
0X03,0X80,0X00,0X00,0X3F,0XFF,0XFF,0X87,0XF0,0X7F,0XC3,0XF8,0X3F,0XE0,0X01,0XC0,
0X03,0X80,0X00,0X00,0X0F,0XFF,0XFF,0X87,0XF0,0XFF,0XC3,0XF8,0X3F,0XF0,0X01,0XC0,
0X03,0X80,0X3F,0XF8,0X03,0XFF,0XFF,0X87,0XFF,0XFF,0X83,0XFC,0X3F,0XF0,0X01,0XC0,
0X03,0X80,0XFF,0XFF,0X80,0XFF,0XFF,0X87,0XFF,0XFF,0X87,0XFC,0X3F,0XF0,0X01,0XC0,
0X03,0X81,0XFF,0XFF,0XE0,0X3F,0XFF,0X87,0XFF,0XFF,0X87,0XFC,0X3F,0XF0,0X01,0XC0,
0X03,0X80,0XFF,0XFF,0XF8,0X1F,0XFF,0X83,0XFF,0XFF,0X87,0XFC,0X3F,0XF0,0X01,0XC0,
0X03,0X80,0X7F,0XFF,0XFC,0X1F,0XFF,0X83,0XFF,0XFF,0X07,0XFC,0X1F,0XF8,0X01,0XC0,
0X03,0X80,0X01,0XFF,0XFE,0X0F,0XFF,0X81,0XFF,0XFF,0X07,0XFC,0X1F,0XF8,0X01,0XC0,
0X03,0X80,0X00,0X01,0XFF,0X07,0XFF,0X80,0X00,0XFE,0X07,0XFC,0X1F,0XF8,0X01,0XC0,
0X03,0X80,0X00,0X00,0XFF,0X87,0XFF,0X80,0X00,0X00,0X07,0XFC,0X1F,0XF8,0X01,0XC0,
0X03,0X80,0X00,0X00,0X7F,0X83,0XFF,0X80,0X00,0X00,0X07,0XFC,0X1F,0XF8,0X01,0XC0,
0X03,0X80,0X00,0X00,0X3F,0XC3,0XFF,0XC3,0XFF,0X00,0X07,0XFC,0X1F,0XF8,0X01,0XC0,
0X03,0X80,0X1F,0XC0,0X7F,0XC3,0XFF,0XC3,0XFF,0XFC,0X07,0XFC,0X0F,0XF8,0X01,0XC0,
0X03,0X80,0X1F,0XFF,0XFF,0XC3,0XFF,0XC3,0XFF,0XFF,0X07,0XFC,0X0F,0XF8,0X01,0XC0,
0X03,0X80,0X1F,0XFF,0XFF,0XC1,0XFF,0XC3,0XFF,0XFE,0X07,0XFC,0X0F,0XF8,0X01,0XC0,
0X03,0X80,0X1F,0XFF,0XFF,0XE1,0XFF,0XC1,0XC0,0X7E,0X0F,0XFC,0X0F,0XF8,0X01,0XC0,
0X03,0X80,0X0F,0XFF,0XFF,0XE1,0XFF,0XC1,0XE0,0X7E,0X07,0XF8,0X07,0XF8,0X01,0XC0,
0X03,0X80,0X03,0XFF,0XFF,0XE1,0XFF,0XC1,0XF0,0X7C,0X07,0XF8,0X07,0XF8,0X01,0XC0,
0X03,0X80,0X00,0X3F,0XFF,0XE1,0XFF,0XE0,0XF0,0XFC,0X07,0XF8,0X03,0XF0,0X01,0XC0,
0X03,0X80,0X00,0X0F,0XFF,0XE1,0XFF,0XE0,0X7B,0XF8,0X07,0XF8,0X01,0XE0,0X01,0XC0,
0X03,0X80,0X00,0X07,0XFF,0XE1,0XFF,0XE0,0X7F,0XF0,0X07,0XF0,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X01,0XFF,0XC1,0XFF,0XE0,0X3F,0XE0,0X07,0XF0,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X3E,0X01,0XFE,0X00,0X1F,0XC0,0X03,0XE0,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X80,0X03,0X80,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X06,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
0X03,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XC0,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00
};

Файл - картинка.

 

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

lilik пишет:

Пока такой вариант раскраски картинки тремя фонами. Пока не очень представляю как от попиксельной передачи перейти к построчной.

Так выше, вроде, достаточно подробно описано. Включая, в каких строках что менять.

Цитата:

Нужен доп. буфер на строку?

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

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

lilik пишет:

Пока такой вариант раскраски картинки тремя фонами. Пока не очень представляю как от попиксельной передачи перейти к построчной. Нужен доп. буфер на строку? Идея чтоб разноцветные "картиночные шкалы влазили в про мини 168" и указатель-стрелка быстро реагировал на изменение величины. 

// РИСУНОК и способы его раскраски
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#define TFT_CS     10
#define TFT_RST    9  
#define TFT_DC     8
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);
extern const unsigned char ris_1[];

void setup(void) {
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
 tft.fillScreen(ST7735_BLACK);
 tft.setRotation(0);//ориентация экрана
 }
void loop() {
//демонстрация вариантов раскраски
drawBitmap_(0,0,ris_1, 128,160,0);
delay(1000);//
drawBitmap_(0,0,ris_1, 128,160,1);
delay(5000);//
drawBitmap_(0,0,ris_1, 128,160,0);
delay(1000);//
drawBitmap_(0,0,ris_1, 128,160,2);
delay(5000);//
drawBitmap_(0,0,ris_1, 128,160,0);
delay(1000);//
drawBitmap_(0,0,ris_1, 128,160,3);
delay(5000);//
}
////////////////////////////////////////////////////////
void drawBitmap_(int16_t x, int16_t y,
 const uint8_t *bitmap, int16_t w, int16_t h,byte raskraska) {
 int16_t i, j, byteWidth = (w + 7) / 8;
  uint8_t byte;

  for(j=0; j<h; j++) {
    for(i=0; i<w; i++) {
      if(i & 7) byte <<= 1;
      else      byte   = pgm_read_byte(bitmap + j * byteWidth + i / 8);
      if(byte & 0x80)
      {
      if(raskraska==0){tft.drawPixel(x+i, y+j,tft.Color565(255,255,255) );}//задаём один цвет  
      if(raskraska==1){tft.drawPixel(x+i, y+j,tft.Color565((1.6)*(j%h),200-(200/w)*(i%w),(255/w)*(i%w)));}//задаём зависимости градиентов цветов 
      if(raskraska==2){
        if(j>h/2-5&&i<=w/2-5){tft.drawPixel(x+i, y+j,tft.Color565(0,255,0) );}// задаём условия цветных секторов
        if(j<=h/2-5&&i>w/2-5){tft.drawPixel(x+i, y+j,tft.Color565(255,0,255) );}
        if(j>h/2-5&&i>w/2-5){tft.drawPixel(x+i, y+j,tft.Color565(0,150,255) );}
        if(i*i+j*j<10010&&j<=w){tft.drawPixel(x+i, y+j,tft.Color565(255,0,0) );}
       }
       if(raskraska==3){
       tft.drawPixel(x+i,y+j,tft.Color565(50*random(1,6),150-50*random(0,4),0));//задаём условие пиксельного ассорти
      }
       }
     
    }
  }
}
//////////////////////////////////////////////////////////

Картинка подобно трафарету накладывается на цветной фон.


Нет, все плохо, вам в принципе необходимо избавиться от drawpixel и написать свою замену.

lilik
Offline
Зарегистрирован: 19.10.2017

Это вариант где на скорость вывода я не гляжу.

Пока нашёл базовую функцию в библиотеке.

void Adafruit_ST7735::fillRect(int16_t x, int16_t y, int16_t w, int16_t h,
  uint16_t color) 
{
  // rudimentary clipping (drawChar w/big text requires this)
  if((x >= _width) || (y >= _height)) return;
  if((x + w - 1) >= _width)  w = _width  - x;
  if((y + h - 1) >= _height) h = _height - y;

  setAddrWindow(x, y, x+w-1, y+h-1);

  uint8_t hi = color >> 8, lo = color;
    
#if defined (SPI_HAS_TRANSACTION)
  if (hwSPI)      SPI.beginTransaction(mySPISettings);
#endif

  DC_HIGH();
  CS_LOW();
  for(y=h; y>0; y--) 
  {
    for(x=w; x>0; x--) 
    {
      spiwrite(hi);
      spiwrite(lo);
    }
  }
  CS_HIGH();

#if defined (SPI_HAS_TRANSACTION)
  if (hwSPI)      SPI.endTransaction();
#endif
}

 Вместо color в аргументах массив из PROGMEM? 1-бит превращать в один цвет, 0-бит в другой внутри функции?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Второй цикл с 21 по 25 строку в идеале заменить на одну команду - отправка в spi шину массив байт, только посмотреть есть ли она...
Про цвет да, массив заполнения заранее предварительно прописать нужным цветом, но вы пока сплошной цвет добейтесь, потом уже картинку рисовать.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

andycat пишет:
И fillscreen заполняет одним цветом, т е упирается в скорость шины, а если картинку из eeprom тащить то замедляем сразу в несколько раз.

В #52 видно что даже одним цветом заполнение идет на 2/3 скорости шины SPI. Это можно/нужно поправить.

Вывод однобитных картинок на цветной дисплей вижу так:

на основании значения очередного бита берем нужный байт цвета и

начало цикла

отправляем его в железо

у нас 16 тактов что бы перейти к следующему биту и если байт картинки кончился - взять следующий

на 16-17 такте отправляем в железо второй байт для пикселя и у нас ещё 16 тактов что бы проверить не кончилась ли картинка, подготовить след байт цвета и перейти на начало цикла

подгоняем NOP ами длительность полуциклов и в бой ...

так можно выйти на максимум шины SPI

По похожему принципу я сделал вывод на адресную ленту за 14 тактов на бит - https://wokwi.com/projects/328014892704465492

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

lilik пишет:

Я по ходу забыл, в файлы библиотеки "...GFX" надо добавить

#ifndef FONT5X7_H
#define FONT5X7_H

#ifdef __AVR__
 #include <avr/io.h>
 #include <avr/pgmspace.h>
#elif defined(ESP8266)
 #include <pgmspace.h>
#else
 #define PROGMEM
#endif

// Standard ASCII 5x7 font

static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x55, 0x51, 0x55, 0x3E, 
0x3E, 0x6B, 0x6F, 0x6B, 0x3E, 
0x0C, 0x1E, 0x3C, 0x1E, 0x0C, 
0x08, 0x1C, 0x3E, 0x1C, 0x08, 
0x1C, 0x4A, 0x7F, 0x4A, 0x1C, 
0x18, 0x5C, 0x7F, 0x5C, 0x18, 
0x00, 0x1C, 0x1C, 0x1C, 0x00, 
0x7F, 0x63, 0x63, 0x63, 0x7F, 
0x00, 0x1C, 0x14, 0x1C, 0x00, 
0x7F, 0x63, 0x6B, 0x63, 0x7F, 
0x30, 0x48, 0x4D, 0x33, 0x07, 
0x06, 0x29, 0x79, 0x29, 0x06, 
0x20, 0x50, 0x3F, 0x02, 0x0C, 
0x60, 0x7F, 0x05, 0x35, 0x3F, 
0x2A, 0x1C, 0x77, 0x1C, 0x2A, 
0x00, 0x7F, 0x3E, 0x1C, 0x08, 
0x08, 0x1C, 0x3E, 0x7F, 0x00, 
0x14, 0x22, 0x7F, 0x22, 0x14, 
0x00, 0x5F, 0x00, 0x5F, 0x00, 
0x06, 0x09, 0x7F, 0x01, 0x7F, 
0x4A, 0x55, 0x55, 0x55, 0x29, 
0x60, 0x60, 0x60, 0x60, 0x60, 
0x54, 0x62, 0x7F, 0x62, 0x54, 
0x08, 0x04, 0x7E, 0x04, 0x08, 
0x08, 0x10, 0x3F, 0x10, 0x08, 
0x08, 0x08, 0x2A, 0x1C, 0x08, 
0x08, 0x1C, 0x2A, 0x08, 0x08, 
0x1C, 0x10, 0x10, 0x10, 0x10, 
0x1C, 0x3E, 0x08, 0x3E, 0x1C, 
0x30, 0x3C, 0x3F, 0x3C, 0x30, 
0x06, 0x1E, 0x7E, 0x1E, 0x06, 
0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x5F, 0x00, 0x00, 
0x00, 0x07, 0x00, 0x07, 0x00, 
0x14, 0x7F, 0x14, 0x7F, 0x14, 
0x24, 0x2A, 0x7F, 0x2A, 0x12, 
0x23, 0x13, 0x08, 0x64, 0x62, 
0x36, 0x49, 0x56, 0x20, 0x50, 
0x00, 0x00, 0x07, 0x00, 0x00, 
0x00, 0x1C, 0x22, 0x41, 0x00, 
0x00, 0x41, 0x22, 0x1C, 0x00, 
0x14, 0x08, 0x3E, 0x08, 0x14, 
0x08, 0x08, 0x3E, 0x08, 0x08, 
0x00, 0xA0, 0x60, 0x00, 0x00, 
0x08, 0x08, 0x08, 0x08, 0x08, 
0x00, 0x60, 0x60, 0x00, 0x00, 
0x20, 0x10, 0x08, 0x04, 0x02, 
0x3E, 0x51, 0x49, 0x45, 0x3E, 
0x44, 0x42, 0x7F, 0x40, 0x40, 
0x42, 0x61, 0x51, 0x49, 0x46, 
0x21, 0x41, 0x45, 0x4B, 0x31, 
0x18, 0x14, 0x12, 0x7F, 0x10, 
0x27, 0x45, 0x45, 0x45, 0x39, 
0x3C, 0x4A, 0x49, 0x49, 0x30, 
0x01, 0x71, 0x09, 0x05, 0x03, 
0x36, 0x49, 0x49, 0x49, 0x36, 
0x06, 0x49, 0x49, 0x29, 0x1E, 
0x00, 0x6C, 0x6C, 0x00, 0x00, 
0x00, 0xAC, 0x6C, 0x00, 0x00, 
0x08, 0x14, 0x22, 0x41, 0x00, 
0x14, 0x14, 0x14, 0x14, 0x14, 
0x00, 0x41, 0x22, 0x14, 0x08, 
0x02, 0x01, 0x51, 0x09, 0x06, 
0x3E, 0x41, 0x5D, 0x55, 0x5E, 
0x7C, 0x12, 0x11, 0x12, 0x7C, 
0x7F, 0x49, 0x49, 0x49, 0x36, 
0x3E, 0x41, 0x41, 0x41, 0x22, 
0x7F, 0x41, 0x41, 0x22, 0x1C, 
0x7F, 0x49, 0x49, 0x49, 0x41, 
0x7F, 0x09, 0x09, 0x09, 0x01, 
0x3E, 0x41, 0x49, 0x49, 0x7A, 
0x7F, 0x08, 0x08, 0x08, 0x7F, 
0x00, 0x41, 0x7F, 0x41, 0x00, 
0x20, 0x40, 0x41, 0x3F, 0x01, 
0x7F, 0x08, 0x14, 0x22, 0x41, 
0x7F, 0x40, 0x40, 0x40, 0x60, 
0x7F, 0x02, 0x0C, 0x02, 0x7F, 
0x7F, 0x04, 0x08, 0x10, 0x7F, 
0x3E, 0x41, 0x41, 0x41, 0x3E, 
0x7F, 0x09, 0x09, 0x09, 0x06, 
0x3E, 0x41, 0x51, 0x21, 0x5E, 
0x7F, 0x09, 0x19, 0x29, 0x46, 
0x46, 0x49, 0x49, 0x49, 0x31, 
0x03, 0x01, 0x7F, 0x01, 0x03, 
0x3F, 0x40, 0x40, 0x40, 0x3F, 
0x1F, 0x20, 0x40, 0x20, 0x1F, 
0x3F, 0x40, 0x3C, 0x40, 0x3F, 
0x63, 0x14, 0x08, 0x14, 0x63, 
0x07, 0x08, 0x70, 0x08, 0x07, 
0x61, 0x51, 0x49, 0x45, 0x43, 
0x00, 0x7F, 0x41, 0x41, 0x00, 
0x02, 0x04, 0x08, 0x10, 0x20, 
0x00, 0x41, 0x41, 0x7F, 0x00, 
0x04, 0x02, 0x01, 0x02, 0x04, 
0x40, 0x40, 0x40, 0x40, 0x40, 
0x00, 0x01, 0x02, 0x04, 0x00, 
0x20, 0x54, 0x54, 0x54, 0x78, 
0x7F, 0x48, 0x44, 0x44, 0x38, 
0x38, 0x44, 0x44, 0x44, 0x48, 
0x38, 0x44, 0x44, 0x48, 0x7F, 
0x38, 0x54, 0x54, 0x54, 0x18, 
0x08, 0x7E, 0x09, 0x01, 0x02, 
0x08, 0x54, 0x54, 0x58, 0x3C, 
0x7F, 0x08, 0x04, 0x04, 0x78, 
0x00, 0x44, 0x7D, 0x40, 0x00, 
0x20, 0x40, 0x44, 0x3D, 0x00, 
0x7F, 0x10, 0x10, 0x28, 0x44, 
0x00, 0x41, 0x7F, 0x40, 0x00, 
0x7C, 0x04, 0x78, 0x04, 0x78, 
0x7C, 0x08, 0x04, 0x04, 0x78, 
0x38, 0x44, 0x44, 0x44, 0x38, 
0x7C, 0x14, 0x14, 0x14, 0x08, 
0x08, 0x14, 0x14, 0x0C, 0x7C, 
0x7C, 0x08, 0x04, 0x04, 0x08, 
0x48, 0x54, 0x54, 0x54, 0x24, 
0x04, 0x3F, 0x44, 0x40, 0x20, 
0x3C, 0x40, 0x40, 0x20, 0x7C, 
0x1C, 0x20, 0x40, 0x20, 0x1C, 
0x3C, 0x40, 0x38, 0x40, 0x3C, 
0x44, 0x28, 0x10, 0x28, 0x44, 
0x0C, 0x50, 0x50, 0x50, 0x3C, 
0x44, 0x64, 0x54, 0x4C, 0x44, 
0x00, 0x08, 0x36, 0x41, 0x00, 
0x00, 0x00, 0x7F, 0x00, 0x00, 
0x00, 0x41, 0x36, 0x08, 0x00, 
0x02, 0x01, 0x02, 0x04, 0x02, 
0x70, 0x48, 0x44, 0x48, 0x70, 
0x00, 0x0E, 0x11, 0x0E, 0x00, 
0x00, 0x12, 0x1F, 0x10, 0x00, 
0x00, 0x12, 0x19, 0x16, 0x00, 
0x00, 0x11, 0x15, 0x0B, 0x00, 
0x00, 0x07, 0x04, 0x1F, 0x00, 
0x00, 0x17, 0x15, 0x09, 0x00, 
0x00, 0x0E, 0x15, 0x09, 0x00, 
0x00, 0x01, 0x1D, 0x03, 0x00, 
0x00, 0x0A, 0x15, 0x0A, 0x00, 
0x00, 0x12, 0x15, 0x0E, 0x00, 
0x00, 0x04, 0x04, 0x04, 0x00, 
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0x3E, 0x00, 0x00, 0x00, 0x00, 
0x3E, 0x3E, 0x00, 0x00, 0x00, 
0x3E, 0x3E, 0x00, 0x3E, 0x00, 
0x3E, 0x3E, 0x00, 0x3E, 0x3E, 
0x80, 0x80, 0x80, 0x80, 0x80, 
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 
0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 
0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 
0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 
0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 
0x40, 0x00, 0x40, 0x00, 0x40, 
0x60, 0x00, 0x40, 0x00, 0x40, 
0x60, 0x00, 0x70, 0x00, 0x40, 
0x60, 0x00, 0x70, 0x00, 0x78, 
0x7C, 0x00, 0x40, 0x00, 0x40, 
0x7C, 0x00, 0x7E, 0x00, 0x40, 
0x7C, 0x00, 0x7E, 0x00, 0x7F, 
0x1C, 0x77, 0x41, 0x41, 0x41, 
0x41, 0x41, 0x41, 0x41, 0x41, 
0x41, 0x41, 0x41, 0x7F, 0x00, 
0x1C, 0x77, 0x41, 0x5D, 0x5D, 
0x41, 0x41, 0x41, 0x5D, 0x5D, 
0x5D, 0x5D, 0x41, 0x5D, 0x5D, 
0x5D, 0x5D, 0x41, 0x7F, 0x00, 
0x22, 0x1C, 0x14, 0x1C, 0x22, 
0x00, 0x08, 0x1C, 0x08, 0x00, 
0x00, 0x00, 0x77, 0x00, 0x00, 
0x46, 0x5D, 0x55, 0x5D, 0x31, 
0x7C, 0x55, 0x54, 0x55, 0x44, 
0x08, 0x08, 0x2A, 0x08, 0x08, 
0x00, 0x14, 0x08, 0x14, 0x00, 
0x08, 0x14, 0x22, 0x08, 0x14, 
0x7F, 0x41, 0x71, 0x31, 0x1F, 
0x03, 0x05, 0x7F, 0x05, 0x03, 
0x22, 0x14, 0x7F, 0x55, 0x22, 
0x02, 0x55, 0x7D, 0x05, 0x02, 
0x06, 0x09, 0x09, 0x06, 0x00, 
0x44, 0x44, 0x5F, 0x44, 0x44, 
0x1C, 0x14, 0x1C, 0x22, 0x7F, 
0x20, 0x3E, 0x61, 0x3E, 0x20, 
0x20, 0x50, 0x3F, 0x02, 0x0C, 
0x80, 0x7C, 0x20, 0x3C, 0x40, 
0x44, 0x3C, 0x04, 0x7C, 0x44, 
0x00, 0x00, 0x08, 0x00, 0x00, 
0x38, 0x55, 0x54, 0x55, 0x18, 
0x7E, 0x08, 0x10, 0x7F, 0x01, 
0x08, 0x10, 0x08, 0x04, 0x02, 
0x14, 0x08, 0x22, 0x14, 0x08, 
0x0E, 0x06, 0x0A, 0x10, 0x20, 
0x20, 0x10, 0x0A, 0x06, 0x0E, 
0x00, 0x00, 0x00, 0x00, 0x00,
0x38, 0x30, 0x28, 0x04, 0x02, 
0x02, 0x04, 0x28, 0x30, 0x38, 
0x7E, 0x11, 0x11, 0x11, 0x7E, 
0x7F, 0x49, 0x49, 0x49, 0x31, 
0x7F, 0x49, 0x49, 0x49, 0x36, 
0x7F, 0x01, 0x01, 0x01, 0x03, 
0xC0, 0x7F, 0x41, 0x7F, 0xC0, 
0x7F, 0x49, 0x49, 0x49, 0x41, 
0x77, 0x08, 0x7F, 0x08, 0x77, 
0x41, 0x49, 0x49, 0x49, 0x36, 
0x7F, 0x10, 0x08, 0x04, 0x7F, 
0x7C, 0x21, 0x12, 0x09, 0x7C, 
0x7F, 0x08, 0x14, 0x22, 0x41, 
0x40, 0x3E, 0x01, 0x01, 0x7F, 
0x7F, 0x02, 0x0C, 0x02, 0x7F, 
0x7F, 0x08, 0x08, 0x08, 0x7F, 
0x3E, 0x41, 0x41, 0x41, 0x3E, 
0x7F, 0x01, 0x01, 0x01, 0x7F, 
0x7F, 0x09, 0x09, 0x09, 0x06, 
0x3E, 0x41, 0x41, 0x41, 0x22, 
0x01, 0x01, 0x7F, 0x01, 0x01, 
0x07, 0x48, 0x48, 0x48, 0x3F, 
0x0E, 0x11, 0x7F, 0x11, 0x0E, 
0x63, 0x14, 0x08, 0x14, 0x63, 
0x7F, 0x40, 0x40, 0x7F, 0xC0, 
0x07, 0x08, 0x08, 0x08, 0x7F, 
0x7F, 0x40, 0x7F, 0x40, 0x7F, 
0x7F, 0x40, 0x7F, 0x40, 0xFF, 
0x01, 0x7F, 0x48, 0x48, 0x30, 
0x7F, 0x48, 0x48, 0x30, 0x7F, 
0x7F, 0x48, 0x48, 0x48, 0x30, 
0x22, 0x41, 0x49, 0x49, 0x3E, 
0x7F, 0x08, 0x3E, 0x41, 0x3E, 
0x46, 0x29, 0x19, 0x09, 0x7F, 
0x20, 0x54, 0x54, 0x54, 0x78, 
0x3C, 0x4A, 0x4A, 0x49, 0x31, 
0x7C, 0x54, 0x54, 0x54, 0x28, 
0x7C, 0x04, 0x04, 0x04, 0x0C, 
0xC0, 0x78, 0x44, 0x7C, 0xC0, 
0x38, 0x54, 0x54, 0x54, 0x18, 
0x6C, 0x10, 0x7C, 0x10, 0x6C, 
0x44, 0x54, 0x54, 0x54, 0x28, 
0x7C, 0x20, 0x10, 0x08, 0x7C, 
0x7C, 0x40, 0x26, 0x10, 0x7C, 
0x7C, 0x10, 0x10, 0x28, 0x44, 
0x40, 0x38, 0x04, 0x04, 0x7C, 
0x7C, 0x08, 0x10, 0x08, 0x7C, 
0x7C, 0x10, 0x10, 0x10, 0x7C, 
0x38, 0x44, 0x44, 0x44, 0x38, 
0x7C, 0x04, 0x04, 0x04, 0x7C, 
0x7C, 0x14, 0x14, 0x14, 0x08, 
0x38, 0x44, 0x44, 0x44, 0x48, 
0x04, 0x04, 0x7C, 0x04, 0x04, 
0x0C, 0x50, 0x50, 0x50, 0x3C, 
0x18, 0x24, 0xFC, 0x24, 0x18, 
0x44, 0x28, 0x10, 0x28, 0x44, 
0x7C, 0x40, 0x40, 0x7C, 0xC0, 
0x0C, 0x10, 0x10, 0x10, 0x7C, 
0x7C, 0x40, 0x7C, 0x40, 0x7C, 
0x7C, 0x40, 0x7C, 0x40, 0xFC, 
0x04, 0x7C, 0x50, 0x50, 0x20, 
0x7C, 0x50, 0x50, 0x20, 0x7C, 
0x7C, 0x50, 0x50, 0x50, 0x20, 
0x28, 0x44, 0x54, 0x54, 0x38, 
0x7C, 0x10, 0x38, 0x44, 0x38, 
0x48, 0x34, 0x14, 0x14, 0x7C};
#endif // FONT5X7_H

я тебя не сильно расстрою, если скажу, что один символ в таблице лишний? сходу не нашёл какой именно...

lilik
Offline
Зарегистрирован: 19.10.2017

ua6em пишет:

lilik пишет:

Я по ходу забыл, в файлы библиотеки "...GFX" надо добавить

#ifndef FONT5X7_H
#define FONT5X7_H

#ifdef __AVR__
 #include <avr/io.h>
 #include <avr/pgmspace.h>
#elif defined(ESP8266)
 #include <pgmspace.h>
#else
 #define PROGMEM
#endif

// Standard ASCII 5x7 font

static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x55, 0x51, 0x55, 0x3E, 
0x3E, 0x6B, 0x6F, 0x6B, 0x3E, 
0x0C, 0x1E, 0x3C, 0x1E, 0x0C, 
0x08, 0x1C, 0x3E, 0x1C, 0x08, 
0x1C, 0x4A, 0x7F, 0x4A, 0x1C, 
0x18, 0x5C, 0x7F, 0x5C, 0x18, 
0x00, 0x1C, 0x1C, 0x1C, 0x00, 
0x7F, 0x63, 0x63, 0x63, 0x7F, 
0x00, 0x1C, 0x14, 0x1C, 0x00, 
0x7F, 0x63, 0x6B, 0x63, 0x7F, 
0x30, 0x48, 0x4D, 0x33, 0x07, 
0x06, 0x29, 0x79, 0x29, 0x06, 
0x20, 0x50, 0x3F, 0x02, 0x0C, 
0x60, 0x7F, 0x05, 0x35, 0x3F, 
0x2A, 0x1C, 0x77, 0x1C, 0x2A, 
0x00, 0x7F, 0x3E, 0x1C, 0x08, 
0x08, 0x1C, 0x3E, 0x7F, 0x00, 
0x14, 0x22, 0x7F, 0x22, 0x14, 
0x00, 0x5F, 0x00, 0x5F, 0x00, 
0x06, 0x09, 0x7F, 0x01, 0x7F, 
0x4A, 0x55, 0x55, 0x55, 0x29, 
0x60, 0x60, 0x60, 0x60, 0x60, 
0x54, 0x62, 0x7F, 0x62, 0x54, 
0x08, 0x04, 0x7E, 0x04, 0x08, 
0x08, 0x10, 0x3F, 0x10, 0x08, 
0x08, 0x08, 0x2A, 0x1C, 0x08, 
0x08, 0x1C, 0x2A, 0x08, 0x08, 
0x1C, 0x10, 0x10, 0x10, 0x10, 
0x1C, 0x3E, 0x08, 0x3E, 0x1C, 
0x30, 0x3C, 0x3F, 0x3C, 0x30, 
0x06, 0x1E, 0x7E, 0x1E, 0x06, 
0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x5F, 0x00, 0x00, 
0x00, 0x07, 0x00, 0x07, 0x00, 
0x14, 0x7F, 0x14, 0x7F, 0x14, 
0x24, 0x2A, 0x7F, 0x2A, 0x12, 
0x23, 0x13, 0x08, 0x64, 0x62, 
0x36, 0x49, 0x56, 0x20, 0x50, 
0x00, 0x00, 0x07, 0x00, 0x00, 
0x00, 0x1C, 0x22, 0x41, 0x00, 
0x00, 0x41, 0x22, 0x1C, 0x00, 
0x14, 0x08, 0x3E, 0x08, 0x14, 
0x08, 0x08, 0x3E, 0x08, 0x08, 
0x00, 0xA0, 0x60, 0x00, 0x00, 
0x08, 0x08, 0x08, 0x08, 0x08, 
0x00, 0x60, 0x60, 0x00, 0x00, 
0x20, 0x10, 0x08, 0x04, 0x02, 
0x3E, 0x51, 0x49, 0x45, 0x3E, 
0x44, 0x42, 0x7F, 0x40, 0x40, 
0x42, 0x61, 0x51, 0x49, 0x46, 
0x21, 0x41, 0x45, 0x4B, 0x31, 
0x18, 0x14, 0x12, 0x7F, 0x10, 
0x27, 0x45, 0x45, 0x45, 0x39, 
0x3C, 0x4A, 0x49, 0x49, 0x30, 
0x01, 0x71, 0x09, 0x05, 0x03, 
0x36, 0x49, 0x49, 0x49, 0x36, 
0x06, 0x49, 0x49, 0x29, 0x1E, 
0x00, 0x6C, 0x6C, 0x00, 0x00, 
0x00, 0xAC, 0x6C, 0x00, 0x00, 
0x08, 0x14, 0x22, 0x41, 0x00, 
0x14, 0x14, 0x14, 0x14, 0x14, 
0x00, 0x41, 0x22, 0x14, 0x08, 
0x02, 0x01, 0x51, 0x09, 0x06, 
0x3E, 0x41, 0x5D, 0x55, 0x5E, 
0x7C, 0x12, 0x11, 0x12, 0x7C, 
0x7F, 0x49, 0x49, 0x49, 0x36, 
0x3E, 0x41, 0x41, 0x41, 0x22, 
0x7F, 0x41, 0x41, 0x22, 0x1C, 
0x7F, 0x49, 0x49, 0x49, 0x41, 
0x7F, 0x09, 0x09, 0x09, 0x01, 
0x3E, 0x41, 0x49, 0x49, 0x7A, 
0x7F, 0x08, 0x08, 0x08, 0x7F, 
0x00, 0x41, 0x7F, 0x41, 0x00, 
0x20, 0x40, 0x41, 0x3F, 0x01, 
0x7F, 0x08, 0x14, 0x22, 0x41, 
0x7F, 0x40, 0x40, 0x40, 0x60, 
0x7F, 0x02, 0x0C, 0x02, 0x7F, 
0x7F, 0x04, 0x08, 0x10, 0x7F, 
0x3E, 0x41, 0x41, 0x41, 0x3E, 
0x7F, 0x09, 0x09, 0x09, 0x06, 
0x3E, 0x41, 0x51, 0x21, 0x5E, 
0x7F, 0x09, 0x19, 0x29, 0x46, 
0x46, 0x49, 0x49, 0x49, 0x31, 
0x03, 0x01, 0x7F, 0x01, 0x03, 
0x3F, 0x40, 0x40, 0x40, 0x3F, 
0x1F, 0x20, 0x40, 0x20, 0x1F, 
0x3F, 0x40, 0x3C, 0x40, 0x3F, 
0x63, 0x14, 0x08, 0x14, 0x63, 
0x07, 0x08, 0x70, 0x08, 0x07, 
0x61, 0x51, 0x49, 0x45, 0x43, 
0x00, 0x7F, 0x41, 0x41, 0x00, 
0x02, 0x04, 0x08, 0x10, 0x20, 
0x00, 0x41, 0x41, 0x7F, 0x00, 
0x04, 0x02, 0x01, 0x02, 0x04, 
0x40, 0x40, 0x40, 0x40, 0x40, 
0x00, 0x01, 0x02, 0x04, 0x00, 
0x20, 0x54, 0x54, 0x54, 0x78, 
0x7F, 0x48, 0x44, 0x44, 0x38, 
0x38, 0x44, 0x44, 0x44, 0x48, 
0x38, 0x44, 0x44, 0x48, 0x7F, 
0x38, 0x54, 0x54, 0x54, 0x18, 
0x08, 0x7E, 0x09, 0x01, 0x02, 
0x08, 0x54, 0x54, 0x58, 0x3C, 
0x7F, 0x08, 0x04, 0x04, 0x78, 
0x00, 0x44, 0x7D, 0x40, 0x00, 
0x20, 0x40, 0x44, 0x3D, 0x00, 
0x7F, 0x10, 0x10, 0x28, 0x44, 
0x00, 0x41, 0x7F, 0x40, 0x00, 
0x7C, 0x04, 0x78, 0x04, 0x78, 
0x7C, 0x08, 0x04, 0x04, 0x78, 
0x38, 0x44, 0x44, 0x44, 0x38, 
0x7C, 0x14, 0x14, 0x14, 0x08, 
0x08, 0x14, 0x14, 0x0C, 0x7C, 
0x7C, 0x08, 0x04, 0x04, 0x08, 
0x48, 0x54, 0x54, 0x54, 0x24, 
0x04, 0x3F, 0x44, 0x40, 0x20, 
0x3C, 0x40, 0x40, 0x20, 0x7C, 
0x1C, 0x20, 0x40, 0x20, 0x1C, 
0x3C, 0x40, 0x38, 0x40, 0x3C, 
0x44, 0x28, 0x10, 0x28, 0x44, 
0x0C, 0x50, 0x50, 0x50, 0x3C, 
0x44, 0x64, 0x54, 0x4C, 0x44, 
0x00, 0x08, 0x36, 0x41, 0x00, 
0x00, 0x00, 0x7F, 0x00, 0x00, 
0x00, 0x41, 0x36, 0x08, 0x00, 
0x02, 0x01, 0x02, 0x04, 0x02, 
0x70, 0x48, 0x44, 0x48, 0x70, 
0x00, 0x0E, 0x11, 0x0E, 0x00, 
0x00, 0x12, 0x1F, 0x10, 0x00, 
0x00, 0x12, 0x19, 0x16, 0x00, 
0x00, 0x11, 0x15, 0x0B, 0x00, 
0x00, 0x07, 0x04, 0x1F, 0x00, 
0x00, 0x17, 0x15, 0x09, 0x00, 
0x00, 0x0E, 0x15, 0x09, 0x00, 
0x00, 0x01, 0x1D, 0x03, 0x00, 
0x00, 0x0A, 0x15, 0x0A, 0x00, 
0x00, 0x12, 0x15, 0x0E, 0x00, 
0x00, 0x04, 0x04, 0x04, 0x00, 
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0x3E, 0x00, 0x00, 0x00, 0x00, 
0x3E, 0x3E, 0x00, 0x00, 0x00, 
0x3E, 0x3E, 0x00, 0x3E, 0x00, 
0x3E, 0x3E, 0x00, 0x3E, 0x3E, 
0x80, 0x80, 0x80, 0x80, 0x80, 
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 
0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 
0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 
0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 
0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 
0x40, 0x00, 0x40, 0x00, 0x40, 
0x60, 0x00, 0x40, 0x00, 0x40, 
0x60, 0x00, 0x70, 0x00, 0x40, 
0x60, 0x00, 0x70, 0x00, 0x78, 
0x7C, 0x00, 0x40, 0x00, 0x40, 
0x7C, 0x00, 0x7E, 0x00, 0x40, 
0x7C, 0x00, 0x7E, 0x00, 0x7F, 
0x1C, 0x77, 0x41, 0x41, 0x41, 
0x41, 0x41, 0x41, 0x41, 0x41, 
0x41, 0x41, 0x41, 0x7F, 0x00, 
0x1C, 0x77, 0x41, 0x5D, 0x5D, 
0x41, 0x41, 0x41, 0x5D, 0x5D, 
0x5D, 0x5D, 0x41, 0x5D, 0x5D, 
0x5D, 0x5D, 0x41, 0x7F, 0x00, 
0x22, 0x1C, 0x14, 0x1C, 0x22, 
0x00, 0x08, 0x1C, 0x08, 0x00, 
0x00, 0x00, 0x77, 0x00, 0x00, 
0x46, 0x5D, 0x55, 0x5D, 0x31, 
0x7C, 0x55, 0x54, 0x55, 0x44, 
0x08, 0x08, 0x2A, 0x08, 0x08, 
0x00, 0x14, 0x08, 0x14, 0x00, 
0x08, 0x14, 0x22, 0x08, 0x14, 
0x7F, 0x41, 0x71, 0x31, 0x1F, 
0x03, 0x05, 0x7F, 0x05, 0x03, 
0x22, 0x14, 0x7F, 0x55, 0x22, 
0x02, 0x55, 0x7D, 0x05, 0x02, 
0x06, 0x09, 0x09, 0x06, 0x00, 
0x44, 0x44, 0x5F, 0x44, 0x44, 
0x1C, 0x14, 0x1C, 0x22, 0x7F, 
0x20, 0x3E, 0x61, 0x3E, 0x20, 
0x20, 0x50, 0x3F, 0x02, 0x0C, 
0x80, 0x7C, 0x20, 0x3C, 0x40, 
0x44, 0x3C, 0x04, 0x7C, 0x44, 
0x00, 0x00, 0x08, 0x00, 0x00, 
0x38, 0x55, 0x54, 0x55, 0x18, 
0x7E, 0x08, 0x10, 0x7F, 0x01, 
0x08, 0x10, 0x08, 0x04, 0x02, 
0x14, 0x08, 0x22, 0x14, 0x08, 
0x0E, 0x06, 0x0A, 0x10, 0x20, 
0x20, 0x10, 0x0A, 0x06, 0x0E, 
0x00, 0x00, 0x00, 0x00, 0x00,
0x38, 0x30, 0x28, 0x04, 0x02, 
0x02, 0x04, 0x28, 0x30, 0x38, 
0x7E, 0x11, 0x11, 0x11, 0x7E, 
0x7F, 0x49, 0x49, 0x49, 0x31, 
0x7F, 0x49, 0x49, 0x49, 0x36, 
0x7F, 0x01, 0x01, 0x01, 0x03, 
0xC0, 0x7F, 0x41, 0x7F, 0xC0, 
0x7F, 0x49, 0x49, 0x49, 0x41, 
0x77, 0x08, 0x7F, 0x08, 0x77, 
0x41, 0x49, 0x49, 0x49, 0x36, 
0x7F, 0x10, 0x08, 0x04, 0x7F, 
0x7C, 0x21, 0x12, 0x09, 0x7C, 
0x7F, 0x08, 0x14, 0x22, 0x41, 
0x40, 0x3E, 0x01, 0x01, 0x7F, 
0x7F, 0x02, 0x0C, 0x02, 0x7F, 
0x7F, 0x08, 0x08, 0x08, 0x7F, 
0x3E, 0x41, 0x41, 0x41, 0x3E, 
0x7F, 0x01, 0x01, 0x01, 0x7F, 
0x7F, 0x09, 0x09, 0x09, 0x06, 
0x3E, 0x41, 0x41, 0x41, 0x22, 
0x01, 0x01, 0x7F, 0x01, 0x01, 
0x07, 0x48, 0x48, 0x48, 0x3F, 
0x0E, 0x11, 0x7F, 0x11, 0x0E, 
0x63, 0x14, 0x08, 0x14, 0x63, 
0x7F, 0x40, 0x40, 0x7F, 0xC0, 
0x07, 0x08, 0x08, 0x08, 0x7F, 
0x7F, 0x40, 0x7F, 0x40, 0x7F, 
0x7F, 0x40, 0x7F, 0x40, 0xFF, 
0x01, 0x7F, 0x48, 0x48, 0x30, 
0x7F, 0x48, 0x48, 0x30, 0x7F, 
0x7F, 0x48, 0x48, 0x48, 0x30, 
0x22, 0x41, 0x49, 0x49, 0x3E, 
0x7F, 0x08, 0x3E, 0x41, 0x3E, 
0x46, 0x29, 0x19, 0x09, 0x7F, 
0x20, 0x54, 0x54, 0x54, 0x78, 
0x3C, 0x4A, 0x4A, 0x49, 0x31, 
0x7C, 0x54, 0x54, 0x54, 0x28, 
0x7C, 0x04, 0x04, 0x04, 0x0C, 
0xC0, 0x78, 0x44, 0x7C, 0xC0, 
0x38, 0x54, 0x54, 0x54, 0x18, 
0x6C, 0x10, 0x7C, 0x10, 0x6C, 
0x44, 0x54, 0x54, 0x54, 0x28, 
0x7C, 0x20, 0x10, 0x08, 0x7C, 
0x7C, 0x40, 0x26, 0x10, 0x7C, 
0x7C, 0x10, 0x10, 0x28, 0x44, 
0x40, 0x38, 0x04, 0x04, 0x7C, 
0x7C, 0x08, 0x10, 0x08, 0x7C, 
0x7C, 0x10, 0x10, 0x10, 0x7C, 
0x38, 0x44, 0x44, 0x44, 0x38, 
0x7C, 0x04, 0x04, 0x04, 0x7C, 
0x7C, 0x14, 0x14, 0x14, 0x08, 
0x38, 0x44, 0x44, 0x44, 0x48, 
0x04, 0x04, 0x7C, 0x04, 0x04, 
0x0C, 0x50, 0x50, 0x50, 0x3C, 
0x18, 0x24, 0xFC, 0x24, 0x18, 
0x44, 0x28, 0x10, 0x28, 0x44, 
0x7C, 0x40, 0x40, 0x7C, 0xC0, 
0x0C, 0x10, 0x10, 0x10, 0x7C, 
0x7C, 0x40, 0x7C, 0x40, 0x7C, 
0x7C, 0x40, 0x7C, 0x40, 0xFC, 
0x04, 0x7C, 0x50, 0x50, 0x20, 
0x7C, 0x50, 0x50, 0x20, 0x7C, 
0x7C, 0x50, 0x50, 0x50, 0x20, 
0x28, 0x44, 0x54, 0x54, 0x38, 
0x7C, 0x10, 0x38, 0x44, 0x38, 
0x48, 0x34, 0x14, 0x14, 0x7C};
#endif // FONT5X7_H

я тебя не сильно расстрою, если скажу, что один символ в таблице лишний? сходу не нашёл какой именно...

Нет, я брал отсюда, вроде работает без глюков.

http://arduino-kid.ru/blog/adresnaya-lenta-ws2812b-beguschaya-stroka-upravlenie-shriftami

lilik
Offline
Зарегистрирован: 19.10.2017

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

// РИСУНОК тест
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#define TFT_CS     10
#define TFT_RST    9  
#define TFT_DC     8
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);


void setup(void) {
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
 tft.fillScreen(ST7735_BLACK);
 tft.setRotation(0);//ориентация экрана
 }
void loop() {
  tft.fillRect(0, 0, 128, 160,tft.Color565(255,255,255));
 // delay(500);
  tft.fillRect(0, 0, 128, 160,tft.Color565(0,0,0));
  //delay(500);
 }

 

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

выводите через строку черный/белый

какая в итоге частота мерцания ? явно должно быть не как у вас при выводе картинки ...

lilik
Offline
Зарегистрирован: 19.10.2017

Komandir пишет:

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

Нет, конечно быстрее, но не как ssd1306 :)

Я не перепишу функцию   tft.fillRect(0, 0, 128, 160,tft.Color565(255,255,255)); вне библиотеки (жабры коротки :) под массив из progmem и уж тем более в её рамках. Не ясно почему её авторы выбрали попиксельный вывод монохромной картинки как оптимальный.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Ленивые индусы

ssd1306 это 1024 байта, а тут их в 40+ раз больше - плата за цвет. Но есть выигрыш в скорости передачи - 8МГц SPI против 400 КГц (без разгона) I2C

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

20+ - это на самом деле 40.

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

Точно ...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

lilik пишет:

Нет, я брал отсюда, вроде работает без глюков.

http://arduino-kid.ru/blog/adresnaya-lenta-ws2812b-beguschaya-stroka-upravlenie-shriftami

наткнулся на косяк при использовании псевдографики )))
Взял библиотеку с этого форума, тут...посмотрел, в твоей библиотеке отсутствует буква я маленькая

Я конечно дико извиняюсь, но это опять я с этим файлом glcdfont.c в библиотеке <Adafruit_GFX.h> использую совместно с #include <Adafruit_ST7735.h> шрифты встают на свои места, если после первой половины таблицы, в начало второй половины таблицы (>127 символа) вставляю еще один (по сути 257 символ), в таблице это отражено двумя 127 символами.
В какой библиотеке править этот косяк (в каком файле)???

#ifndef FONT5X7_H
#define FONT5X7_H

#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif

// Standard ASCII 5x7 font





static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, // 0
0x01, 0x01, 0x01, 0x01, 0x01, // 1 - 0x3E, 0x55, 0x51, 0x55, 0x3E, 
0x3E, 0x6B, 0x6F, 0x6B, 0x3E, // 2
0x0C, 0x1E, 0x3C, 0x1E, 0x0C, // 3
0x08, 0x1C, 0x3E, 0x1C, 0x08, // 4 
0x1C, 0x4A, 0x7F, 0x4A, 0x1C, // 5 
0x18, 0x5C, 0x7F, 0x5C, 0x18, // 6 
0x0F, 0x01, 0x01, 0x01, 0x01, // 7 - 0x00, 0x1C, 0x1C, 0x1C, 0x00, 
0x7F, 0x63, 0x63, 0x63, 0x7F, // 8
0x00, 0x1C, 0x14, 0x1C, 0x00, // 9
0x7F, 0x63, 0x6B, 0x63, 0x7F, // 10
0x30, 0x48, 0x4D, 0x33, 0x07, // 11
0x06, 0x29, 0x79, 0x29, 0x06, // 12
0x20, 0x50, 0x3F, 0x02, 0x0C, // 13
0x60, 0x7F, 0x05, 0x35, 0x3F, // 14
0x2A, 0x1C, 0x77, 0x1C, 0x2A, // 15
0x00, 0x7F, 0x3E, 0x1C, 0x08, // 16
0x08, 0x1C, 0x3E, 0x7F, 0x00, // 17
0x14, 0x22, 0x7F, 0x22, 0x14, // 18
0x00, 0x5F, 0x00, 0x5F, 0x00, // 19
0x06, 0x09, 0x7F, 0x01, 0x7F, // 20
0x4A, 0x55, 0x55, 0x55, 0x29, // 21
0x60, 0x60, 0x60, 0x60, 0x60, // 22
0x54, 0x62, 0x7F, 0x62, 0x54, // 23
0x08, 0x04, 0x7E, 0x04, 0x08, // 24
0x08, 0x10, 0x3F, 0x10, 0x08, // 25
0x08, 0x08, 0x2A, 0x1C, 0x08, // 26
0x08, 0x1C, 0x2A, 0x08, 0x08, // 27
0x1C, 0x10, 0x10, 0x10, 0x10, // 28
0x1C, 0x3E, 0x08, 0x3E, 0x1C, // 29
0x30, 0x3C, 0x3F, 0x3C, 0x30, // 30
0x06, 0x1E, 0x7E, 0x1E, 0x06, // 31
0x00, 0x00, 0x00, 0x00, 0x00, // 32 - space 
0x00, 0x00, 0x5F, 0x00, 0x00, // 33 - ! 
0x00, 0x07, 0x00, 0x07, 0x00, // 34 - " 
0x14, 0x7F, 0x14, 0x7F, 0x14, // 35 - #
0x24, 0x2A, 0x7F, 0x2A, 0x12, // 36 - $ 
0x23, 0x13, 0x08, 0x64, 0x62, // 37 - % 
0x36, 0x49, 0x56, 0x20, 0x50, // 38 - & 
0x00, 0x00, 0x07, 0x00, 0x00, // 39 - ' 
0x00, 0x1C, 0x22, 0x41, 0x00, // 40 - (
0x00, 0x41, 0x22, 0x1C, 0x00, // 41 - )
0x14, 0x08, 0x3E, 0x08, 0x14, // 42 - *
0x08, 0x08, 0x3E, 0x08, 0x08, // 43 - +
0x00, 0xA0, 0x60, 0x00, 0x00, // 44 - ,
0x08, 0x08, 0x08, 0x08, 0x08, // 45 - - 
0x00, 0x60, 0x60, 0x00, 0x00, // 46 - .
0x20, 0x10, 0x08, 0x04, 0x02, // 47 - /
0x3E, 0x51, 0x49, 0x45, 0x3E, // 48 - 0
0x44, 0x42, 0x7F, 0x40, 0x40, // 49 - 1
0x42, 0x61, 0x51, 0x49, 0x46, // 50 - 2 
0x21, 0x41, 0x45, 0x4B, 0x31, // 51 - 3 
0x18, 0x14, 0x12, 0x7F, 0x10, // 52 - 4
0x27, 0x45, 0x45, 0x45, 0x39, // 53 - 5
0x3C, 0x4A, 0x49, 0x49, 0x30, // 54 - 6
0x01, 0x71, 0x09, 0x05, 0x03, // 55 - 7
0x36, 0x49, 0x49, 0x49, 0x36, // 56 - 8
0x06, 0x49, 0x49, 0x29, 0x1E, // 57 - 9
0x00, 0x6C, 0x6C, 0x00, 0x00, // 58 - : 
0x00, 0xAC, 0x6C, 0x00, 0x00, // 59 - ; 
0x08, 0x14, 0x22, 0x41, 0x00, // 60 - <
0x14, 0x14, 0x14, 0x14, 0x14, // 61 - = 
0x00, 0x41, 0x22, 0x14, 0x08, // 62 - > 
0x02, 0x01, 0x51, 0x09, 0x06, // 63 - ?
0x3E, 0x41, 0x5D, 0x55, 0x5E, // 64 - @
0x7C, 0x12, 0x11, 0x12, 0x7C, // 65 - A 
0x7F, 0x49, 0x49, 0x49, 0x36, // 66 - B
0x3E, 0x41, 0x41, 0x41, 0x22, // 67 - C
0x7F, 0x41, 0x41, 0x22, 0x1C, // 68 - D
0x7F, 0x49, 0x49, 0x49, 0x41, // 69 - E
0x7F, 0x09, 0x09, 0x09, 0x01, // 70 - F
0x3E, 0x41, 0x49, 0x49, 0x7A, // 71 - G
0x7F, 0x08, 0x08, 0x08, 0x7F, // 72 - H
0x00, 0x41, 0x7F, 0x41, 0x00, // 73 - I
0x20, 0x40, 0x41, 0x3F, 0x01, // 74 - J
0x7F, 0x08, 0x14, 0x22, 0x41, // 75 - K
0x7F, 0x40, 0x40, 0x40, 0x60, // 76 - L
0x7F, 0x02, 0x0C, 0x02, 0x7F, // 77 - M
0x7F, 0x04, 0x08, 0x10, 0x7F, // 78 - N
0x3E, 0x41, 0x41, 0x41, 0x3E, // 79 - O
0x7F, 0x09, 0x09, 0x09, 0x06, // 80 - P
0x3E, 0x41, 0x51, 0x21, 0x5E, // 81 - Q
0x7F, 0x09, 0x19, 0x29, 0x46, // 82 - R
0x46, 0x49, 0x49, 0x49, 0x31, // 83 - S
0x03, 0x01, 0x7F, 0x01, 0x03, // 84 - T
0x3F, 0x40, 0x40, 0x40, 0x3F, // 85 - U
0x1F, 0x20, 0x40, 0x20, 0x1F, // 86 - V
0x3F, 0x40, 0x3C, 0x40, 0x3F, // 87 - W
0x63, 0x14, 0x08, 0x14, 0x63, // 88 - X
0x07, 0x08, 0x70, 0x08, 0x07, // 89 - Y
0x61, 0x51, 0x49, 0x45, 0x43, // 90 - Z
0x00, 0x7F, 0x41, 0x41, 0x00, // 91 - 
0x02, 0x04, 0x08, 0x10, 0x20, // 92 - 
0x00, 0x41, 0x41, 0x7F, 0x00, // 93 -
0x04, 0x02, 0x01, 0x02, 0x04, // 94 -
0x40, 0x40, 0x40, 0x40, 0x40, // 95 -
0x00, 0x01, 0x02, 0x04, 0x00, // 96 -
0x20, 0x54, 0x54, 0x54, 0x78, // 97 -
0x7F, 0x48, 0x44, 0x44, 0x38, // 98 -
0x38, 0x44, 0x44, 0x44, 0x48, // 99 -
0x38, 0x44, 0x44, 0x48, 0x7F, // 100 -
0x38, 0x54, 0x54, 0x54, 0x18, // 101 -
0x08, 0x7E, 0x09, 0x01, 0x02, // 102 -
0x08, 0x54, 0x54, 0x58, 0x3C, // 103 -
0x7F, 0x08, 0x04, 0x04, 0x78, // 104 -
0x00, 0x44, 0x7D, 0x40, 0x00, // 105 -
0x20, 0x40, 0x44, 0x3D, 0x00, // 106 -
0x7F, 0x10, 0x10, 0x28, 0x44, // 107 -
0x00, 0x41, 0x7F, 0x40, 0x00, // 108 -
0x7C, 0x04, 0x78, 0x04, 0x78, // 109 -
0x7C, 0x08, 0x04, 0x04, 0x78, // 110 -
0x38, 0x44, 0x44, 0x44, 0x38, // 111 -
0x7C, 0x14, 0x14, 0x14, 0x08, // 112 -
0x08, 0x14, 0x14, 0x0C, 0x7C, // 113 -
0x7C, 0x08, 0x04, 0x04, 0x08, // 114 -
0x48, 0x54, 0x54, 0x54, 0x24, // 115 -
0x04, 0x3F, 0x44, 0x40, 0x20, // 116 -
0x3C, 0x40, 0x40, 0x20, 0x7C, // 117 -
0x1C, 0x20, 0x40, 0x20, 0x1C, // 118 -
0x3C, 0x40, 0x38, 0x40, 0x3C, // 119 -
0x44, 0x28, 0x10, 0x28, 0x44, // 120 -
0x0C, 0x50, 0x50, 0x50, 0x3C, // 121 -
0x44, 0x64, 0x54, 0x4C, 0x44, // 122 -
0x00, 0x08, 0x36, 0x41, 0x00, // 123 -
0x00, 0x00, 0x7F, 0x00, 0x00, // 124 -
0x00, 0x41, 0x36, 0x08, 0x00, // 125 -
0x02, 0x01, 0x02, 0x04, 0x02, // 126 -
0x70, 0x48, 0x44, 0x48, 0x70, // 127 -
0x70, 0x48, 0x44, 0x48, 0x70, // 127 -
0x00, 0x0E, 0x11, 0x0E, 0x00, // 128 -
0x00, 0x12, 0x1F, 0x10, 0x00, // 129 -
0x00, 0x12, 0x19, 0x16, 0x00, // 130 -
0x00, 0x11, 0x15, 0x0B, 0x00, // 131 -
0x00, 0x07, 0x04, 0x1F, 0x00, // 132 -
0x00, 0x17, 0x15, 0x09, 0x00, // 133 -
0x00, 0x0E, 0x15, 0x09, 0x00, // 134 -
0x00, 0x01, 0x1D, 0x03, 0x00, // 135 -
0x00, 0x0A, 0x15, 0x0A, 0x00, // 136 -
0x00, 0x12, 0x15, 0x0E, 0x00, // 137 -
0x00, 0x04, 0x04, 0x04, 0x00, // 138 -
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 139 -
0x3E, 0x00, 0x00, 0x00, 0x00, // 140 -
0x3E, 0x3E, 0x00, 0x00, 0x00, // 141 -
0x3E, 0x3E, 0x00, 0x3E, 0x00, // 142 -
0x3E, 0x3E, 0x00, 0x3E, 0x3E, // 143 -
0x80, 0x80, 0x80, 0x80, 0x80, // 144 -
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, // 145 -
0xD0, 0xD0, 0xD0, 0xD0, 0xD0, // 146 -
0xD8, 0xD8, 0xD8, 0xD8, 0xD8, // 147 -
0xDA, 0xDA, 0xDA, 0xDA, 0xDA, // 148 -
0xDB, 0xDB, 0xDB, 0xDB, 0xDB, // 149 -
0x40, 0x00, 0x40, 0x00, 0x40, // 150 -
0x60, 0x00, 0x40, 0x00, 0x40, // 151 -
0x60, 0x00, 0x70, 0x00, 0x40, // 152 -
0x60, 0x00, 0x70, 0x00, 0x78, // 153 -
0x7C, 0x00, 0x40, 0x00, 0x40, // 154 -
0x7C, 0x00, 0x7E, 0x00, 0x40, // 155 -
0x7C, 0x00, 0x7E, 0x00, 0x7F, // 156 -
0x1C, 0x77, 0x41, 0x41, 0x41, // 157 -
0x41, 0x41, 0x41, 0x41, 0x41, // 158 -
0x41, 0x41, 0x41, 0x7F, 0x00, // 159 -
0x1C, 0x77, 0x41, 0x5D, 0x5D, // 160 -
0x41, 0x41, 0x41, 0x5D, 0x5D, // 161 -
0x5D, 0x5D, 0x41, 0x5D, 0x5D, // 162 -
0x5D, 0x5D, 0x41, 0x7F, 0x00, // 163 -
0x22, 0x1C, 0x14, 0x1C, 0x22, // 164 -
0x00, 0x08, 0x1C, 0x08, 0x00, // 165 -
0x00, 0x00, 0x77, 0x00, 0x00, // 166 -
0x46, 0x5D, 0x55, 0x5D, 0x31, // 167 -
0x7C, 0x55, 0x54, 0x55, 0x44, // 168 -
0x08, 0x08, 0x2A, 0x08, 0x08, // 169 -
0x00, 0x14, 0x08, 0x14, 0x00, // 170 -
0x08, 0x14, 0x22, 0x08, 0x14, // 171 -
0x7F, 0x41, 0x71, 0x31, 0x1F, // 172 -
0x03, 0x05, 0x7F, 0x05, 0x03, // 173 -
0x22, 0x14, 0x7F, 0x55, 0x22, // 174 -
0x02, 0x55, 0x7D, 0x05, 0x02, // 175 -
0x06, 0x09, 0x09, 0x06, 0x00, // 176 -
0x44, 0x44, 0x5F, 0x44, 0x44, // 177 -
0x1C, 0x14, 0x1C, 0x22, 0x7F, // 178 -
0x20, 0x3E, 0x61, 0x3E, 0x20, // 179 -
0x20, 0x50, 0x3F, 0x02, 0x0C, // 180 -
0x80, 0x7C, 0x20, 0x3C, 0x40, // 181 -
0x44, 0x3C, 0x04, 0x7C, 0x44, // 182 -
0x00, 0x00, 0x08, 0x00, 0x00, // 183 -
0x38, 0x55, 0x54, 0x55, 0x18, // 184 -
0x7E, 0x08, 0x10, 0x7F, 0x01, // 185 -
0x08, 0x10, 0x08, 0x04, 0x02, // 186 -
0x14, 0x08, 0x22, 0x14, 0x08, // 187 -
0x0E, 0x06, 0x0A, 0x10, 0x20, // 188 -
0x20, 0x10, 0x0A, 0x06, 0x0E, // 189 -
0x38, 0x30, 0x28, 0x04, 0x02, // 190 -
0x02, 0x04, 0x28, 0x30, 0x38, // 191 -
0x00, 0x00, 0x00, 0x00, 0xFF, // 192 - C0 - 0x7E, 0x11, 0x11, 0x11, 0x7E, //C0
0x7F, 0x49, 0x49, 0x49, 0x31, // 193 - C1
0x7F, 0x49, 0x49, 0x49, 0x36, // 194 - C2
0x7F, 0x01, 0x01, 0x01, 0x03, // 195 - C3
0xC0, 0x7F, 0x41, 0x7F, 0xC0, // 196 - C4
0x7F, 0x49, 0x49, 0x49, 0x41, // 197 - C5
0x77, 0x08, 0x7F, 0x08, 0x77, // 198 - C6
0x41, 0x49, 0x49, 0x49, 0x36, // 199 - C7
0x7F, 0x10, 0x08, 0x04, 0x7F, // 200 - C8
0x7C, 0x21, 0x12, 0x09, 0x7C, // 201 - C9
0x7F, 0x08, 0x14, 0x22, 0x41, // 202 - CA
0x40, 0x3E, 0x01, 0x01, 0x7F, // 203 - CB
0x7F, 0x02, 0x0C, 0x02, 0x7F, // 204 - CC
0x7F, 0x08, 0x08, 0x08, 0x7F, // 205 - CD
0x3E, 0x41, 0x41, 0x41, 0x3E, // 206 - CE
0x7F, 0x01, 0x01, 0x01, 0x7F, // 207 - CF
0x7F, 0x09, 0x09, 0x09, 0x06, // 208 - D0
0x3E, 0x41, 0x41, 0x41, 0x22, // 209 - D1
0x01, 0x01, 0x7F, 0x01, 0x01, // 210 - D2
0x07, 0x48, 0x48, 0x48, 0x3F, // 211 - D3
0x0E, 0x11, 0x7F, 0x11, 0x0E, // 212 - D4
0x63, 0x14, 0x08, 0x14, 0x63, // 213 - D5
0x7F, 0x40, 0x40, 0x7F, 0xC0, // 214 - D6
0x07, 0x08, 0x08, 0x08, 0x7F, // 215 - D7
0x7F, 0x40, 0x7F, 0x40, 0x7F, // 216 - D8
0x7F, 0x40, 0x7F, 0x40, 0xFF, // 217 - D9
0x01, 0x7F, 0x48, 0x48, 0x30, // 218 - DA
0x7F, 0x48, 0x48, 0x30, 0x7F, // 219 - DB
0x7F, 0x48, 0x48, 0x48, 0x30, // 220 - DC
0x22, 0x41, 0x49, 0x49, 0x3E, // 221 - DD
0x7F, 0x08, 0x3E, 0x41, 0x3E, // 222 - DE
0x46, 0x29, 0x19, 0x09, 0x7F, // 223 - DF
0x20, 0x54, 0x54, 0x54, 0x78, // 224 - E0 
0x3C, 0x4A, 0x4A, 0x49, 0x31, // 225 - E1
0x7C, 0x54, 0x54, 0x54, 0x28, // 226 - E2
0x7C, 0x04, 0x04, 0x04, 0x0C, // 227 - E3
0xC0, 0x78, 0x44, 0x7C, 0xC0, // 228 - E4
0x38, 0x54, 0x54, 0x54, 0x18, // 229 - E5
0x00, 0x00, 0x00, 0xFF, 0x00, // 230 - E6 - 0x6C, 0x10, 0x7C, 0x10, 0x6C, 
0x44, 0x54, 0x54, 0x54, 0x28, // 231 - E7
0x7C, 0x20, 0x10, 0x08, 0x7C, // 232 - E8
0x7C, 0x40, 0x26, 0x10, 0x7C, // 233 - E9
0x7C, 0x10, 0x10, 0x28, 0x44, // 234 - EA
0x40, 0x38, 0x04, 0x04, 0x7C, // 235 - EB
0x7C, 0x08, 0x10, 0x08, 0x7C, // 236 - EC
0x7C, 0x10, 0x10, 0x10, 0x7C, // 237 - ED
0x38, 0x44, 0x44, 0x44, 0x38, // 238 - EE
0x7C, 0x04, 0x04, 0x04, 0x7C, // 239 - EF
0xFF, 0x00, 0x00, 0x00, 0x00, // 240 - F0 - 0x7C, 0x14, 0x14, 0x14, 0x08,
0x00, 0xFF, 0x00, 0x00, 0x00, // 241 - F1 - 0x38, 0x44, 0x44, 0x44, 0x48,
0x04, 0x04, 0x7C, 0x04, 0x04, // 242 - F2
0x0C, 0x50, 0x50, 0x50, 0x3C, // 243 - F3
0x18, 0x24, 0xFC, 0x24, 0x18, // 244 - F4
0x44, 0x28, 0x10, 0x28, 0x44, // 245 - F5
0x7C, 0x40, 0x40, 0x7C, 0xC0, // 246 - F6
0x0C, 0x10, 0x10, 0x10, 0x7C, // 247 - F7
0x00, 0x00, 0xFF, 0x00, 0x00, // 248 - F8 - 0x7C, 0x40, 0x7C, 0x40, 0x7C, //F8
0x4C, 0x90, 0x90, 0x90, 0x7C, // 249 - F9 - 0x7C, 0x40, 0x7C, 0x40, 0xFC, 
0x04, 0x7C, 0x50, 0x50, 0x20, // 250 - FA
0x7C, 0x50, 0x50, 0x20, 0x7C, // 251 - FB
0x7C, 0x50, 0x50, 0x50, 0x20, // 252 - FC
0x28, 0x44, 0x54, 0x54, 0x38, // 253 - FD
0x02, 0x01, 0x02, 0x04, 0x02, // 254 - FE - 0x7C, 0x10, 0x38, 0x44, 0x38, //FE
0xFF, 0x01, 0x01, 0x01, 0x01};// 255 - FF - 0x48, 0x34, 0x14, 0x14, 0x7C

#endif // FONT5X7_H

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Я наверное че то не понимаю, но вывести пиксельный рисунок на растр ничего не стОит, нафига библиотеки. Есть растр в инете кодировки win1251, а вывести её в экран просто

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andycat пишет:
Я наверное че то не понимаю, но вывести пиксельный рисунок на растр ничего не стОит, нафига библиотеки. Есть растр в инете кодировки win1251, а вывести её в экран просто

в адафрутовской библиотеке есть косяк, хочется найти и исправить, так как я лично её пользую...

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

ua6em а есть уверенность что она может больше 256 символов ???

void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size) { drawChar(x, y, c, color, bg, size, size);

Что мешает пройти вывод символа по шагам ???

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Komandir пишет:

ua6em а есть уверенность что она может больше 256 символов ???

void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size) { drawChar(x, y, c, color, bg, size, size);

Что мешает пройти вывод символа по шагам ???


да и не должна, я о том и говорю, что в таблице с русской кодировкой 257 символов...
по моему эта тема уже была на форуме, но не нашёл...
В оригинальной с умляутами чётко 256...
Я что этой темой озадачился, не пошла кодировка (отображение псевдографикой) при переносе кода сканера 2.4 на другой камень и другой монитор, ST7735 ... плюнул, переделал на вывод отображения сигнала через графику...и быстрее и точнее получилось...но раз непонятки остались надо эту тему добить

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

ua6em пишет:

в таблице с русской кодировкой 257 символов...

Это неправильная таблица.

lilik
Offline
Зарегистрирован: 19.10.2017

:)

Пытаясь увеличить скорость вывода картинки, напоролся на встроенную в "иде" библиотеку TFT. Думаю, счас скорость другой библиотекой наращу... Полез.

А она по сути и есть адафрутовская из двух. В ней как раз исходник этого файла-буквахрана. Так там 254 символа, если я правильно пересчитал.

PS Буква "я маленькая" и вправду не выводится.

Недооценил я себя. Методом тыка и глубоких диванных раздумий увеличил существенно скорость вывода картинки во весь экран. Но сделать с границами областей и координатами вывода не могу... и мельтишат картинки, всё равно глаз видит смену. Слабый экран в сравнении с SSD1306. Я уже молчу если светодиод(ы?) подсветки перегорит или понадобиться гирлянда экранов на про мини 168? или грамотно ставить резисторы - в делители (10 штук).

// РИСУНОК
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#define TFT_CS     10
#define TFT_RST    9  
#define TFT_DC     8
 Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);
extern const unsigned char ris_1[];
extern const unsigned char ris_2[];

void setup(void) {
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
 tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
 tft.fillScreen(ST7735_BLACK);
 tft.setRotation(0);//ориентация экрана
  }
void loop() {
 drawBitmap_(ris_1);
 drawBitmap_(ris_2);
 }
/////////////////////////////////////////////////////////////////////
void drawBitmap_(const uint8_t *bitmap) {
 tft.setAddrWindow(0,0,128,160);
 int16_t i, j, byteWidth = (128 + 7) / 8;
  uint8_t byte;
 for(j=0; j<160; j++) {
    for(i=0; i<128; i++) {
      if(i & 7) byte <<= 1;
      else      byte   = pgm_read_byte(bitmap + j * byteWidth + i / 8);
      if(byte & 0x80)
      {
    tft.pushColor(tft.Color565(255,255,255) ); 
      }
     else {
    tft.pushColor(tft.Color565(0,0,0) );
     }
    }
  }
}
///////////////////////////////////////////////////////////////////// 

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

есть функция в SPI

  inline static void transfer(void *buf, size_t count) {
    if (count == 0) return;
    uint8_t *p = (uint8_t *)buf;
    SPDR = *p;
    while (--count > 0) {
      uint8_t out = *(p + 1);
      while (!(SPSR & _BV(SPIF))) ;
      uint8_t in = SPDR;
      SPDR = out;
      *p++ = in;
    }
    while (!(SPSR & _BV(SPIF))) ;
    *p = SPDR;
  }

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

update: наверное как то так, проверить не на чем.

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library

#include <SPI.h>

#define TFT_CS     10
#define TFT_RST    9
#define TFT_DC     8

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

extern const unsigned char ris_1[];
extern const unsigned char ris_2[];

#define dispW 128
#define dispH 160

unsigned char lineBuf[dispW * 2];

void setup() {
  // put your setup code here, to run once:
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
  tft.fillScreen(ST7735_BLACK);
  tft.setRotation(0);//ориентация экрана
}

void loop() {
  // put your main code here, to run repeatedly:
  drawBitmap_(ris_1);
  drawBitmap_(ris_2);
}

void drawBitmap_(const uint8_t *bitmap) {
  for (unsigned short j = 0; j < dispH; j++) {
    for (unsigned short i = 0; i < dispW; ++i) {
      unsigned char sourceByte = pgm_read_byte(bitmap + j * dispW + i);
      for (unsigned char k = 0; k < 8; ++k) {
        if (bitRead(sourceByte, k)) {
          lineBuf[i * 2] = 0xFF; lineBuf[i * 2 + 1] = 0xFF; // white color
        } else {
          lineBuf[i * 2] = 0x00; lineBuf[i * 2 + 1] = 0x00; // black color
        }
      }
    }
    tft.setAddrWindow(0, j, dispW-1, j);
    tft.transfer(&lineBuf, dispW);
  }
}

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andriano пишет:

ua6em пишет:

в таблице с русской кодировкой 257 символов...

Это неправильная таблица.

неправильные пчёлы и неправильный мёд )))
Даже с оригинальной, что в поставке проблема, там 256 символов, от 0 до 255, исправляешь 255, а выводить его надо как 254 )))
О чём и речь )))

lilik
Offline
Зарегистрирован: 19.10.2017

andycat пишет:

 

update: наверное как то так, проверить не на чем.

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library

#include <SPI.h>

#define TFT_CS     10
#define TFT_RST    9
#define TFT_DC     8

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

extern const unsigned char ris_1[];
extern const unsigned char ris_2[];

#define dispW 128
#define dispH 160

unsigned char lineBuf[dispW * 2];

void setup() {
  // put your setup code here, to run once:
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
  tft.fillScreen(ST7735_BLACK);
  tft.setRotation(0);//ориентация экрана
}

void loop() {
  // put your main code here, to run repeatedly:
  drawBitmap_(ris_1);
  drawBitmap_(ris_2);
}

void drawBitmap_(const uint8_t *bitmap) {
  for (unsigned short j = 0; j < dispH; j++) {
    for (unsigned short i = 0; i < dispW; ++i) {
      unsigned char sourceByte = pgm_read_byte(bitmap + j * dispW + i);
      for (unsigned char k = 0; k < 7; ++k) {
        if (bitRead(sourceByte, k)) {
          lineBuf[i * 2] = 0xFF; lineBuf[i * 2 + 1] = 0xFF; // white color
        } else {
          lineBuf[i * 2] = 0x00; lineBuf[i * 2 + 1] = 0x00; // black color
        }
      }
    }
    tft.setAddrWindow(0, j, dispW-1, j);
    tft.transfer(&lineBuf, dispW);
  }
}

 

Нет, экран чёрный, сначала не компилировалось, по наитию подправил строку 48 , но не помогло.

//РИСУНОК
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library

#include <SPI.h>

#define TFT_CS     10
#define TFT_RST    9
#define TFT_DC     8

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

extern const unsigned char ris_1[];
extern const unsigned char ris_2[];

#define dispW 128
#define dispH 160

unsigned char lineBuf[dispW * 2];

void setup() {
  // put your setup code here, to run once:
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
  tft.fillScreen(ST7735_BLACK);
  tft.setRotation(0);//ориентация экрана
}

void loop() {
  // put your main code here, to run repeatedly:
  drawBitmap_(ris_1);
  drawBitmap_(ris_2);
}

void drawBitmap_(const uint8_t *bitmap) {
  for (unsigned short j = 0; j < dispH; j++) {
    for (unsigned short i = 0; i < dispW; ++i) {
      unsigned char sourceByte = pgm_read_byte(bitmap + j * dispW + i);
      for (unsigned char k = 0; k < 7; ++k) {
        if (bitRead(sourceByte, k)) {
          lineBuf[i * 2] = 0xFF; lineBuf[i * 2 + 1] = 0xFF; // white color
        } else {
          lineBuf[i * 2] = 0x00; lineBuf[i * 2 + 1] = 0x00; // black color
        }
      }
    }
    tft.setAddrWindow(0, j, dispW-1, j);
    SPI.transfer(&lineBuf, dispW);
  }
}
//////////////////////////////////////////////////////////////////////////////////////

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

ua6em пишет:

andriano пишет:

ua6em пишет:

в таблице с русской кодировкой 257 символов...

Это неправильная таблица.

неправильные пчёлы и неправильный мёд )))
Даже с оригинальной, что в поставке проблема, там 256 символов, от 0 до 255, исправляешь 255, а выводить его надо как 254 )))
О чём и речь )))

эт как? может код символа из раблицы кривой берете? есть таблица win1251 например - там все заполнено и нет никакх "исправляешь 255, а выводить его надо как 254"

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

lilik пишет:

andycat пишет:

 

update: наверное как то так, проверить не на чем.

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library

#include <SPI.h>

#define TFT_CS     10
#define TFT_RST    9
#define TFT_DC     8

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

extern const unsigned char ris_1[];
extern const unsigned char ris_2[];

#define dispW 128
#define dispH 160

unsigned char lineBuf[dispW * 2];

void setup() {
  // put your setup code here, to run once:
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
  tft.fillScreen(ST7735_BLACK);
  tft.setRotation(0);//ориентация экрана
}

void loop() {
  // put your main code here, to run repeatedly:
  drawBitmap_(ris_1);
  drawBitmap_(ris_2);
}

void drawBitmap_(const uint8_t *bitmap) {
  for (unsigned short j = 0; j < dispH; j++) {
    for (unsigned short i = 0; i < dispW; ++i) {
      unsigned char sourceByte = pgm_read_byte(bitmap + j * dispW + i);
      for (unsigned char k = 0; k < 7; ++k) {
        if (bitRead(sourceByte, k)) {
          lineBuf[i * 2] = 0xFF; lineBuf[i * 2 + 1] = 0xFF; // white color
        } else {
          lineBuf[i * 2] = 0x00; lineBuf[i * 2 + 1] = 0x00; // black color
        }
      }
    }
    tft.setAddrWindow(0, j, dispW-1, j);
    tft.transfer(&lineBuf, dispW);
  }
}

 

Нет, экран чёрный, сначала не компилировалось, по наитию подправил строку 48 , но не помогло.

//РИСУНОК
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library

#include <SPI.h>

#define TFT_CS     10
#define TFT_RST    9
#define TFT_DC     8

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

extern const unsigned char ris_1[];
extern const unsigned char ris_2[];

#define dispW 128
#define dispH 160

unsigned char lineBuf[dispW * 2];

void setup() {
  // put your setup code here, to run once:
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
  tft.fillScreen(ST7735_BLACK);
  tft.setRotation(0);//ориентация экрана
}

void loop() {
  // put your main code here, to run repeatedly:
  drawBitmap_(ris_1);
  drawBitmap_(ris_2);
}

void drawBitmap_(const uint8_t *bitmap) {
  for (unsigned short j = 0; j < dispH; j++) {
    for (unsigned short i = 0; i < dispW; ++i) {
      unsigned char sourceByte = pgm_read_byte(bitmap + j * dispW + i);
      for (unsigned char k = 0; k < 7; ++k) {
        if (bitRead(sourceByte, k)) {
          lineBuf[i * 2] = 0xFF; lineBuf[i * 2 + 1] = 0xFF; // white color
        } else {
          lineBuf[i * 2] = 0x00; lineBuf[i * 2 + 1] = 0x00; // black color
        }
      }
    }
    tft.setAddrWindow(0, j, dispW-1, j);
    SPI.transfer(&lineBuf, dispW);
  }
}
//////////////////////////////////////////////////////////////////////////////////////

 

не подскажу :(

нет такого дисплея, но чую функцию вывода не в 48 строке менять надо, а добавить внутрь библиотеки

lilik
Offline
Зарегистрирован: 19.10.2017

Тогда SPI.transfer(&lineBuf, dispW); останется и должна заработать?, а  в tft.setAddrWindow(0, j, dispW-1, j); убрать хвост tft.

lilik
Offline
Зарегистрирован: 19.10.2017

Кстати померил отношение скоростей вывода в исходном варианте и в крайнем с помощью секундомера. Около 1 к 12 раз.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

lilik пишет:

Тогда SPI.transfer(&lineBuf, dispW); останется и должна заработать?, а  в tft.setAddrWindow(0, j, dispW-1, j); убрать хвост tft.

никаких хвостов убирать не надо
по хорошему добавить в библиотеку Адафрута новую функцию которая выводит не пиксель, я именно строку.

Завтра может время найду поставлю эти библиотеки. посмотрю.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

lilik пишет:

Кстати померил отношение скоростей вывода в исходном варианте и в крайнем с помощью секундомера. Около 1 к 12 раз.

progmem медленная хрень, в любом случае чуда не случится, глобального улучшения не получите!

lilik
Offline
Зарегистрирован: 19.10.2017

andycat пишет:

lilik пишет:

Кстати померил отношение скоростей вывода в исходном варианте и в крайнем с помощью секундомера. Около 1 к 12 раз.

progmem медленная хрень, в любом случае чуда не случится, глобального улучшения не получите!

Да, я понял, но всё же связываю это с самим экраном. Делал на ssd1306 (4 вывода) мимику глазами роботу-игрушке, 5 картинок-позиций глаз из progmem - смена картинок не видна была.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

andycat пишет:

эт как? может код символа из раблицы кривой берете? есть таблица win1251 например - там все заполнено и нет никакх "исправляешь 255, а выводить его надо как 254"

ua6em пишет:

неправильные пчёлы и неправильный мёд )))
Даже с оригинальной, что в поставке проблема, там 256 символов, от 0 до 255, исправляешь 255, а выводить его надо как 254 )))
О чём и речь )))

в таблице шрифты 5х8, правлю один символ - 255, далее выводить его надо не как 255, а  как 254,  tft.print(char(254)); тогда всё пучком

    0x00, 0x00, 0x10, 0x10, 0x00, // - 250
  0x30, 0x40, 0xFF, 0x01, 0x01, // - 251 
  0x00, 0x1F, 0x01, 0x01, 0x1E, // - 252
  0x00, 0x19, 0x1D, 0x17, 0x12, // - 253
  0x00, 0x3C, 0x3C, 0x3C, 0x3C, // - 254
  0xFF, 0x01, 0x01, 0x01, 0x01  // - 255      0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP
};

// allow clean compilation with [-Wunused-const-variable=] and [-Wall]
static inline void avoid_unused_const_variable_compiler_warning(void) {
  (void)font;
}

#endif // FONT5X7_H

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Всё разобрался, когда нашёл, что пропускается 176 символ нашёл и отчего это и как решить )))
Исправленный код секундомера под RP2040:
 

// СЕКУНДОМЕР
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>

#define SPI01 // Дисплей на SPI1, NRF24L01 на SPI0

#if defined(SPI01)        // для RP2040 SPI1
#define TFT_CS        13  // GP13 - CS
#define TFT_RST       14  // GP14 - RESET
#define TFT_DC        15  // GP15 - A0
#define TFT_MISO      12  // GP12 - MISO (MISO, RX)
#define TFT_MOSI      11  // GP11 - SDA  (MOSI, TX)
#define TFT_SCLK      10  // GP10 - SCK

#else                       // для RP2040 SPI0
#define TFT_CS        5   // GP5 - CS
#define TFT_RST       6   // GP6 - RESET
#define TFT_DC        7   // GP7 - A0
#define TFT_MISO      4   // GP4 - MISO (MISO, RX)
#define TFT_MOSI      3   // GP3 - SDA  (MOSI, TX)
#define TFT_SCLK      2   // GP2 - SCK
#endif

// For ST7735-based displays, we will use this call
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

float a = 0.00; // переменная для угла поворота стрелки
float aa = 0.00; // переменная для угла поворота стрелки (предыдущее значение)
int str = 55; //длина стрелки в пикселях
byte sek = 16; //

void setup(void) {
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
  tft.cp437(true); // не пропускаем 176 символ  
  tft.fillScreen(ST7735_BLACK);
  tft.setRotation(1);//ориентация экрана
  tft.setSPISpeed(50000000);
  tft.drawCircle(80, 64, 63, ST7735_WHITE ); //обод секундомера
  tft.drawCircle(80, 64, 62, ST7735_WHITE );
  tft.drawCircle(80, 64, 61, ST7735_WHITE );

}
void loop() {
  //
  aa = a;
  // tft.drawLine(80, 64, 80 + cos(aa)*str, 64 + sin(aa)*str,ST7735_BLACK ); // стирание старой стрелки-отрезка
  tft.drawLine(80 + cos(aa + 1.5)*str * 0.1, 64 + sin(aa + 1.5)*str * 0.1, 80 + cos(aa)*str, 64 + sin(aa)*str, ST7735_BLACK ); // стирание старой стрелки
  tft.drawLine(80 + cos(aa - 1.5)*str * 0.1, 64 + sin(aa - 1.5)*str * 0.1, 80 + cos(aa)*str, 64 + sin(aa)*str, ST7735_BLACK ); // стирание старой стрелки
  a = a + PI / 30;
  for (float i = 0.01; i < 2 * PI; i = i + PI / 30) {
    tft.drawLine(80 + cos(i)*str * 0.9,  64 + sin(i)*str * 0.9, 80 + cos(i)*str,  64 + sin(i)*str, ST7735_GREEN    ); // риски-метки шкалы через 1 сек
  }
  for (float i = 0.01; i < 2 * PI; i = i + PI / 6) {
    tft.drawLine(80 + cos(i)*str * 0.75,  64 + sin(i)*str * 0.75, 80 + cos(i)*str,  64 + sin(i)*str, ST7735_WHITE   ); // риски-метки шкалы через 5 сек
  }
  // tft.drawLine(80, 64, 80 + cos(a)*str, 64 + sin(a)*str,ST7735_WHITE ); // рисование новой стрелки-отрезка
  tft.drawLine(80 + cos(a + 1.5)*str * 0.1, 64 + sin(a + 1.5)*str * 0.1, 80 + cos(a)*str, 64 + sin(a)*str, ST7735_WHITE ); // рисование новой стрелки
  tft.drawLine(80 + cos(a - 1.5)*str * 0.1, 64 + sin(a - 1.5)*str * 0.1, 80 + cos(a)*str, 64 + sin(a)*str, ST7735_WHITE ); // рисование новой стрелки
  //
  tft.drawCircle(80, 64, 5, ST7735_WHITE );
  tft.drawCircle(80, 64, 4, ST7735_WHITE );
  tft.setCursor(50, 45);
  tft.setTextSize(1);
  tft.setTextColor(ST7735_GREEN);
  tft.println(utf8rus("СЕКУНДОМЕР"));
  tft.setCursor(70, 80);
  tft.setTextSize(2);
  tft.setTextColor(ST7735_GREEN);
  if (sek < 10) {
    tft.print("0");
  } tft.println(sek);
  sek++; if (sek > 59) {
    sek = 0;
  }
  //
  delay(835);//подбираем опытным путём
  tft.fillRect(70, 80, 30, 20, ST7735_BLACK);
}
////////////////////////////////////////////////////////////////////////
/* Функция перекодировки русских букв из UTF-8 в Win-1251 */
String utf8rus(String source)
{
  int i, k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };

  k = source.length(); i = 0;

  while (i < k) {
    n = source[i]; i++;

    if (n >= 0xC0) {
      switch (n) {
        case 0xD0: {
            n = source[i]; i++;
            if (n == 0x81) {
              n = 0xA8;
              break;
            }
            if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
            break;
          }
        case 0xD1: {
            n = source[i]; i++;
            if (n == 0x91) {
              n = 0xB8;
              break;
            }
            if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
            break;
          }
      }
    }
    m[0] = n; target = target + String(m);
  }
  return target;
}
///////////////////////////////////////////////////////////////////////////

 

Правильная версия файла русифицированных фонтов - glcdfont.c
(находится в библиотеке <Adafruit_GFX.h> (заменить или старую переименовать и скопировать новую)

// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H

#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#elif defined(__IMXRT1052__) || defined(__IMXRT1062__)
// PROGMEM is defefind for T4 to place data in specific memory section
#undef PROGMEM
#define PROGMEM
#else
#define PROGMEM
#endif

static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 
0x3E, 0x55, 0x51, 0x55, 0x3E, 
0x3E, 0x6B, 0x6F, 0x6B, 0x3E, 
0x0C, 0x1E, 0x3C, 0x1E, 0x0C, 
0x08, 0x1C, 0x3E, 0x1C, 0x08, 
0x1C, 0x4A, 0x7F, 0x4A, 0x1C, 
0x18, 0x5C, 0x7F, 0x5C, 0x18, 
0x00, 0x1C, 0x1C, 0x1C, 0x00, 
0x7F, 0x63, 0x63, 0x63, 0x7F, 
0x00, 0x1C, 0x14, 0x1C, 0x00, 
0x7F, 0x63, 0x6B, 0x63, 0x7F, 
0x30, 0x48, 0x4D, 0x33, 0x07, 
0x06, 0x29, 0x79, 0x29, 0x06, 
0x20, 0x50, 0x3F, 0x02, 0x0C, 
0x60, 0x7F, 0x05, 0x35, 0x3F, 
0x2A, 0x1C, 0x77, 0x1C, 0x2A, 
0x00, 0x7F, 0x3E, 0x1C, 0x08, 
0x08, 0x1C, 0x3E, 0x7F, 0x00, 
0x14, 0x22, 0x7F, 0x22, 0x14, 
0x00, 0x5F, 0x00, 0x5F, 0x00, 
0x06, 0x09, 0x7F, 0x01, 0x7F, 
0x4A, 0x55, 0x55, 0x55, 0x29, 
0x60, 0x60, 0x60, 0x60, 0x60, 
0x54, 0x62, 0x7F, 0x62, 0x54, 
0x08, 0x04, 0x7E, 0x04, 0x08, 
0x08, 0x10, 0x3F, 0x10, 0x08, 
0x08, 0x08, 0x2A, 0x1C, 0x08, 
0x08, 0x1C, 0x2A, 0x08, 0x08, 
0x1C, 0x10, 0x10, 0x10, 0x10, 
0x1C, 0x3E, 0x08, 0x3E, 0x1C, 
0x30, 0x3C, 0x3F, 0x3C, 0x30, 
0x06, 0x1E, 0x7E, 0x1E, 0x06, 
0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x5F, 0x00, 0x00, 
0x00, 0x07, 0x00, 0x07, 0x00, 
0x14, 0x7F, 0x14, 0x7F, 0x14, 
0x24, 0x2A, 0x7F, 0x2A, 0x12, 
0x23, 0x13, 0x08, 0x64, 0x62, 
0x36, 0x49, 0x56, 0x20, 0x50, 
0x00, 0x00, 0x07, 0x00, 0x00, 
0x00, 0x1C, 0x22, 0x41, 0x00, 
0x00, 0x41, 0x22, 0x1C, 0x00, 
0x14, 0x08, 0x3E, 0x08, 0x14, 
0x08, 0x08, 0x3E, 0x08, 0x08, 
0x00, 0xA0, 0x60, 0x00, 0x00, 
0x08, 0x08, 0x08, 0x08, 0x08, 
0x00, 0x60, 0x60, 0x00, 0x00, 
0x20, 0x10, 0x08, 0x04, 0x02, 
0x3E, 0x51, 0x49, 0x45, 0x3E, 
0x44, 0x42, 0x7F, 0x40, 0x40, 
0x42, 0x61, 0x51, 0x49, 0x46, 
0x21, 0x41, 0x45, 0x4B, 0x31, 
0x18, 0x14, 0x12, 0x7F, 0x10, 
0x27, 0x45, 0x45, 0x45, 0x39, 
0x3C, 0x4A, 0x49, 0x49, 0x30, 
0x01, 0x71, 0x09, 0x05, 0x03, 
0x36, 0x49, 0x49, 0x49, 0x36, 
0x06, 0x49, 0x49, 0x29, 0x1E, 
0x00, 0x6C, 0x6C, 0x00, 0x00, 
0x00, 0xAC, 0x6C, 0x00, 0x00, 
0x08, 0x14, 0x22, 0x41, 0x00, 
0x14, 0x14, 0x14, 0x14, 0x14, 
0x00, 0x41, 0x22, 0x14, 0x08, 
0x02, 0x01, 0x51, 0x09, 0x06, 
0x3E, 0x41, 0x5D, 0x55, 0x5E, 
0x7C, 0x12, 0x11, 0x12, 0x7C, 
0x7F, 0x49, 0x49, 0x49, 0x36, 
0x3E, 0x41, 0x41, 0x41, 0x22, 
0x7F, 0x41, 0x41, 0x22, 0x1C, 
0x7F, 0x49, 0x49, 0x49, 0x41, 
0x7F, 0x09, 0x09, 0x09, 0x01, 
0x3E, 0x41, 0x49, 0x49, 0x7A, 
0x7F, 0x08, 0x08, 0x08, 0x7F, 
0x00, 0x41, 0x7F, 0x41, 0x00, 
0x20, 0x40, 0x41, 0x3F, 0x01, 
0x7F, 0x08, 0x14, 0x22, 0x41, 
0x7F, 0x40, 0x40, 0x40, 0x60, 
0x7F, 0x02, 0x0C, 0x02, 0x7F, 
0x7F, 0x04, 0x08, 0x10, 0x7F, 
0x3E, 0x41, 0x41, 0x41, 0x3E, 
0x7F, 0x09, 0x09, 0x09, 0x06, 
0x3E, 0x41, 0x51, 0x21, 0x5E, 
0x7F, 0x09, 0x19, 0x29, 0x46, 
0x46, 0x49, 0x49, 0x49, 0x31, 
0x03, 0x01, 0x7F, 0x01, 0x03, 
0x3F, 0x40, 0x40, 0x40, 0x3F, 
0x1F, 0x20, 0x40, 0x20, 0x1F, 
0x3F, 0x40, 0x3C, 0x40, 0x3F, 
0x63, 0x14, 0x08, 0x14, 0x63, 
0x07, 0x08, 0x70, 0x08, 0x07, 
0x61, 0x51, 0x49, 0x45, 0x43, 
0x00, 0x7F, 0x41, 0x41, 0x00, 
0x02, 0x04, 0x08, 0x10, 0x20, 
0x00, 0x41, 0x41, 0x7F, 0x00, 
0x04, 0x02, 0x01, 0x02, 0x04, 
0x40, 0x40, 0x40, 0x40, 0x40, 
0x00, 0x01, 0x02, 0x04, 0x00, 
0x20, 0x54, 0x54, 0x54, 0x78, 
0x7F, 0x48, 0x44, 0x44, 0x38, 
0x38, 0x44, 0x44, 0x44, 0x48, 
0x38, 0x44, 0x44, 0x48, 0x7F, 
0x38, 0x54, 0x54, 0x54, 0x18, 
0x08, 0x7E, 0x09, 0x01, 0x02, 
0x08, 0x54, 0x54, 0x58, 0x3C, 
0x7F, 0x08, 0x04, 0x04, 0x78, 
0x00, 0x44, 0x7D, 0x40, 0x00, 
0x20, 0x40, 0x44, 0x3D, 0x00, 
0x7F, 0x10, 0x10, 0x28, 0x44, 
0x00, 0x41, 0x7F, 0x40, 0x00, 
0x7C, 0x04, 0x78, 0x04, 0x78, 
0x7C, 0x08, 0x04, 0x04, 0x78, 
0x38, 0x44, 0x44, 0x44, 0x38, 
0x7C, 0x14, 0x14, 0x14, 0x08, 
0x08, 0x14, 0x14, 0x0C, 0x7C, 
0x7C, 0x08, 0x04, 0x04, 0x08, 
0x48, 0x54, 0x54, 0x54, 0x24, 
0x04, 0x3F, 0x44, 0x40, 0x20, 
0x3C, 0x40, 0x40, 0x20, 0x7C, 
0x1C, 0x20, 0x40, 0x20, 0x1C, 
0x3C, 0x40, 0x38, 0x40, 0x3C, 
0x44, 0x28, 0x10, 0x28, 0x44, 
0x0C, 0x50, 0x50, 0x50, 0x3C, 
0x44, 0x64, 0x54, 0x4C, 0x44, 
0x00, 0x08, 0x36, 0x41, 0x00, 
0x00, 0x00, 0x7F, 0x00, 0x00, 
0x00, 0x41, 0x36, 0x08, 0x00, 
0x02, 0x01, 0x02, 0x04, 0x02, 
0x70, 0x48, 0x44, 0x48, 0x70, 
0x00, 0x0E, 0x11, 0x0E, 0x00, 
0x00, 0x12, 0x1F, 0x10, 0x00, 
0x00, 0x12, 0x19, 0x16, 0x00, 
0x00, 0x11, 0x15, 0x0B, 0x00, 
0x00, 0x07, 0x04, 0x1F, 0x00, 
0x00, 0x17, 0x15, 0x09, 0x00, 
0x00, 0x0E, 0x15, 0x09, 0x00, 
0x00, 0x01, 0x1D, 0x03, 0x00, 
0x00, 0x0A, 0x15, 0x0A, 0x00, 
0x00, 0x12, 0x15, 0x0E, 0x00, 
0x00, 0x04, 0x04, 0x04, 0x00, 
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
0x3E, 0x00, 0x00, 0x00, 0x00, 
0x3E, 0x3E, 0x00, 0x00, 0x00, 
0x3E, 0x3E, 0x00, 0x3E, 0x00, 
0x3E, 0x3E, 0x00, 0x3E, 0x3E, 
0x80, 0x80, 0x80, 0x80, 0x80, 
0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 
0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 
0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 
0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 
0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 
0x40, 0x00, 0x40, 0x00, 0x40, 
0x60, 0x00, 0x40, 0x00, 0x40, 
0x60, 0x00, 0x70, 0x00, 0x40, 
0x60, 0x00, 0x70, 0x00, 0x78, 
0x7C, 0x00, 0x40, 0x00, 0x40, 
0x7C, 0x00, 0x7E, 0x00, 0x40, 
0x7C, 0x00, 0x7E, 0x00, 0x7F, 
0x1C, 0x77, 0x41, 0x41, 0x41, 
0x41, 0x41, 0x41, 0x41, 0x41, 
0x41, 0x41, 0x41, 0x7F, 0x00, 
0x1C, 0x77, 0x41, 0x5D, 0x5D, 
0x41, 0x41, 0x41, 0x5D, 0x5D, 
0x5D, 0x5D, 0x41, 0x5D, 0x5D, 
0x5D, 0x5D, 0x41, 0x7F, 0x00, 
0x22, 0x1C, 0x14, 0x1C, 0x22, 
0x00, 0x08, 0x1C, 0x08, 0x00, 
0x00, 0x00, 0x77, 0x00, 0x00, 
0x46, 0x5D, 0x55, 0x5D, 0x31, 
0x7C, 0x55, 0x54, 0x55, 0x44, 
0x08, 0x08, 0x2A, 0x08, 0x08, 
0x00, 0x14, 0x08, 0x14, 0x00, 
0x08, 0x14, 0x22, 0x08, 0x14, 
0x7F, 0x41, 0x71, 0x31, 0x1F, 
0x03, 0x05, 0x7F, 0x05, 0x03, 
0x22, 0x14, 0x7F, 0x55, 0x22, 
0x02, 0x55, 0x7D, 0x05, 0x02, 
0x06, 0x09, 0x09, 0x06, 0x00, // 176 - символ градуса - tft.cp437(true); не пропускаем
0x44, 0x44, 0x5F, 0x44, 0x44, // 177
0x1C, 0x14, 0x1C, 0x22, 0x7F, 
0x20, 0x3E, 0x61, 0x3E, 0x20, 
0x20, 0x50, 0x3F, 0x02, 0x0C, 
0x80, 0x7C, 0x20, 0x3C, 0x40, 
0x44, 0x3C, 0x04, 0x7C, 0x44, 
0x00, 0x00, 0x08, 0x00, 0x00, 
0x38, 0x55, 0x54, 0x55, 0x18, 
0x7E, 0x08, 0x10, 0x7F, 0x01, 
0x08, 0x10, 0x08, 0x04, 0x02, 
0x14, 0x08, 0x22, 0x14, 0x08, 
0x0E, 0x06, 0x0A, 0x10, 0x20, 
0x20, 0x10, 0x0A, 0x06, 0x0E, 
0x38, 0x30, 0x28, 0x04, 0x02, 
0x02, 0x04, 0x28, 0x30, 0x38, 
0x7E, 0x11, 0x11, 0x11, 0x7E, 
0x7F, 0x49, 0x49, 0x49, 0x31, 
0x7F, 0x49, 0x49, 0x49, 0x36, 
0x7F, 0x01, 0x01, 0x01, 0x03, 
0xC0, 0x7F, 0x41, 0x7F, 0xC0, 
0x7F, 0x49, 0x49, 0x49, 0x41, 
0x77, 0x08, 0x7F, 0x08, 0x77, 
0x41, 0x49, 0x49, 0x49, 0x36, 
0x7F, 0x10, 0x08, 0x04, 0x7F, 
0x7C, 0x21, 0x12, 0x09, 0x7C, 
0x7F, 0x08, 0x14, 0x22, 0x41, 
0x40, 0x3E, 0x01, 0x01, 0x7F, 
0x7F, 0x02, 0x0C, 0x02, 0x7F, 
0x7F, 0x08, 0x08, 0x08, 0x7F, 
0x3E, 0x41, 0x41, 0x41, 0x3E, 
0x7F, 0x01, 0x01, 0x01, 0x7F, 
0x7F, 0x09, 0x09, 0x09, 0x06, 
0x3E, 0x41, 0x41, 0x41, 0x22, 
0x01, 0x01, 0x7F, 0x01, 0x01, 
0x07, 0x48, 0x48, 0x48, 0x3F, 
0x0E, 0x11, 0x7F, 0x11, 0x0E, 
0x63, 0x14, 0x08, 0x14, 0x63, 
0x7F, 0x40, 0x40, 0x7F, 0xC0, 
0x07, 0x08, 0x08, 0x08, 0x7F, 
0x7F, 0x40, 0x7F, 0x40, 0x7F, 
0x7F, 0x40, 0x7F, 0x40, 0xFF, 
0x01, 0x7F, 0x48, 0x48, 0x30, 
0x7F, 0x48, 0x48, 0x30, 0x7F, 
0x7F, 0x48, 0x48, 0x48, 0x30, 
0x22, 0x41, 0x49, 0x49, 0x3E, 
0x7F, 0x08, 0x3E, 0x41, 0x3E, 
0x46, 0x29, 0x19, 0x09, 0x7F, 
0x20, 0x54, 0x54, 0x54, 0x78, 
0x3C, 0x4A, 0x4A, 0x49, 0x31, 
0x7C, 0x54, 0x54, 0x54, 0x28, 
0x7C, 0x04, 0x04, 0x04, 0x0C, 
0xC0, 0x78, 0x44, 0x7C, 0xC0, 
0x38, 0x54, 0x54, 0x54, 0x18, 
0x6C, 0x10, 0x7C, 0x10, 0x6C, 
0x44, 0x54, 0x54, 0x54, 0x28, 
0x7C, 0x20, 0x10, 0x08, 0x7C, 
0x7C, 0x40, 0x26, 0x10, 0x7C, 
0x7C, 0x10, 0x10, 0x28, 0x44, 
0x40, 0x38, 0x04, 0x04, 0x7C, 
0x7C, 0x08, 0x10, 0x08, 0x7C, 
0x7C, 0x10, 0x10, 0x10, 0x7C, 
0x38, 0x44, 0x44, 0x44, 0x38, 
0x7C, 0x04, 0x04, 0x04, 0x7C, 
0x7C, 0x14, 0x14, 0x14, 0x08, 
0x38, 0x44, 0x44, 0x44, 0x48, 
0x04, 0x04, 0x7C, 0x04, 0x04, 
0x0C, 0x50, 0x50, 0x50, 0x3C, 
0x18, 0x24, 0xFC, 0x24, 0x18, 
0x44, 0x28, 0x10, 0x28, 0x44, 
0x7C, 0x40, 0x40, 0x7C, 0xC0, 
0x0C, 0x10, 0x10, 0x10, 0x7C, 
0x7C, 0x40, 0x7C, 0x40, 0x7C, 
0x7C, 0x40, 0x7C, 0x40, 0xFC, 
0x04, 0x7C, 0x50, 0x50, 0x20, 
0x7C, 0x50, 0x50, 0x20, 0x7C, 
0x7C, 0x50, 0x50, 0x50, 0x20, 
0x28, 0x44, 0x54, 0x54, 0x38, 
0x7C, 0x10, 0x38, 0x44, 0x38, 
0x48, 0x34, 0x14, 0x14, 0x7C
};

// allow clean compilation with [-Wunused-const-variable=] and [-Wall]
static inline void avoid_unused_const_variable_compiler_warning(void) {
  (void)font;
}
#endif // FONT5X7_H

 

lilik
Offline
Зарегистрирован: 19.10.2017

Попробовал переставить массив новый вместо старого - буквы сбились, буквы "я" не появилось. В старой версии ещё "ё" неправильно рисуется, как N.

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#define TFT_CS     10
#define TFT_RST    9  
#define TFT_DC     8
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);

void setup(void) {
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
 tft.fillScreen(ST7735_BLACK);
 tft.setRotation(0);//ориентация экрана
tft.setTextWrap(true);//Разрешить тексту стекать с правого края
tft.setCursor(0, 0);
  tft.setTextSize(2);
  tft.setTextColor(ST7735_WHITE);
  tft.print(utf8rus("АБВГДЕЁЖЗИЙКЛМНОПРСТФХЦУШЩЬЪЭЮЯабвгдеёжзийклмнопрстфхцущшьъэюя"));
  
 delay(1000); 
}
void loop() {
}
////////////////////////////////////////////////////////////////////////
/* Функция перекодировки русских букв из UTF-8 в Win-1251 */
String utf8rus(String source)
{
  int i,k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };

  k = source.length(); i = 0;

  while (i < k) {
    n = source[i]; i++;

    if (n >= 0xC0) {
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (n == 0x81) { n = 0xA8; break; }
          if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (n == 0x91) { n = 0xB8; break; }
          if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
return target;
}
////////////////////////////////////////////////////////////////////////////

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

lilik пишет:

Попробовал переставить массив новый вместо старого - буквы сбились, буквы "я" не появилось. В старой версии ещё "ё" неправильно рисуется, как N.

#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
#define TFT_CS     10
#define TFT_RST    9  
#define TFT_DC     8
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);

void setup(void) {
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT
  tft.initR(INITR_BLACKTAB);   // initialize a ST7735S chip, black tab
 tft.fillScreen(ST7735_BLACK);
 tft.setRotation(0);//ориентация экрана
tft.setTextWrap(true);//Разрешить тексту стекать с правого края
tft.setCursor(0, 0);
  tft.setTextSize(2);
  tft.setTextColor(ST7735_WHITE);
  tft.print(utf8rus("АБВГДЕЁЖЗИЙКЛМНОПРСТФХЦУШЩЬЪЭЮЯабвгдеёжзийклмнопрстфхцущшьъэюя"));
  
 delay(1000); 
}
void loop() {
}
////////////////////////////////////////////////////////////////////////
/* Функция перекодировки русских букв из UTF-8 в Win-1251 */
String utf8rus(String source)
{
  int i,k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };

  k = source.length(); i = 0;

  while (i < k) {
    n = source[i]; i++;

    if (n >= 0xC0) {
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (n == 0x81) { n = 0xA8; break; }
          if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (n == 0x91) { n = 0xB8; break; }
          if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
return target;
}
////////////////////////////////////////////////////////////////////////////

 

 

после 11 строки добавь -  tft.cp437(true); // не пропускаем 176 символ 

lilik
Offline
Зарегистрирован: 19.10.2017

Получилось, блин теперь во всех скетчах добавлять эту строчку :)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

lilik пишет:

Получилось, блин теперь во всех скетчах добавлять эту строчку :)

да, тогда все 256 символов становятся доступны, в том числе символ градуса - 176 )))

lilik
Offline
Зарегистрирован: 19.10.2017

Отвлёкся я на скорость вывода картинки от вариаций раскрашивания. Пока в голову пришло три варианта - сектора цвета, градиент цвета и пиксель-ассорти. Какие ещё варианты могут быть?