ここは、ラズパイビギナーが参考にしてもらえたらと思って記事を書いてもいるので、過去のSDカードを使っていると色々と不具合が生じてきます。
特に、ライブラリのインストールはどうしたんだっけ??となってしまったので、いっそのことOSのクリーンインストールからやってしまえという事で、SDカードにOSを書き込むところからやり直しました。
OSの書き込み
選んだOSは RaspberryPi OS (32-bit) です。何で64-bitにしなかったのかって?
それは、32-bitが (Recommended) となっていたからです。何でも標準でいいじゃないですか。
立ち上げたらやることは、ユーザー名とパスワード決め、地域決め、アップデートの確認。ここまでは説明もいらないくらい簡単ですね。
次に、VNCの設定。いちいちキーボードとマウスとテレビを繋ぐのは面倒なので、ささっとVNCの設定をします。
設定>Raspberry Piの設定から、次の箇所を変更してみました。
まずは、スクリーンの解像度(ヘッドレス解像度)を最大に。
![](https://erectro.sendai-hs-union.net/wp-content/uploads/2023/02/a2991014a6427c0493775fafae000bc0-1024x581.png)
次に、VNCとI2Cを有効にします。
![](https://erectro.sendai-hs-union.net/wp-content/uploads/2023/02/512a84e6653f2cc410b2deba716144a1-1024x578.png)
で、OK&再起動。
VNC解像度がMAXに!
何と!いくらいじってもダメだった、VNCの解像度がしっかり1920✖️1080になってるではありませんか!
ちょっとテンションが上がってきました。
次にPCA9685のライブラリを入れます。
sudo pip install adafruit-pca9685
gpizeroも入れます。
sudo apt install python3-gpiozero
コマンドを打ったら、こんなメッセージが。
![](https://erectro.sendai-hs-union.net/wp-content/uploads/2023/02/6c6602aa2c28189d9fb3c506cf381ed8-1024x439.png)
既に入っている。あ〜何ていうか、昔に比べたらラズパイも扱いやすく進化してるなぁと思うのでした。
では、昨日のプログラムを走らせてみよう!
エラー発生
ぇ!?
![](https://erectro.sendai-hs-union.net/wp-content/uploads/2023/02/5223f38fa7a16314ff42b67dd8a27200-1024x389.png)
こ、これは・・・。
このエラーは、ライブラリ上にエラーがあるというメッセージなのです。しかも、私がかつて一度悩みに悩んだ記憶があるエラーメッセージ・・・。既に直っていると思っていたのに。
このエラーの修正方法はここに書かれています。
これを初心者がやれと言われたら大変ですよね。しかも、ちょっと古い記事なので書いてある通りにやってもうまくいきません。
具体的な修正方法
修正は、/usr/local/lib/python3.9/dist-packages/Adafruit_GPIO/I2C.py を書き換えなければいけないのです。しかし、このフォルダはユーザーが勝手に書き換えられないようになっているので、エクスプローラーでたどって行って、ダブルクリックで開いて、修正という事が出来ないのです。
そこで、コマンドラインに次のように打ちます。
cd ../..
こうすると、プロンプトが右のように変わります。
cdは、チェンジディレクトリコマンドで、「..」は一つ上のディレクトリを表しますので、「../..」だと二つ上。つまりルートディレクトリまで移動します。
![](https://erectro.sendai-hs-union.net/wp-content/uploads/2023/02/9202b43287580fa8cfb038b2dceb1da9.png)
では、ライブラリの奥底に入ります。
cd /usr/local/lib/python3.9/dist-packages/Adafruit_GPIO
入ったら、目的のブツがあるか「ls」コマンドで確認してみます。
![](https://erectro.sendai-hs-union.net/wp-content/uploads/2023/02/83e1fd78a51e8620b4c729ddc84e22a9.png)
いましたね、I2C.pyが。
では、これを次の呪文で修正します。
sudo nano I2C.py
翻訳すると「sudoは管理者権限で、nanoはテキストエディターを使って、I2C.pyを開け」となります。
開いたら、下の方にスクロールしていき、63行目付近まで行きます。
![](https://erectro.sendai-hs-union.net/wp-content/uploads/2023/02/103ba74301139af94039db559edb18ec-1024x715.png)
で、次のコードのif文に#を付けてコメントアウトし、3行目のbusnumを1にします。具体的には、
if busnum is None:
busnum = get_default_bus()
return Device(adress, busnum, i2c_interface, **kwargs)
を
# if busnum is None:
# busnum = get_default_bus()
return Device(adress, 1, i2c_interface, **kwargs)
とします。
そしたら、Ctrl+O で書き込みます。
![](https://erectro.sendai-hs-union.net/wp-content/uploads/2023/02/cba1914e38c352f1a000a35f070230b5.png)
書き込んだら、もう一度昨日のプログラムを走らせてみます。
無事、走りました。
っていうか、このエラーが出るのは私だけじゃないはず。ラズパイでPCA9685を使っている人は全員出ると思うし、みんなこれで挫折してしまわないんだろうかと思うと、やはり電子工作は簡単ではないよな〜と思ってしまうのでした。
コメント