Mit interupts spielen ist nicht sehr ge-eignet fur anfanger. Wenn du das bestimmt braucht wurde ich dich den erweiterten lib emphelen. Da ist schon einer taster eingebaut. Aber vielleicht auch nicht empholen wenn du nur einer woche dafur hast.

Den parameter fur SerRead stehen doch in dem anleitung? Aber den "&cmd" und "0xFFFE" sind etwas ungewöhn. Den & ist ein spezielles zeichen in dem C-sprache womit den speicher-platz von dem cmd variabele ubermittelt wird, und nicht den inhalt von cmd. Ein zeichenketten besteht manchmahl aus mehr bytes dan einer solcher 'zeiger' (pointer im englisch) und ist damit nicht so effizient. Ein zeiger ist nur ein wenig bytes gross.

0xFFFE ist den 'time-out' wert. Also den anzahl von zeichen er wartet bis den funktion endet, ob genug zeichen emphangen sind oder nicht. Den 1 war die gewunschte lange den zeichenketten, also ist nur ein zeichen gewunscht. Den FFFE is einer hexadezimale nummer, gleich an 65534 decimahl. Das sind 655340 bits der den USART (serielen port) abwartet. Mit nur 2400 bits pro sekunde wirt das also 4,5 minuten warten. Wiso denn so lange? Mit 1 statt xFFFE mus es besser gehen.

Mit den while-schleife wird das emphangen einer zeichen und das 'switch'-en zwischen TurnLeft, DarkLine oder TurnRight sehr schnell wiederholt. Naja, nur mit einer viel kleinere timeout-wert im SerRead. Den TurnLeft/Right und Darkline messen nur den liniehelligkeiten und andern den motorkraft. Das dauert nur ein wenig zeit. Sehr oftes wechseln der motorkraft konnte fehlerhaft sein fur den elektronic auf dauer. Deshalb konntest du später (wenn das program klappt) einer verzögerung einbauen im TurnLeft, TurnRight und DarkLine mit Sleep. Aber nur einiger milisekunden.

Aber was er in diesen TurnLeft/Right funktionen tun soll verstehen ich nicht. Was meinst du genau mit links oder rechts orientieren?