Stefan,
liest Du überhaupt was man Dir schreibt?
Ich zitiere mich nochmal:
Deine string_senden Funktion erwartet eine Zeiger auf const char
Du übergibst aber uint8_t oder unsigned char, das ist doch ein Unterschied oder ?
und ? was ist bitte puffer[5] ?
Was meldet der Kompiler ?
Was möchtest Du erreichen ?
Oder anders gefragt, wenn Du ein uint8_t mit itoa/utoa behandelst, wieviel Platz wird im puffer belegt (mit '\0') und was steht sinnvolles bei puffer[5] ?
Dein String_senden erwartet ja einen Zeiger, also &puffer[5], aber Achtung, es wird solange was ausgegeben bis '\0' kommt ...

Gruß Sebastian