odiug:
Jau, das war es .... Nun funz't es ....
Na bravo!
odiug:
Ich denke, Du hast schon an mir gezweifelt - vielen Dank für Deinen unermüdlichen Einsatz.
Der Hinweis mit dem DUE-Board war dann ja doch nicht so ganz verkehrt.
Ja, zeitweise schon. Aber dass der DUE doch so große Unterschiede zu den Standard-Arduinos aufweist, wenn man "nur" die Befehle der Arduino-Software verwendet, war mir vollkommen neu. Z.B. dass Pins nach dem Setzen auf OUTPUT im setup() HIGH statt LOW sind, oder dass man den Zustand von als OUTPUT gesetzten Pins nur dann sicher abfragen kann, wenn der Ausgang vorher einmal explizit als INPUT gesetzt war. Na ja, hinterher ist man schlauer.
odiug:
Jetzt werde ich mich noch etwas mit dem "&variable" (Pointer) beschäftigen, damit dann alles sitzt.
Du meinst mit dem &-Adressoperator bei den Parametern in den Funktionsdeklarationen?
Der Unterschied ist der:
Wenn die Variablen "normal" deklariert sind, sind sie "call-by-value", die Funktion erhält eine Kopie der originalen Variablen übergeben. Die Funktion kann innerhalb der Funktion diese Variablen ändern, aber an der Stelle wo die Funktion aufgerufen wurde, wird das Original des Parameters NICHT geändert. Es wird ja in der Funktion tatsächlich mit einer Kopie des Parameters gearbeitet und nicht mit dem Original-Parameter.
Wenn die Variable in der Parameterliste mit dem &-Adressoperator deklariert ist, ist es "call-by-reference". Die Funktion bekommt dann keine Kopie des Parameters übergeben, sondern einen Referenz-Verweis auf den originalen Parameter. Wenn dieser Parameter innerhalb der Funktion verändert wird, wird der tatsächliche originale Parameter gleichzeitig an der Stelle geändert, von wo aus der Funktionsaufruf mit diesem Parameter erfolgte. Das benutzt man für Parameter "die innerhalb einer Funktion von der Funktion änderbar" sein sollen.
odiug:
Da ich ja auch die Byte-Schieberei bislang vermieden habe 
 muss ich noch einmal fragen:
Wenn ich einByte abfrage, dann wird mir immer ein "0b" mitgeliefert?
Nein, es wird nichts "geliefert". Eine Zahl ist eine Zahl und kann auf verschiedene Arten dargestellt werden. Man kann z.B. eine Zahl als normale Dezimalzahl schreiben:
byte zahl=255;
Oder dieselbe Zahl als Hexedezimalzahl:
byte zahl=0xFF;
Oder dieselbe Zahl als Binärzahl:
byte zahl=0b11111111;
Das "0b" ist ein Präfix (quasi "Vorsilbe") und bedeutet, dass die nachfolgende Zahl als Binärzahl interpretiert werden soll.
Also genau so wie das Präfix "0x" bedeutet, dass die nachfolgende Zahl als Hexadezimalzahl interpretiert werden soll.
Es handelt sich als nur um einen Hinweis für den Compiler: Steht eine Zahl ohne Präfix da, soll er sie als Dezimalzahl behandeln, mit Präfix "0x" vor der Zahl als Hexadezimalzahl und mit Präfix "0b" als Binärzahl.
Die Darstellung als Binärzahl im Quelltext habe ich nur gewählt, weil man bei dieser Darstellung sehr gut die gesetzten und nicht gesetzten Bits in der Zahl erkennen kann.