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

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

  1. インストール
    2017.04.04現在,Raspbianのapt-getでインストールできるのは古いver.1.7なので,現行版をダウンロードサイトからwgetします。
    ダウンロードサイト https://golang.org/dl/(最新版は1.11.2です。2019.01.18)

    $ wget https://storage.googleapis.com/golang/go1.11.4.linux-armv6l.tar.gz 
    
    $ sudo tar -C /usr/local -xzf go1.11.4.linux-armv6l.tar.gz
  2. /usr/local/go/binにPATHを通す。
    ~/.bashrcファイルの末尾に
    
    export PATH=$PATH:/usr/local/go/bin
    
    を追加します。
  3. /usr/local/go/bin/goにSUIDを付与しておきます。これによりgoは常にroot権限で実行されます。
    $ sudo chmod +s /usr/local/go/bin/go
  4. テスト

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

    $ go version
    go version go1.11.4 linux/arm
  5. 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
  6. 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. GOBOTのインストール
    $ go get -d -u gobot.io/x/gobot/...
  3. raspiプラットフォームのインストール
    $ go install gobot.io/x/gobot/platforms/raspi
  4. ソース・ファイル 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()
    }
  5. ビルドしてsudoで実行
    $ go build raspi_blink.go
    $ sudo ./raspi_blink

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

  6. 参考 githubhttps://github.com/hybridgroup/gobot/tree/master/platforms/raspi

Follow me!