Tinkering Arduino

eine kleine Welt der Elektronik.

Geany Als IDE Für Die Arduino-Programmierung

Nach ein paar Wochen Pause, ich bin leider nicht zum Schreiben gekommen, möchte ich heute ein leidiges Thema mit der Arduino IDE angehen. Wenn man schon sehr lange programmiert, egal in welcher Programmiersprache und dort dann einen Editor oder gar eine IDE (Integrierte Entwicklungsumgebung) verwendet, wird man mit der Arduino Oberfläche nicht zufrieden sein.

Man kann über die eine oder andere Einstellung die Oberfläche ein wenig anpassen, aber entscheidene Merkmale fehlen doch. Das sind für mich die Nummerierung der Zeilen und ein ordentliches Syntax Highlighting, also das formatierte Darstellen des Programmcodes.

So können Programme schneller erfasst werden, man erkennt schnell was ein String, eine Funktionsdeklaration oder andere Bestandteile des Codes sind. Die meisten Editoren und Entwicklungsumgebungen bieten sogar die Möglichkeit, ein eigenes Farbschema auszuwählen.

Da ich für kleinere Programmierungen gern auf VIM oder Geany zurückgreife, denn beide sind schlank, schnell und einfach zu bedienen, möchte ich im heutigen Beitrag zeigen, wie man mit Geany Arduino Programme schreiben kann und diese über den Editor auch auf das Board bringt. Geany gibt es für Linux, Windows und auch als Portierung für den Mac. Wie die Installation unter Windows und Mac läuft, soll in diesem Beitrag keine Rolle spielen.

Da ich ein Debian verwende, möchte ich gleich darauf hinweisen, dass der eine oder andere Pfad in den verschiedenen Linux-Distributionen anders lauten könnte.

Als erstes geht es an die Installation. Entweder nutzt man den Paketmanager seiner Linux-Distribution oder man lädt sich Geany unter www.geany.org herunter.

1
$ apt-get install geany

Prinzipiell kann man nun schon beginnen mit Geany die Arduino-Programme bearbeiten, allerdings wird man noch kein Hervorhebung der Syntax haben.

Konfiguration der Filetypenerweiterung Das kann man im Menü unter “Werkzeuge” –> “Konfigurationsdateien” –> “filetype_extensions.conf” erledigen.

Da der Arduino in C++ programmiert wird, was man manchmal übersieht, habe ich die Konfiguration für C++ (bei mir in Zeile 11) um die Dateiendung *.ino und einem abschließenden Semikolon erweitert.

1
C++=*.cpp;*.cxx;*.c++;*.cc;*.h;*.hpp;*.hxx;*.h++;*.hh;*.C;*.H;*.ino;

Wer nun noch ein paar Farbschema zur Auswahl haben möchte, kann sich unter wiki.geany.org/themes/start ein Archiv mit entsprechenden Themes herunterladen. Bei mir funktionierten auch das Themes für Geany 0.21, auch wenn Geany bei mir die Version 1.22 hat. Man lädt das Archiv herunter und entpackt es. Dann muss man nur noch ein paar Dateien kopieren:

1
2
$ cp Downloads/geany-themes/colorschemes/* .config/geany/colorschemes/
$ cp Downloads/geany-themes/filedefs/* .config/geany/filedefs/

Nach dem Neustart kann man dann das Farbschema unter “Ansicht” –> “Editor” –> “Farbschemata” ein passendes auswählen. Je nach Geschmack stehen unterschiedliche Themen zur Verfügung.

Blink.ino mit Farbschema Kugel Blink.ino mit Farbschema Vibrant

Nachdem Geany für das Programmieren vorbreitet ist, wäre es nun auch schön, wenn wir die Programme auch direkt aus Geany auf unseren Arduino bringen könnten. Dazu braucht es ein sogenanntes Makefile. Nach einiger Suche bin ich auf ein Makefile gestoßen, das sehr gut passt. Unter http://www.itopen.it gibt es dazu einen englischen Blog-Beitrag. Da in diesem Beitrag auch die Installation der Arduino IDE gezeigt wird, möchte ich die notwendigen Schritte hier kurz zusammenfassen:

1
2
3
$ cd sketchbook
$ wget http://ed.am/dev/make/arduino-mk/arduino.mk
$ ln -s arduino.mk Makefile

Damit steht ein Makefile zur Verfügung, dass man direkt von der Konsole aufrufen kann. Weiter benötigt das Makefile aber ein paar Konfigurationen, die man in der Arduino IDE über das Menü auswählen kann. Da ich davon ausgehe, dass man nicht ständig verschiedene Boards verwendet, kann man dieses in seine Umgebungsvariablen schreiben.

Nun musste ich das Makefile ein wenig durchsuchen, denn die im Beitrag vorgegebene Variante der Konfiguration funktioniert nur, wenn man die Arduino Software nicht über den Paketmanager installiert hat.

1
2
3
$ echo "export ARDUINODIR=~/arduino-1.0" >> ~/.bashrc
$ echo "export BOARD=uno" >> ~/.bashrc
$ source ~/.bashrc

Hat man die Arduino-Software über den Paketmanager installiert, muss die Variable ARDUINODIR anders konfiguriert werden. Unter Debian scheint das Verzeichnis “/usr/share/arduino/” die richtige Stelle zu sein, denn das Makefile sucht darin nach “hardware/arduino/boards.txt”. Sollte es in anderen Distributionen eine andere Stelle sein, sollte man nach der Datei “boards.txt” suchen. Weiterhin habe ich gerade ein atmega328 vor mir liegen. Daraus ergibt sich dann:

1
2
3
$ echo "export ARDUINODIR=/usr/share/arduino/" >> ~/.bashrc
$ echo "export BOARD=atmega328" >> ~/.bashrc
$ source ~/.bashrc

Sollte jemand auch andere Arduinos zur Hand haben, kann man auch mit

1
$ echo "export BOARD=lilypad"

das Board auf z.B. ein LilyPad Arduino w/ ATmega168 einstellen. Welches Board man konfigurieren muss findet man in der Datei “boards.txt”, die durch das Makefile eingelesen wird.

Mit diesem Schritt kann man nun schon aus der Konsole seine Programme übersetzen:

1
2
$ cd ~/sketchbook/Blink/
$ make -f ../Makefile

und danach mit:

1
$ make -f ../Makefile upload

auf den Arduino übertragen.

Wenn das funktioniert fehlt nur noch die Konfiguration von Geany. Im Menüpunkt “Erstellen” findet man dazu den Punkt “Kommandos zum Erstellen konfigurieren”.

Konfiguriere Kommandos

Label Kommando
_Make make -f ../Makefile
Make _upload make -f ../Makefile upload
Make _clean make -f ../Makefile clean

Ruft man nun die Menüpunkte “Make” und “Make upload” auf, bekommt man folgende Ausgabe im “Meldungsfenster” von Geany. Eventuell muss dieses über den Menüpunkt “Ansicht” –> “Meldungsfenster anzeigen” eingeblendet werden.

Ausgabe im Meldungsfenster bei

Vielleicht ist Geany für den einen oder anderen nicht der richtige Editor, aber es ist möglich mit dem Editor seiner Wahl zu programmieren und so das eine oder andere gewohnte Feature zu nutzen, dass die Arduino IDE nicht bietet.

Comments