typedef unsigned char u8;
typedef unsigned short u16;
u8 * print_u16(u8 * sink, u16 val) {
static const u16 dividers[] = {10000, 1000, 100, 10, 1, 0};
u8 i = 0;
for (; i < 4; i++) { // обработка лидирующих нулей, типа 00000 - они не печатаются
u16 divider = dividers[i]; // 10000, 1000, 100, 10
if (val >= divider) break;
*(sink++) = ' ';
};
for (; i < 5; i++) {
u16 divider = dividers[i];
u8 j = 0;
while (val >= divider) {
val -= divider;
j += 1;
}
*(sink++) = '0' + j;
};
*(sink++) = ' ';
return sink;
}
void setup() {
Serial.begin(9600);
}
void loop() {
static const char * myString = "ESUAP";
static byte val = 100;
u8 buf[16];
u8 * position = print_u16(buf, val);
strcpy(position, myString);
Serial.println((char *)buf);
val++;
delay(100);
}