F
@j-foe Ein paar Ideen:
Das char*-Ausgabe-Beispiel hier konfiguriert zuerst eine Übertragungsrate mit Serial.begin(...). Der Aufruf dieser Funktion und das Setzen einer für das Board unterstützten Baudrate ist möglicherweise obligatorisch.
Die Arduino-API hat auch eine eigene String-Klasse. Ich kenne zwar die Details nicht, aber ich denke die ist im Gegensatz zu std::string sehr leichtgewichtig und an die Anforderungen auch der kleinen Boards angepasst.
Ansonsten halte ich C++ auch für eine gute Sprache für Microcontroller, da damit viel elegantere Abstraktionen möglich sind, als mit C. Ich denke da z.B. an Destruktoren, RAII und Templates, die auch auf Systemen mit nur 1 KiB RAM hilfreich sind und nicht mehr Overhead haben müssen, als das C-Äquivalent.
Man muss sich nur eben auf bestimmte Funktionalität beschränken, die für so kleine Computer geeignet sind. Statt einer relativ "schweren" std::map würde ich vielleicht schauen, was es für Arduino-Bibliotheken gibt, wie z.B. Hashtable und Unorderedmap.
Bei Klassen wie std::array oder std::string_view hingegen hätte ich wenig Bedenken, die auch auf dem Arduino einzusetzen, sofern die da überhaupt verfügbar sind. Die haben keinen bis minimalen Overhead (std::array ist wie ein C-Array und std::string_view hat maximal einen zusätzlichen end-Pointer). Mit std::string_view könnte man sogar den ganzen char*-Strings ein intuitiveres Interface verpassen ohne dynamischen Speicher verwenden zu müssen - aber wie gesagt, ich weiss nicht, wie leicht sich Teile der C++-Standardbibliothek mit der IDE und dem Compiler nutzen lassen.