大学の課外活動で開発していて、こんな問題に遭遇しました。
「ラズパイ使うのはいいけどさ、PWMピンが足らなくない…?」
どうしたものかと思って色々探していたらALT(alternate function)というものを使えばいいらしいということを知りました。
これを使うとピンの機能を変更できるらしい。
ただこのALT、いまいちやり方が分からない。
ということで、調べた結果を記事にいたしました。qiitaに記事を書くのは初めてな上、そこまで詳しいわけでも無いのでミス等は多めに見ていただけると助かります…。
使用したのはraspberrypi4 modelBでOSはraspbianです。
ALT機能の使い方
今回は例として12番ピンをALT5に変更します。
ターミナル開いて
$ gpio -g mode 18 ALT5
これで終わり。
ここで、modeの次に打ち込む値(今回は18)はBCMの番号で、ハードのピン番号ではないことに注意してください。
ALT3なら、
$ gpio -g mode 18 ALT3
にすればokです。
BCMの確認は
$ gpio readall
で見ることができます。
Oops 18だかなんだかと出てきたらwiring.piを更新してあげれば解決します。更新の方法は熟練者たちが丁寧に解説してくださっているので、ここでは割愛します。
調べるのに一日近くかかってこれだけ…?
解決したから良いですが…。
変更できたか不安だったら、先ほどと同様に
$ gpio readall
を打ち込んで、確認しましょう。
起動時に自動実行させる
ただ、このままでは起動時に毎回コマンドを打ち込む必要があります。
面倒ですね。
そこでrc.localを用いて起動時に自動で打ち込むように指示します。
$ sudo nano /etc/rc.local
を入力し、
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
exit 0
のexit 0の前の行に利用したいALTのコマンドを入力してください。
打ち込んだら、ctrl+Oで保存。
再起動し、gpio readallで適応されているか確認してください。
お疲れ様でした。