Ubuntu18.04をインストールしたRaspberryPi 3 Model B+でGPIOを使う


最初に投稿するときに検証まで済ませておけ

まっことその通りであります。前の記事

1.shellでGPIOに指示を出す

検証用ボード

まずはGPIOに指令が出せるのか。やってみましょう。
今回はラズパイマガジン2019年6月号のてんこ盛りボードを使うので、あしからず。一応写真載せときます。

操作

shell、つまりターミナル上で操作します。今回はちょうどいいところにRGB-LEDが乗っかってるので、いじってみましょうか。なんでもいいんですが、赤く光らせてみます。17番ピンがRにつながってるぽいのでそこに出力してみます。

gpio -g mode 17 out
gpio -g write 17 1

これでLEDが輝いているはずです。

gpio -g write 17 0
gpio -g mode 17 down 

使った後はしっかり片付けておきましょう。
これでデジタル出力が使えることは確認できました。

2.Lチカする

要するにプログラムを書く。調べていくうちにpythonモジュールのwiringPiがかなりArduinoライクに書けるっぽくてそっちのほうがとっつきやすいかとも思ったけどRPi.GPIOでやっていきます。やるったらやるんです。

led_blink.py
#led_blink.py

import sys
import RPi.GPIO as GPIO
import time

def main():
    # pin setup
    GPIO.setmode(GPIO.BCM)

    GPIO.setup(17,GPIO.OUT)

    # main loop
    while(1):
        GPIO.output(17,1)   # turn pin 17 on
        time.sleep(1)       # wait 1 sec
        GPIO.output(17,0)   # turn pin 17 off
        time.sleep(1)       # wait 1 sec 

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print("program closing...")
        GPIO.cleanup()      # close all port
        sys.exit()

これで1秒おきにLEDが点滅するプログラムができました。Ctrl-cでプログラムが止まるようにもなっています。
一応解説すると

GPIO.setup(17,GPIO.OUT)

で17番ピンを出力に設定。
その後whileループの中で

GPIO.output(17,1)

GPIO.output(17,0)

を繰り返すことでLEDの点滅を行っています。
注意しなければならないのが、RPiのiは小文字です。
これで一回躓きました(核爆)


以上で、Ubuntu18.04でもRaspberryPiのGPIOが使えるようになったかと思います。
以降は自分で調べていっていただけると幸いです。
また何か書きたくなったら追記しますね。

参考にしたサイト

WiringPi gpio コマンドの使い方
wiringPiの使い方
Raspberry PiでPythonのRPi.GPIOを使ってLチカする