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 шт):
Нашел кастыль решение - отрисовывать переменные по порядку используя 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();
Но я всё равно ищу ответ как можно избежать дальнейшего использования этого костыля
Проблема в том, что 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)));