ケースもひと段落しましたので、プログラムの更新をしていました。

ボリュームの操作感がいまいちで、長押しでボリュームUP/DOWNできるようにしていましたが、割込み処理では無く、MAIN LOOPの中に入れていましたので、操作全体が重くなってしまいストレスでした。

そこで、割込み処理の中(エンコーダー処理)の中に入れて実験中です。

操作は、通常はボリュームUP/DOWNボタンを一回押すたび、ボリュームが1段階上下しますが、UP/DOWNボタンを同時に押している間は、ボリューム操作をロータリーエンコーダーで行えるようにしています。

まだ、バグがありますがとにかく動作しました。

 int RT_Switch()
{
Delta = R_Count0 - R_Count1; // 1)ロータリスイッチの変化量を計算する
R_Count0 = R_Count1; //  R_Count0を更新する
if (Delta != 0){ // 2)変化量が0でなければ、以下の処理をする
if (bit_is_clear(PINB, PB0)) // PB0と
{
if (bit_is_clear(PINB, PB1)) // PB1が押されていれば
{
vol_rec = vol + Delta; // ロータリーエンコーダー変化分を加算して、
radio.setVolume(vol_rec); // ボリュームをUP/DOWNする
vol = vol_rec;
Delta = 0;
}
}
 
 

 【バグ】

まれに、ボリューム操作をエンコーダーで行う際、前回?までにSEEKで止まった周波数にジャンプしてしまいます。(ボリューム操作は正常に行えます)

この現象が出ると、毎回同じ現象が発生してしまいます。

タイミングが解らず、バグ発見に至っていません。
(今日は、遅いので原因究明はあす以降に持ち越しです。)