Adafruit display - отрисовка текста - Arduino Nano

Пытаюсь отрисовать текст с помощью Adafruit_GFX и Adafruit_SSD1306 Простые строки он выводит, но вот при таких условиях:

  display.clearDisplay();
  
  int t_h = 23;
  int t_m = 59;
  int t_s = 59;
  display.setTextSize(2);
  display.setCursor(0,8*2);
  display.println(String(t_h) + ":" + String(t_m) + ":" + String(t_s));
  
  display.display();

На дисплей выводится только: :59

Может быть я что то не понимаю в работе с микроконтроллерами и памятью или вообще есть способ рисовать текст из переменных на этом дисплее?


Ответы (2 шт):

Автор решения: jaboid

Нашел кастыль решение - отрисовывать переменные по порядку используя display.print Теперь код выглядит так

  display.clearDisplay();
  
  display.setTextSize(2);
  
  display.setCursor(0,16);

  int t_h = 23;
  int t_m = 59;
  int t_s = 59;

  display.print(t_h);
  display.print(":");
  display.print(t_m);
  display.print(":");
  display.print(t_s);
  
  display.display();

Но я всё равно ищу ответ как можно избежать дальнейшего использования этого костыля

→ Ссылка
Автор решения: Alexey Vesker

Проблема в том, что String() формирует строку с завершающим нулем ('\0'), и здесь:

display.println(String(t_h) + ":" + String(t_m) + ":" + String(t_s));

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

display.println(String( String(t_h) + ":" + String(t_m) + ":" + String(t_s)));
→ Ссылка