Hallo NomiS,
ja, da hast du noch ein bisschen zu tum.

Zu deinen Fragen:
Wenn ich das triggerlevel nicht mal 4 nehme funktioniert es nicht!
Die Multiplikation mit 4 lass mal drin.
- int triggerleft = (((222-150)/2)+150)*4;
Hier nutzt du ja die 8-Bit-Werte (222; 150) aus dem Testprogramm von Arexx-Henk. Ein Vergleich nachher mit den 16-Bit-Werten aus OdometrieData() macht hier das *4 also nötig.
Aber ganz wichtig ist der Einwand von radbruch, den Triggerlevel nicht mit == zu vergleichen.

Kann man Variablen auch so definieren int xx 10/20;
Nein, einer Variablen muss man mit = etwas 'zuweisen'.
Eine Definition wäre mit "#define xx 10/20" gemacht.
Hier würde ich aber von abraten, da dann an allen Stellen, an denen du xx benutzt, der Computer zur Laufzeit die 10/20 rechnen muss.
Bei "int xx = 10/20;" wird diese Rechnung vom Compiler gemacht.
Aber auch das ist nicht gut, da dann ja 0,5 rauskommt, den du im int-Wert nicht speichern kannst.
Hier also unbedingt genau überlegen was du benötigst.

Warum bekomme ich eine 15Kb hex-datei auf einen 8kb prozessor?
Da schaust du am besten hier: http://www.schulz-koengen.de/biblio/intelhex.htm

9 - 36cm/s dacht ich ist doch ganz gut
Das sieht bestens aus. 9 cm/s ist gegenüber meinem Asuro sogar ein Top-Wert. Ich bleibe schon bei ca. 15 cm/s stehen. Allerdings bin ich mit ca. 40 dafür ein bisschen schneller.

Wie schreibt man selbst so ne kleine Funktion wie in den Bibliotheken.
Da haben einige Leute, die schon viel Erfahrung haben, viel Arbeit und Ergeiz reingesteckt. Erfahrung ist hier das Zauberwort. Mit 20 werden das noch längst nicht alle schaffen. Also nicht verzweifeln.

wie mache ich das mit der segmenterkennung?
Um diese Frage zu beantworten, solltest du mal die Forums-Suche eine zeitlang quälen.
Das wird dir nicht nur eine perfekte Antwort liefern, sondern auch einige andere Fragen sicherlich gut beantworten. Lesen unterstützt die Erfahrung ungemein

Gruß Sternthaler