Aus Raspberry Pi Geek 04/2018

Mit der Programmiersprache Go die GPIO des RasPi ansteuern (Seite 2)

Listing 3

 

package main
import "fmt"
func main() {
  fmt.Println("Hallo Welt")
}

Um das Programm einfach auszuführen, verwenden Sie das Kommando go run hallo_welt.go im Terminal. Dabei erzeugen Sie keinen Maschinencode, das Programm wird quasi interpretiert. Das Erstellen des Maschinencodes stoßen Sie mit go build hallo_welt.go an. Die ausführbare Datei liegt danach im gleichen Verzeichnis; mit ./hallo_welt starten Sie sie.

Um den Unterschied noch einmal klar herauszustellen: Die Option run führt den Code einfach aus. Er ist so auf jeder CPU-Architektur lauffähig, ähnlich wie Python. Mit der Option build dagegen erzeugen Sie ein Binary für die aktuelle CPU, also die ARM-Architektur. Das Binary eignet sich dann für einen Intel-PC nicht mehr.

Atom-Zeitalter

An dieser Stelle lohnt es sich, einen Blick auf den Editor Atom zu werfen. Einfache kleine Programme lassen sich auch in einem Editor wie Vi oder Nano tippen; für größere Programmiervorhaben lohnt sich aber der Einsatz eines modernen, leistungsfähigen Editors.

Atom gibt es für Linux und Windows. Die Dateien für die Installation stehen auf der Homepage des Projekts [2] bereit. Richten Sie nun Atom mit dem für das Betriebssystem üblichen Verfahren auf einem Desktop-PC ein und starten Sie es. Unter dem Menüpunkt Edit | Preferences | Install suchen Sie nach remote-atom (Abbildung 1). Haben Sie den Eintrag gefunden, klicken Sie auf die Schaltfläche Install, um die Erweiterung einzurichten.

Abbildung 1: Für den Einsatz mit dem Raspberry Pi installieren Sie die Erweiterung »remote-atom«.

Abbildung 1: Für den Einsatz mit dem Raspberry Pi installieren Sie die Erweiterung »remote-atom«.

Nach der Installation starten Sie den Remote-Atom-Server, indem Sie unter Packages | Remote Atom den Punkt Run Server anwählen (Abbildung 2). Als Nächstes benötigen Sie eine Verbindung zum Raspberry Pi, die auf dessen Port 52698 weiterleitet. Linux-Anwender greifen hier einfach zu SSH (Listing 4), als Windows-Nutzer setzen Sie diesen Tunnel mithilfe eines Tools wie Putty auf.

Abbildung 2: Den Remote-Atom-Server starten Sie unkompliziert direkt aus dem Menü heraus.

Abbildung 2: Den Remote-Atom-Server starten Sie unkompliziert direkt aus dem Menü heraus.

Listing 4

 

$ ssh -R 52698:localhost:52698 pi@RasPi-IP

Nun installieren Sie noch Rmate auf dem Raspberry Pi, das Gegenstück zu Atom. Dazu führen Sie auf der Konsole des RasPi die Kommandos aus den ersten beiden Zeilen von Listing 5 aus. Um sich den Namen des Kommandos besser einprägen zu können, benennen Sie rmate am besten nach ratom um.

Listing 5

 

$ sudo wget -O /usr/local/bin/ratom https://raw.github.com/aurora/rmate/master/rmate
$ sudo chmod +x /usr/local/bin/ratom
$ ratom /home/pi/gows/hallo_welt.go

Wenn Sie jetzt auf dem Raspberry Pi das Kommando ratom mit dem Namen einer Go-Quellcodedatei eingeben, öffnet sich diese im laufenden Atom-Editor auf dem Desktop-Rechner (Abbildung 3), wo Sie sie wie gewohnt bearbeiten können. Sobald Sie die Datei speichern, lädt die Software sie automatisch zum RasPi hoch.

Abbildung 3: Das Hallo-Welt-Beispiel im Atom-Editor auf einem Linux-PC.

Abbildung 3: Das Hallo-Welt-Beispiel im Atom-Editor auf einem Linux-PC.

GPIOs ansprechen

Das nächste Testprogramm spricht die GPIOs des Raspberry Pi an. Damit Sie sehen, dass sich an der GPIO etwas tut, schließen Sie einige LEDs an. Abbildung 4 zeigt den entsprechenden Testaufbau, Abbildung 5 den Schaltplan dazu. Im Beispiel kommt die Bibliothek go-rpio zum Einsatz, die Sie mit dem Befehl aus Listing 6 von Github herunterladen und installieren.

Abbildung 4: Testaufbau mit LEDs.

Abbildung 4: Testaufbau mit LEDs.

Abbildung 5: Schaltplan zum Testaufbau.

Abbildung 5: Schaltplan zum Testaufbau.

Listing 6

 

$ go get -d -u github.com/stianeikeland/go-rpio

Die Bibliothek verwendet das BCM-Layout des Mini-Rechners, verwendet also die Pin-Nummern des BCM-Chips, der im Raspberry Pi steckt. Falls Sie bereits mit WiringPi gearbeitet haben, dürften Sie das recht verwirrend finden. Listing 7 hilft dabei, nachzuvollziehen, wie es funktioniert.

Wenn Sie im Go-Programm als Pin-Nummer die 17 angeben, ist damit der entsprechende Pin des BCM-Chips gemeint. Dieser ist über den physischen Pin 11 der 40-poligen Stiftleiste des Raspberry Pi herausgeführt. Wollten Sie diesen Pin mit der WiringPi-Bibliothek ansprechen, müssten Sie dort die GPIO0 wählen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben