Kategorie: Computer

Arduino und Strings – besser ein char[]

Ich hab mir die letzten Tage meine letzten Haare ausgerissen, weil ich meinen String nicht auf „null“ setzen konnte. Das war sehr nervig. Selbst die String.remove(0) Methode hat in Arduino nicht wirklich geholfen.
Aber nun hab ich die ultimative Methode gefunden:

char[4] = key_eingabe;
String key_eingabestr = String(atoi(key_eingabe));

Zuerst speicher ich mir alle Key Eingabe in das key_eingabe Array. Danach wandle ich das gesamte Array in einen Integer „atoi()“ und danach in einen String „String()“. Damit stelle ich sicher, dass ich nur den Inhalt vom Char Array im String habe und keine anderen Zeichen. Beim direkten Wandeln mit „String()“ werden auch EOL Zeichen eingefügt, die ich eher nicht brauchen kann. :)

Weiterführend kann man sagen: Strings und Arduino ist eher keine gute Idee.

GPN 17 Fahrplan ist da

Für die GPN 17, die nächste Woche ab Himmelfahrt (25.5.2017) stattfindet, gibt es nun auch einen Fahrplan.
Besonders die „Wie baut man eigentlich Raumschiffe!“ wird sicher wieder ein Highlight werden. Und falls es auch wieder eine Demo Nachlese geben wird, werde ich mir die auch ansehen. Das ist einfach immer genial anzusehen, was die Leute da so aus den Rechnern zaubern.

Man kann natürlich auch ohne Anmeldung zur GPN kommen. Die Anmeldung erleichtert aber der ORGA die ungefähre Planung für Gulasch und Tische!

iOS 10.3.2 ist draußen

Und behebt ein paar Sicherheitslücken. Also lohnt sich mal wieder ein Update. Übrigens sehr cool, dass es gleich am Montag nach dem #wannacry Trojaner rauskommt.

34C3 Location steht fest

Nachdem ich seit dem 30C3 alljährlich in Hamburg war um interessante Dinge zu sehen, teilweise auch interessante Gespräche zu führen oder einfach nur die tollen Vorträge zu sehen, musste nun mal eine neue Location her. Das CCH wird nämlich umgebaut.
Schön, dass nun mit dem CCL in Leipzig eine neue Location gefunden ist. Positiv für mich ist außerdem, dass Leipzig von Stuttgart aus auch deutlich näher liegt. Sprich die Zugfahrt wird wohl wieder etwas kürzer werden. Ich bin auf jeden Fall gespannt, wie alles werden wird. Ein Neuanfang ist ja auch immer ein Umbruch: Die Location muss neu ausgetestet werden.

Ich freu mich auf jeden Fall mal auf Dezember.

Arduino 1.0.6 hat bessere String Funktionen als 1.0.5

Wenn ich hier über Arduino schreibe und darüber, dass ich immer noch Arduino in der 1.0.x Version nutze, komm ich mir vor wie „Opa erzählt vom Krieg“. :)
Der einzige Grund warum ich immer noch die 1.0.5 Version lange Zeit verwendet habe, war die Tatsache, dass ich vor zwei Jahren mit dem GSM Modul angefangen habe zu experimentieren und dieses im Zusammenspiel mit der Keypad Library in der Version 1.0.6 gegeben hat. Deshalb hab ich dann auch alle meine anderen Programmierungen fürs Baumhaus Schloss auf der Version 1.0.5 gemacht.
Damit hat es ja eigentlich auch ganz gut funktioniert. Nun komm ich aber an den Punkt, indem ich immer wieder auch einen String zurücksetzen muss. Das typische

key_eingabe = "";

funktioniert leider nicht richtig und die remove Funktion aus dem String Objekt kam dann erst in einem Backport aus 1.5.x in die Version 1.0.6 (Releasenotes) rein.
Da ich sowieso nach meinen erfolglosen Anfangsversuchen (damals hatte ich noch nicht die Polling Idee zur Abfrage des Keypads und SMS Eingang) nicht mehr das GSM Modul verwende, hab ich nun wieder auf die Version 1.0.6 gewechselt und freu mich, dass ich nun doch wieder die besseren String Funktionen nutzen kann.

Generell ist es sowieso meistens ratsam immer die aktuellsten Versionen zu verwenden. Die sind einfach ausgereifter und haben oftmals auch mehr Funktionen zur Verfügung. Für Arduino UNO reicht aber trotzdem noch die 1.0.6, außerdem findet man für diese Version auch meistens mehr alte Libraries. :) Die Oberfläche ist mir trotzdem weiterhin egal, da ich nach wie vor das alte Stino Plugin für Sublime Text 2 verwende.
Wem sein Code mit der Zeit zu groß wird, kann ihn auch einfach in mehrere Dateien aufteilen. Ich hab dazu als Hauptdatei die .ino Datei und in weitere .h Headerdateien meine anderen Funktionen eingebaut. Natürlich sind Header Dateien eigentlich der falsche Weg. Aber das ging am einfachsten für mich. So hat die einzelne Datei dann keine 200 Zeilen mehr, sondern nur noch 100 Zeilen Code und es ist etwas strukturierter. Wer es richtig machen will, hätte vermutlich eine .ino Datei und für weitere logisch zusammengehörende Funktionen eine .h und eine .cpp Datei erstellt. Aber Warum alle Funktionen nochmal ausgliedern, wenn ich sie auch direkt in der .h Datei beschreiben kann? Ich hoffe einfach mal, dass meinen Code nie jemand findet und nutzen muss.