hour()
, кажется, возвращает int
, поэтому
char* hr = (char*)hour();
Serial.println(hr);
приводит int
к указателю, а затем отправляет байты по этому (бессмысленному) адресу в Serial
.
Вы, вероятно, хотите что-то вроде:
char hr[8];
snprintf(hr,8,"%i:%02i",hour(),minute());
Serial.println(hr);