CircuitPythonにADS1x15ライブラリを導入 | ..あちゃ! no mic's

..あちゃ! no mic's

クラウドファンディング予定~2026年度
何度でもチャレンジ!
ただいまソーラーピックアップのテスト中

SANTA no Mix

 

 

 
500個も買ってしまった、USBハブ、任意に2個取り出して、テスト、良好、でした、
 
これで、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
続き、

   RaspiとADS1115の接続

 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 バス オブジェクトを作成し、それを変数に割り当てますi2cboard.SCLboard.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に、お願い、