Free Your Model Train (FYMT) — Geany für Arduino einrichten

Das Konzept von FYMT

Dokumentation zu 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:

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:

Bildschirmfoto Geany Kommandos zum Erstellen konfigurieren

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

Dokumentation zu FYMT