0@0 LibraryRoot 0@0 492 0@0 169 373 0@0 root 1 7032dbbe-a47f-43e7-bd3d-0fbec454f64e LibraryGroup-OLED дисплей LibraryGroup-OLED для ESP8266 LibraryGroup-OLED ESP8266 display 0@-96 4 2 560@140 580@140 corner: 656.0d@160 560@140 corner: 676.0d@160 585.0d@154.5d OLED display 913145b0-4a4f-4021-bf64-efd96f2e326c OLED display Блок завершения вывода, должен располагаться после блоков текста и графики (можно на последней плате). 102 display.display(); 20 76.0d 3 560@60 580@60 corner: 718.0d@120 560@60 corner: 798.0d@120 585.0d@74.5d en 560@90 574@90 OLED_display c08f918b-b4c9-4b8b-adce-0be5ad5905ea 8ce101ce-602d-4a97-b227-d06084f438d7 OLED in f04fb191-29c1-4f55-aa01-785ddce5594e 6a1a2972-764d-4c21-9106-4ffa5ef79b64 e2235121-5f3c-4e38-b1cb-13ef43f65a7c OLED display display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(1); display.setCursor(0,0); display.println(utf8rus("in")); display.display(); 165 display.begin(SSD1306_SWITCHCAPVCC); //display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.cp437(true); 104 #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 11 display (OLED_RESET); Adafruit_SSD1306 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; 616 String utf8rus String source text 2b749ab2-70de-4d71-b8b7-935af2e75ff7 if (en) {display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(1); display.setCursor(0,0); display.println(utf8rus(text)); display.display();} 174 560@80 corner: 574@100 Люблю грозу в начале мая, Когда весенний, первый гром, Как бы резвяся и играя, Грохочет в небе голубом. 560@110 580@110 27.0d@115.0d 560@100 corner: 580@120 OLED_rus_text_max_width 762764e5-4723-445c-affe-f6669664adde OLED ESP8266rus вывод текста с переносом Рисует строку с максимальной шириной в заданном месте. Если заданная строка шире указанной ширины текст будет перенесен на следующую строку через пробел или тире. Применять соместно с главным блоком и блоком OLED display. Отдельно не работает. Шрифты: Кириллица: ArialRus_Plain_10 ArialRus_Plain_14 ArialRus_Plain_16 ArialRus_Plain_24 ArialRus_Italic_10 ArialRus_Italic_16 ArialRus_Italic_24 text_alignment - положение текста на экране по горизонтали: TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT 507 x 0 128 74253a20-e1be-4386-a842-469a61d704fb 1de9925b-6531-4d74-8c72-6dbb998906fd y 64 8d28f208-1ad2-4ae8-a4d7-feeca0b341eb e1677451-80ee-4963-b401-43ca7b97efca text_alignment TEXT_ALIGN_CENTER 3026a043-f035-4102-9794-d271c63370ce TEXT_ALIGN_LEFT bac8990f-dd1a-4480-8ba9-f26d579a293d text_font ArialRus_Plain_10 f03ed4e6-c5cf-4a05-88a4-62db3bdc41e7 389247f2-c4d4-4fb5-b760-59f5726acf1e max_width 128 518794e6-7122-41f0-a724-3f9a5b34eca5 896b1b6f-de4b-40d3-8401-4c1351295949 if (en) { display.setTextAlignment(text_alignment); display.setFont(text_font); display.drawStringMaxWidth(x, y, max_width, utf8rus(text)); } 154 138.0d 560@0 580@0 corner: 689.0d@20 560@0 corner: 709.0d@20 585.0d@14.5d SSD1306_rus_main 40bfe03a-8585-4ce7-9733-39c0961405d1 SSD1306 ESP8266rus главный Главный блок, поставить первым. 31 adr_disp 0x3c Адрес дисплея 586f43de-c3d8-44ed-ab45-71959f6139d5 0639307c-3d9e-4d86-9896-e1718cb643dd pin_SDA 4 По умолчанию GPIO4 (D2) eb180c46-0807-4433-9fb7-8d27ad87056c 5a302fa6-3d8d-4ac9-96ec-ebe14f1fcb64 pin_SCK 5 GPIO5 (D1)по умолчанию a65d9a16-df93-4d64-b6c7-8c9951df4827 0e7ff2cc-6b75-4253-beed-309a6d1a767a display.clear(); 16 display.init(); display.flipScreenVertically(); display.setContrast(255); 73 #include <Wire.h> #include <SSD1306.h> display (adr_disp, pin_SDA, pin_SCK); SSD1306Wire 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; String utf8rus String source 109.0d 460@30 460@30 corner: 806.0d@50.0d left ПБ для вывода с переносом на следующую строку длинных текстов. 340.0d 3@12.0d 9.0d 250 (0 to: 250) 9600 arduinoIDE 189 4096 WeMos mini 150192571