Unsigned integer ist schon vollkommen richtig. Nur die Art wie du
speicherst ist falsch. Deine Speicherung basiert auf dem dezimalen
System, leicht zu erkennen an der Multiplikation mit 10 in der Funktion
empfang(). Du musst dir aber darüber klar werden, dass ein uC im binären
System arbeitet.
Wenn du nun z.B. schreibst "101", dann heißt das für dich 1*10^2 +
0*10^1 + 1*10^0. Für einen uC sieht das ganze aber ganz anders aus, für
den ist 101 = 1*2^2 + 0*2^1 + 1*2^0, entsprechend einer 5 im dezimalen
System.
Anstatt mit 10 zu multiplizieren, musst du stattdessen mit 2
multiplizieren. Dann sollte das ganze passen. Ich hab mir dein Programm
aber nun nicht im speziellen angeschaut, so dass ich nicht weiß, was das
auf andere Programmteile für Folgen hat. Es kann sein, dass du deinen
gesamten Code entsprechend anpassen musst. Aber ich denke, das ist auch
eine gute Übung um das mit den Zahlensystemen besser zu verstehen. Das
Thema solltest du dir am besten nochmal zu Gemüte ziehen, da es meiner
Meinung nach zu den Grundlagen gehört, um einen uC verstehen zu können.