Go言語が面白そうなのでRaspberry Pi 3で動かして見ようと思う。

Wikipedia Go(プログラミング言語)

  1. インストール
    2017.04.04現在,Raspbianのapt-getでインストールできるのは古いver.1.3.3なので,現行版のver.1.8をダウンロードサイトからwgetします。

    $ wget https://storage.googleapis.com/golang/go1.8.linux-armv6l.tar.gz 
    
    $ sudo tar -C /usr/local -xzf go1.8.linux-armv6l.tar.gz
  2. /usr/local/go/binにPATHを通す。
    .bashrcファイルの末尾に export PATH=$PATH:/usr/local/go/bin を追加します。
  3. テスト

    source .bashrcを実行するか,一旦ログアウトして再度ログインします。

    $ go version
    go version go1.8 linux/arm
  4. Hello World
    1. ソース・ファイルhello.goを書きます。
      package main
      
      import "fmt"
      
      func main() {
        fmt.Printf("Hello World\n")
      }
    2. そのまま実行
      $ go run hello.go
      Hello World
    3. ビルドして実行
      $ go build hello.go
      $ ls 
      hello       hello.go
      $ ./hello
      Hello World
  5. WebサーバでHello World
    1. ソース・ファイル server.go
      package main
      
      import (
        "fmt"
        "net/http"
      )
      
      func handler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, World")
      }
      
      func main() {
        http.HandleFunc("/", handler) 
        http.ListenAndServe(":8080", nil)
      }
      
    2. 実行
       $ go run server.go

      プラウザで http://”RasPiのIPアドレス”:8080/ を開くとHello Worldが表示される。

チュートリアルサイト:A Tour of Go (Japan) 

Go言語でLチカ

  1. 配線
    GPIOヘッダーの7番ピンにLEDを接続する。
  2. Raspberry Pi用gobotパッケージのインストール
    $ go get -d -u gobot.io/x/gobot/... && go install gobot.io/x/gobot/platforms/raspi
  3. ソース・ファイル raspi_blink.go
    package main
    
    import (
            "time"
    
            "gobot.io/x/gobot"
            "gobot.io/x/gobot/drivers/gpio"
            "gobot.io/x/gobot/platforms/raspi"
    )
    
    func main() {
            r := raspi.NewAdaptor()
            led := gpio.NewLedDriver(r, "7")
    
            work := func() {
                    gobot.Every(1*time.Second, func() {
                            led.Toggle()
                    })
            }
    
            robot := gobot.NewRobot("blinkBot",
                    []gobot.Connection{r},
                    []gobot.Device{led},
                    work,
            )
    
            robot.Start()
    }
  4. ビルドしてsudoで実行
    $ go build raspi_blink.go
    $ sudo ./raspi_blink

    GPIOを使う場合はsudoでプログラムを実行する。