Closed9

Raspberry Pi 4 Model B / gobot のLチカに謎に手間取ったので備忘録

FlowingSPDGFlowingSPDG

タイトル通り。アホほど手間取った。
敗因を列挙してみる。

FlowingSPDGFlowingSPDG

1. まずピン番号がわからなかった。

PINの番号に対して、GPIOのナンバーが割り振られているので、コードに起こす際に「あれ、これどっちの番号使えば良いんだ?」となった。最後まで総当たりで頑張った。気合すぎるだろ

FlowingSPDGFlowingSPDG

2. 配線周りの知見がなさ過ぎた。

「あれ、LEDってこれどっちがプラスなんだっけ?」とか、「抵抗...?」みたいになっていちいち調べないと本当にわからなかった。プルアップ?プルダウン?おれにはプルタブしかわからないよ...

FlowingSPDGFlowingSPDG

3. gobotがなかなか扱えなかった

というかサンプルコードがめっちゃ古くて全然動かなかった。
日本語文献で転がっているコードは大半がv1だったのでそれが原因かもしれない...?
v2にした瞬間キビキビ動くようになった。

FlowingSPDGFlowingSPDG

4. トラブルシュートのために別の方法でGPIOにアクセスする手段を探し始めて沼った

めっちゃyak-shavingみを感じた。raspi-gpio とか入れてみたりしたけど結局根本的な原因特定にはいたらなかったので、いったん置いといた。
あとgpio readall コマンドがdeprecatedになったらしく、色々転がっている文献やサンプルコード通りの検証が出来ず苦労した。

FlowingSPDGFlowingSPDG

成果コードは以下。

package main

import (
	"fmt"
	"time"

	"gobot.io/x/gobot/v2"
	"gobot.io/x/gobot/v2/drivers/gpio"
	"gobot.io/x/gobot/v2/platforms/raspi"
)

func main() {
	r := raspi.NewAdaptor()
	led := gpio.NewLedDriver(r, "7")

	work := func() {
		gobot.Every(1*time.Second, func() {
			if err := led.Toggle(); err != nil {
				fmt.Println(err)
			}
		})
	}

	robot := gobot.NewRobot("blinkBot",
		[]gobot.Connection{r},
		[]gobot.Device{led},
		work,
	)

	if err := robot.Start(); err != nil {
		panic(err)
	}
}
FlowingSPDGFlowingSPDG

終わり。開発に戻る。
明日はInterBEE最終日なので、既に前日の18時だが今からちょっとしたvMixのタリーライトでも作って早めに寝ようと思う。

このスクラップは10日前にクローズされました