これで、WM8960で4チャンネルで音が出せそうな、確認は、出来ました。
その後、topコマンドで、CPU使用率を調べました。

PulseAudioが、60%を占めていました。なんとなく、ラズパイに、ADコンバータを介して、ポッド(ボリューム)4個を付けても、問題なさそうなので、とりあえず、CircitPythonで、繋いでみたく、インストールを試みたのですが、WM8960のドライバ導入で、書き換えた?、カーネルを壊してしまう結果になりました。当然と、言えば、その通り、なのですが、
これから、続けていくのに、システムの破壊工作員と化す、のは、目に見えているので、OSの入った、microSDカードを3枚、用意しました。
WM8960-Audio-HATは、外して、新しいOSを用意しました。
ラズパイZero(Bullseye OS-full-23-05-03)に、 CircitPythonをインストール。
update && upgradeのあと、リブートするのを忘れなければ((笑))、大丈夫、
正直に、やったこと、すでにインストール済みのパッケージもありました。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python3-pip
$ sudo pip3 install --upgrade setuptools
$ cd ~
$ sudo pip3 install --upgrade adafruit-python-shell
$ wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/raspi-blinka.py
$ sudo reboot
$ cd ~
$ sudo python3 raspi-blinka.py
うまくいかなかったら、欲張らないで、タクトスイッチ2(Up-Down)×4個で、構成、最悪、
OSなしのスタンドアローン版のカーネルイメージは、こちら、本家、に、あるのですが、、
ま、無理なので、
#追記2023/08/20
続き、
ADS1115:RASPI
VDD:3.3V
GND:GND
SCL:GPIO 3
SDA:GPIO 2
ADS1115:VOLUME(10kΩ)
GND:VOLUME(端子1)
A0:VOLUME(端子2)
VDD:VOLUME(端子3)
GND:VOLUME(端子1)
A1:VOLUME(端子2)
VDD:VOLUME(端子3)
GND:VOLUME(端子1)
A2:VOLUME(端子2)
VDD:VOLUME(端子3)
GND:VOLUME(端子1)
A3:VOLUME(端子2)
VDD:VOLUME(端子3)
$ sudo pip3 install adafruit-circuitpython-ads1x15
$ ls /dev/i2c*
$ sudo i2cdetect -y 1
$ sudo i2cdetect -y 2
ads-test.py を作成して、テスト。
4つのボリュームの値を読み取れました。
字下げ(インデント)して、まとめてwhile文でループさせました。
常にデータを読み取りながらのCPU使用率は、14%ほど、でした。USBピックアップの使用率が60%なので、悪くない数値だと思います。
#追記23/08/21
確認のために、昨日やったことを手順通りにやって、みたら、デフォルトのエディタが、Mu 1.0.3に、なっていました。
コードを「check」させると、残念なコードのダメ出しをしてくれ'`,、('∀`) '`,、
Google Bardにコードの説明を求めた
提供したコードは、ADS1115 ADC の 4 つのアナログ入力から電圧を読み取る Python スクリプトです。最初の行 #!/usr/bin/python3 は、スクリプトの実行にどのインタープリターを使用するかをオペレーティング システムに指示するシバン行です。次の 2 行は、必要なライブラリ (board、busio、adafruit_ads1x15) をインポートします。次の行は、I2C バス オブジェクトを作成し、それを変数 i2c に割り当てます。次の行では、adafruit_ads1x15 ライブラリから ADS1115 クラスをインポートします。次の行は、ADS1115 オブジェクトを作成し、それを変数 ads に割り当てます。次の 2 行では、ADC のモードとゲインを設定します。while True ループは、4 つのアナログ入力のそれぞれから電圧を継続的に読み取り、値と電圧をコンソールに出力します。
このスクリプトを実行するには、.py ファイルとして保存し、ターミナル ウィンドウで実行します。たとえば、スクリプトを として保存した場合はread_adc.py、ターミナルに次のコマンドを入力して実行します。
python3 read_adc.pyスクリプトの出力は、4 つのアナログ入力のそれぞれからの電圧 (1 行に 1 つ) になります。
コードの内訳は次のとおりです。
- この
import board行は、Raspberry Pi の物理ピンへのアクセスを提供するボード ライブラリをインポートします。 - この
import busioラインは、I2C および SPI バスへの高レベルのインターフェイスを提供する Busio ライブラリをインポートします。 - この
i2c = busio.I2C(board.SCL, board.SDA)行は I2C バス オブジェクトを作成し、それを変数に割り当てますi2c。とboard.SCLのboard.SDAピンは Raspberry Pi の I2C ピンです。 - この
import adafruit_ads1x15.ads1115 as ADS行は、adafruit_ads1x15 ライブラリから ADS1115 クラスをインポートします。 - この
from adafruit_ads1x15.analog_in import AnalogIn行は、adafruit_ads1x15 ライブラリから AnalogIn クラスをインポートします。 - この
ads = ADS.ADS1115(i2c)行は、ADS1115 オブジェクトを作成し、それを変数に割り当てますads。オブジェクトi2cはコンストラクターに渡され、ADC が接続されている I2C バスを指定します。 - この
ads.mode = 0行は、ADC のモードをシングルショットに設定します。 - この
ads.gain = 1行は、ADC のゲインを 1x に設定します。 - この
while True:行は無限ループを作成します。 - この
chan = AnalogIn(ads, ADS.P0)行は、AnalogIn オブジェクトを作成し、それを変数に割り当てますchan。オブジェクトadsはコンストラクターに渡され、チャネルが接続されている ADC を指定します。定数ADS.P0はチャネル番号を指定します。 - この
print(chan.value,chan.voltage)行は、チャンネルの値と電圧をコンソールに出力します。 - この
chan = AnalogIn(ads, ADS.P1)行は、チャネル 1 に対して前の手順を繰り返します。 - この
...回線は、チャネル 2 と 3 に対して前の手順を繰り返します。
この説明がお役に立てば幸いです。他にご質問がございましたら、お知らせください。
本日も、Picsartに、お願い、












