Das Konzept von FYMT
Thema
Geany ist eine smarte integrierte Entwicklungsumgebung (IDE), die von vielen geschätzt wird. Entwicklungsziel derselben ist es, trotz sinnvoller Funktionen das Programm klein und schnell zu halten. Es besitzt auch nur wenige Abhängigkeiten von anderen Programmen und Bibliotheken.
Das Arduino-System hat zwar eine eigene Entwicklungsumgebung, die jedoch nicht jeden befriedigt.
Beschrieben wird, wie Geany für Arduino eingerichtet werden kann.
Dabei war die Anleitung "Geany Als IDE Für Die Arduino-Programmierung" eine notwendige und wertvolle Hilfe.
Das Makefile
Verwendet wird ein Makefile von Tim Marston, welches unter der MIT-Lizenz verbreitet wird.
Hierzu gibt es auch eine Dokumentation (in englischer Sprache).
Quelle
Die Datei arduino.mk kann von der Originalquelle heruntergeladen werden. Wir stellen sie aber auch hier zur Verfügung.
Installation und Einrichtung
Die Datei arduino.mk wird (unter GNU/Linux) in das Verzeichnis ~/sketchbook kopiert und mit Ausführungsrechten versehen:
$ chmod +x arduino.mk
Es ist ein Symlink zu setzen:
$ ln -s arduino.mk Makefile
Aufbau des Unterverzeichnisses ~/sketchbook
Zum besseren Verständnis des Folgenden scheint eine kurze Bemerkung zum Aufbau des Unterverzeichnisses ~/sketchbook angezeigt.
Programme werden im Arduino-Jargon Sketch(es) genannt.
Die Sketches werden in ~/sketchbook gespeichert; jedes in einem eigenen Unterordner, der so heißt, wie das Programm ohne Dateisuffix (.ino).
Nach dem Kompilieren sind in diesem Unterorder dann noch zwei weitere Dateien: <Name>.hex und <Name>.o.
Test an der Konsole
Danach ist es Zeit für einen ersten Test.
Eingefügt wird in die Datei ~/.bashrc:
# added for ARDUINO yyyy-mm-dd export ARDUINODIR=/usr/share/arduino export BOARD=atmega328
In ~/sketchbook/HelloWorld/ findet sich die Datei HelloWorld.ino:
const unsigned int LED_PIN = 13; // Die LED ist an Pin 13 // angeschlossen, was in der // Variablen ledPin gespeichert ist. // Diese LED ist in den meisten // Boards integriert. const unsigned int PAUSE = 500; // Laenge der Pause // (500 Millisekunden) void setup() { pinMode(LED_PIN, OUTPUT); // legt den LED-Pin als Ausgang fest } void loop() { digitalWrite(LED_PIN, HIGH); // LED anschalten delay(PAUSE); // 500 Millisekunden warten digitalWrite(LED_PIN, LOW); // LED ausschalten delay(PAUSE); // nochmal 500 Millisekunden // warten }
Das Programm soll - wie sich aus der Kommentierung ergibt - die im Board integrierte LED blinken lassen.
Dieses Programm wird für den Test der Basisfunktionen, vor allem des Ladens eines Programms auf den Arduino verwendet.
An der USB-Schnittstelle wird ein "frischer" Arduino angeschlossen.
Es ist folgendes Kommando im Verzeichnis ~/sketchbook/HelloWorld/ auszuführen:
$ make -f ../Makefile
In ~/sketchbook/HelloWorld/ befinden sich nun die Dateien HelloWorld.hex und HelloWorld.o.
Dann:
$ make -f ../Makefile upload
Wenn es auf dem Arduino dann blinkt, war der Test erfolgreich.
Geany einrichten
Vorlage für Geany
Es sollte eine Vorlage für Geany erstellt werden.
Beispielvorlage:
/* * ardu.ino * * version: * date of last change: * * Copyright yyyy Your Name* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * */ void setup() { } void loop() { }
Erläuterungen
Für ein funktionstüchtiges Programm genügt es, zwei Funktionen zu definieren:
- setup() – wird beim Start des Programms (entweder nach dem Übertragen auf das Board oder nach Drücken des Reset-Tasters) einmalig aufgerufen.
- loop() – wird durchgehend immer wieder durchlaufen, solange das Arduino-Board eingeschaltet ist.
void bezeichnet eine Funktion ohne Rückgabewert.
Die Vorlagendatei muss nun noch zu den anderen Vorlagen für Geany. Den Ordner findet man, indem man nach einer der anderen Vorlagen, die aufgelistet werden, wenn man im Menü Datei -> Neu (aus Vorlage) wählt, sucht. Dort ist die vorstehende Datei dann als ardu.ino zu speichern.
Die Vorlagen für Geany befinden sich beispielsweise bei Debian GNU/Linux unter /usr/share/geany/templates/files/.
Installation
Die Vorlagendatei ist im Verzeichnis ~/.config/geany/templates/files/ unter dem Dateinamen ardu.ino zu speichern.
Anpassen der Datei filetype_extensions.conf
Mit Geany ist die Konfigurationsdatei filetype_extensions.conf zu ergänzen.
Werkzeuge -> Konfigurationdateien -> filetype_extensions.conf
Dann die C++-Zeile wie folgt um "*.ino;" ergänzen:
C++=*.cpp;*.cxx;*.c++;*.cc;*.h;*.hpp;*.hxx;*.h++;*.hh;*.C;*.H;*.ino;
Speichern nicht vergessen!
Konfiguration der "Kommandos zum Erstellen"
Es müssen die Kommandos zum Erstellen konfiguriert werden.
Es ist eine .ino-Datei zu öffnen. Dann:
Erstellen -> Kommandos zum Erstellen konfigurieren
Dort ist Make in Make (Arduino) zu ändern.
Dann in Make (Arduino) eintragen:
make -f ../Makefile BOARD=atmega328
Make (Eigenes Target)... ist zu ändern in Make upload (Arduino) und dann einzutragen:
make -f ../Makefile upload BOARD=atmega328
Make _Objekt-Datei ist zu ändern in Make clean (Arduino) und dann einzutragen:
make -f ../Makefile clean
Außerdem erscheint es tunlich, das vierte Feld mit Make boards (Arduino) zu beschriften und dann einzutragen:
make -f ../Makefile boards
Damit werden dann die Boards aufgelistet. die von arduino.mk unterstützt werden.
Die Änderungen sind mit OK zu bestätigen.
So sieht es dann aus:
Und jetzt noch eine Konsole
Die Arduino-IDE bietet noch einen "Serial Monitor".
screen
Unter GNU/Linux reichen auch die "Bordmittel".
Dafür kann man nämlich screen nutzen.
In der Shell starten mit:
screen /dev/ttyUSBx 9600
Anstelle des "x" ist die richtige Zahl einzusetzen.
Das richtige Device sucht man mit:
ls /dev/ttyUSB*
Makefile
arduino.mk hat diese Funktion ebenfalls eingebaut.
Gestartet wird der Monitor mit:
make -f <Makefile eventuell mit Pfadangabe> monitor BOARD=atmega328
Beenden
In beiden Fällen wird der Monitor mit "Strg-a k" (und dann die Frage mit "y" beantworten) geschlossen. Damit beendet man also die Kommunikation mit dem Arduino.
Wird nur das Terminal geschlossen, bleibt die Screen-Session bestehen und kann rekonnektiert werden.
Das Konzept von FYMT