PR

K3NG CW Keyer、ボタンによるメモリ書込みを長押しに改造(うっかり消してしまう事故を回避)

現状の問題点

K3NG CW Keyerでメモリに書き込むには、次の二つがある。

  • コマンドモードでPコマンド(P#の打鍵でメモリ番号#に書込み)
  • コマンドモードでボタンを押す(押したボタンに対応するメモリに書込み)

この他に、CLI(コマンドラインインタフェース)を持っていればそちらからでもできると思うが、ここでは本体操作に限っての話。そういうことで、そちらの方法は省略(今回の話しの対象外)。

ここで問題になるのは、ボタンを押しての書込み方法。機能としては問題ないのだけど、コマンドモードでうっかりボタンを押してしまうと書き込んであるメモリ内容が消えてしまう(上書きされる)。もう一回書き直せばいいと言えばいいのだけど、面倒だし、打鍵に不慣れだと結構痛いと思う。そもそも、楽したいがためにメモリに書き込んでいるのに、もう一回入れ直さなきゃいけないとなると気が重い。

ならば、ボタン操作による書込みをできなくしてしまえば良い。メモリ書込みはPコマンドだけっていうこと。しかし、Pコマンドの場合は、番号を打ち間違えると間違って入力した番号のメモリが消えてしまう。番号の打ち間違いはあまりないかとは思うけど、可能性はゼロではない。そう考えると、やはり、ボタン操作のほうが良さそう。

「ボタンで書込みにしたいけど、うっかりミスは避けたい。どうにならないか」と考えているうちに、ボタン操作をちょっと改造することを思いついた。(コマンドモードで)ボタンを長押ししたときに書き込みに入るようにと。うっかり、ちょんと押したくらいだと無視する。これなら不幸な事故は避けられそう。

改造

k3ng_keyer.inoをジーーーっと眺めてたどりつたのが、ボタンが離されるのを待っているループ(7450行付近)。このループの直前の時刻と、抜けたところ(ボタンを離した時点)の時刻を比べる。一定時間(ここでは、とりあず500msとした)を超えてボタンが押し続けられていたならメモリ書込みのコードに入る。以下がそのコードの差分(パッチ)。

--- D:/k3ng_cw_keyer-master/tmp1/k3ng_keyer/k3ng_keyer.ino	Tue May 31 01:30:52 2022
+++ D:/k3ng_cw_keyer-master/tmp2/k3ng_keyer/k3ng_keyer.ino	Tue Jun 14 22:01:45 2022
@@ -7402,2 +7402,4 @@
   while (stay_in_command_mode) {
+    bool is_long_press = false;
+
     cw_char = 0;
@@ -7445,3 +7447,4 @@
       }
-      if (button_temp >=0 ){  // check for a button press
+      if (button_temp >=0 ){  // check for a button press  
+        uint32_t time_start = millis();      
         looping = 0;
@@ -7451,2 +7454,5 @@
         while (button_array.Held(button_that_was_pressed)) {}
+        if ((time_start + 500) < button_array.last_pressed_ms) {
+          is_long_press = true;
+        }
       }
@@ -8079,3 +8085,5 @@
             } else {
-              program_memory(button_that_was_pressed - 1); // a button other than 0 was pressed - program a memory
+              if (is_long_press) {
+                program_memory(button_that_was_pressed - 1); // a button other than 0 was pressed - program a memory
+              }
             }

実際の動作の様子が下のビデオ。

このビデオでは実際のメモリ操作は行っていないが、もちろん、ちゃんとメモリ(打鍵記録)される。これなら操作ミスでメモリを消してしまう事故の多くは避けられるのではないかと思う。

自作
この記事のタイトルとURLをコピーする
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク

コメント