#include <U8g2lib.h>
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
void setup() {
// put your setup code here, to run once:
u8g2.begin();
u8g2.enableUTF8Print();
Serial.begin(9600);
//u8g2.setFont(u8g2_font_logisoso28_tn);
u8g2.setFont(u8g2_font_haxrcorp4089_t_cyrillic);
}
#define UPDATE_PERIOD 333
#define HEIGHT 64
#define WIDTH 128
const char item0[] PROGMEM = "тестовый текст\0";
const char item1[] PROGMEM = "тестовый текст\0";
const char *const list[] PROGMEM = {item0, item1};
void substring(const char *str, char* result, size_t start, size_t end)
{
// if (str == nullptr || start > end || start >= strlen(str))
// {
// debugln("substring error");
// return nullptr;
// }
size_t substr_length = min(2*end, strlen(str)) - 2*start;
if (substr_length < 2)
return nullptr;
//char *substr = new char[substr_length + 1]; // +1 for the null terminator
// Use memcpy to copy the substring into the new variable
memcpy(result, str + 2*start, substr_length);
// Don't forget to null-terminate the new string
result[substr_length] = '\0';
//return substr;
}
const uint8_t TEXT_LEN = 2;
const uint8_t TEXT_START = 0;
void loop() {
PGM_P pstr = pgm_read_word(list);
char buffer[strlen_P(pstr)+1];
strcpy_P(buffer, pstr);
u8g2.setCursor(4, 30);
char* result[2*TEXT_LEN + 1];
substring(result,TEXT_START, TEXT_START + TEXT_LEN)
//Serial.println(result);
u8g2.print(result);
//delete
u8g2.updateDisplay();
delay(UPDATE_PERIOD);
}