電子ボリューム付きラインセレクタ。
基本的な動きができたよ。
初期不良の中華ラインセレクタ
コントローラー部分の不良でした。
電子ボリューム、ラインセレクタ
両方ともArduinoでコントロール出来ましたよ。
液晶ついているのがArduino、オレンジのハコが3つ載っているのが中華ラインセレクタの本体部分、裏返しになっているのが電源。
Arduino、液晶をのせると途端にピンが足りなくなりますが
アナログピンをデジタルに流用できるという裏技(?)があって実現できました。
デジタル入力(または出力)するよ!と設定するだけなんですね。
この裏技使ってもピンはぎりぎりでした。
中華ラインセレクタのロータリーエンコーダ(ボリュームつまみです)
GND部分が赤というトラップに引っ掛かりましたが、
Arduinoの内部プルアップを使ってGNDに落とすことで動きました。
ラインセレクタ部分
つながっているピンをHIGHにしたらリレーが動きましたよ。
簡単。
ボリューム調整部分
ここが一番大変。
SPIという規格で制御しますが、これって液晶でも使っているのでかち合います。
規格は複数のデバイスを接続できるようになっているから問題ではないんですが、デバイスを識別する「SS」は共用できません。
「SS」として通常使う10番ピンが液晶に使われてしまっているので、
別のピンにボリューム調整用の「SS」を割り当てます。
通信内容は結構単純で、上位8バイトが右、下位8バイトが左の音量です。
音量は0から255まで
なので、一旦音量を格納してから、8ビット左にシフトして再度音量を格納。
これをSPI.Transferで送りつけてあげればいい。
その時は液晶が音量を拾わないよう、液晶側の「SS」はHIGHにすることが重要。
そうそう、MUTEのピンはなぜか逆論理になってて、0V(LOW)だと音が出ない。
なので、Vccにつなぐなり、適当なピンにつないでHIGH状態にしてくださいね。
後は、音量、チャンネルのメモリー機能と、デシベル変換、そしてミュートのコードを追加して、
プレッドボードワイヤで組んでいるのを、ちゃんとシールドにコネクタを実装して車載できるように。
まぢ、動くとは思ってなかったです。
久々な充実感。
これで聞く音楽は、一味も二味も違います。
自作オーディオはこれだからやめられない。
この電子ボリュームは結構性能がいいようです。
(本物ならね)
無駄にならなくてよかった。
Posted at 2020/05/24 00:29:41 | |
トラックバック(0) | 日記