millis() und micros() Funktionswerte sind in Arduino-C++ libs immer (!) als unsigned long definiert, stattdessen kann man auch uint32_t verwenden ( das ist auf dem Mega genau das gleiche, man erkennt diesen plattform-unabhängigen expliziten Datentyp nur besser beim Programmieren ). Wie mxt schon schrieb, ist float viel zu ungenau, und es führt höchstens zu Rechenfehlern und zu unnötigen Typecasting-Rechenoperationen. Aber intern wird doch bei millis() und micros() eh in 32bit Integer gerechnet, also warum abweichen? Das führt höchstens zu Rechenfehlern u/o zeitaufwändigen, unnötigen Umrechnungen.
Im Übrigen ist Arduino Sketch nicht C, sondern es benutzt C++, und das wäre ein ganz entscheidender Unterschied , wie einmal ein Arduino Entwickler schrieb (Paul Stoffregen, IIRC) denn es hat viele Eigenheiten, die nicht 100% C++ standard- und lib-kompatibel sind. Daher sollte man sich möglichst an die Arduino-Definitionen halten, wie sie in der Referenz veröffentlicht wurden (die aber auch manchmal fehlerhaft sind, wie in Github-Diskussionen nachzulesen ist).
Allgemeine C-Hinweise zu K+R oder gnu C oder was auch immer helfen bei Arduino Sketch also definitiv nicht weiter!
Lesezeichen