前回作ったBrushKnobは、ファームウェア(プログラム)の書き換えでパソコンのボリュームコントローラーにすることができます。
ノブを回して音量を上げたり下げたり、ボタンを押してでミュートと言った具合にコントロールができるようになります。
プログラムの書き換え
BrushKnobは、V-USBと言うAVR用のUSBライブラリが使われています。
V-USBを使ったデバイスは他にも多く開発され公開されています。
その中でも、USB Volume controlのと言うデバイスは、BrushKnobと似た回路でできています。
ピンの接続が若干違うだけなので、ソースを少し修正するだけでBrushKnobで動作させることができます。
今回は、USB Volume controlの公開されているソースのVer3に含まれるTiny85用を修正しました。
ソースの修正箇所は2カ所で
encoder.hの9~11行
//encoder port & pins #define PORT_Enc PORTB #define PIN_Enc PINB #define DDR_Enc DDRB #define Pin1_Enc 3 // 4 から 3 に変更 #define Pin2_Enc 4 // 3 から 4 に変更 #define Btn_Enc 0 // 1 から 0 に変更 //______________________ #define RIGHT_SPIN 0x01 #define LEFT_SPIN 0xff
usbconfig.hの33行
#define USB_CFG_IOPORTNAME B /* This is the port where the USB bus is connected. When you configure it to * "B", the registers PORTB, PINB and DDRB will be used. */ #define USB_CFG_DMINUS_BIT 1 // 0 から 1 に変更 /* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected. * This may be any bit in the port. */ #define USB_CFG_DPLUS_BIT 2
encoder.hではロータリーエンコーダーの接続ピンの変更、usbconfig.hではUSBのD-端子の接続ピンを変更しています。
修正したソースをコンパイルし、hexファイルを作成して、それをBrushknobのTiny85に書き込みます。
尚、このソースは、AVR studio5.0用ということで、コンパイルにはAVR studio5.0が必要です。
私は間違えて5.1を入れてしまいましたが、5.1でもコンパイル可能でした。
自作BrushKnobはISP端子を省略して作っているので、プログラム書き換えの為に分解します。
AVRISPmk2を使ってTiny85のプログラムをVolume Controlの物に書き換えました。
しかし、何故かコンパイルに使ったAVR Studio 5.1でもAVRISPmk2が認識されない問題が発生して、書き込みにはまたAtmel Studio 7.0を使いました。
書き換えたTiny85を戻して、再び組み立てればPCの音量コントローラーの出来上がりです。
このデバイスもPCに接続するだけで認識されました。
今まではパソコンで音量をコントロールするのに、(私の場合)システムトレイのボリュームコントローラーを開いて調節していましたが、今回作ったVolume Controlはノブを回すだけで音量を調節できて、とても便利。
なので、Volume Control専用にBrushKnobをもう1つ作りたいなと思っています。