0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iPhoneモールス練習アプリに大理石の電鍵を接続する

Last updated at Posted at 2025-11-15

setup.jpeg

こちらの記事の続きです。

今回は、重量感のある大理石の電鍵、Hi-MOUND HK-808を、iPhoneに接続して、モールス信号練習アプリMorse Maniaで使ってみました。縦振り電鍵を使うのは初めてだったのですが、安定していて打ちやすいです。練習がはかどります。

縦振り電鍵を探す

前の記事では、iPhoneモールス練習アプリMorse Maniaに2パドル電鍵を接続しました。

今度は、縦振り電鍵も接続したいと考えました。どうせ接続するなら、重厚な本格的な電鍵が良いと思い、Hi-MOUNDのHK-808を探しました。電信マニアの方々のどこのブログでも絶賛で、最高の打ち心地と書かれてます。台座は大理石、支持軸はボールベアリングという豪華な造りですが、すでに製造終了の製品です。オークションサイトに出品されても人気で高価になってしまってたのですが、手頃な価格でフリマサイトに出品されたばかりのものを入手できました。

hk808.jpeg

台座は大きめの大理石で、全体の重量は1,027gでした。前回使った鋳鉄製のカツミ電機KM-22は1,230gでした。鉄の比重は大理石の2.9倍くらいで重いです。でも、縦振り電鍵は、パドル電鍵と違い縦操作するので、十分な重さで安定していてす。

自作USBアダプタに接続する

これを前回、Pro Micro互換基板で作成した自作USBアダプタに接続します。Pro Microの7番、8番、GNDピンから線を引き出しているのですが、その7番とGNDを、HK-808の端子に接続しました。8番とGNDでも動作します。回路図を書くまでもないですが、一応こんな感じです。

2パドル電鍵を使った前回の記事で、右側パドルに接続していたケーブルは、今回は使いません。丸めてあります。

プログラム

Pro Microに書き込んだプログラムを以下に示します。前回の記事のプログラムと全く同じです。詳しい説明はそちらをご覧ください。簡単に説明すると以下です。

  • 電鍵のスイッチをオブジェクトに見立てて、MorseSwitchというクラスを作っています
  • setup()では、このクラスのコンストラクターを呼んで、左右パドルスイッチに対応するインスタンスを作ります
  • loop()の中からそれぞれのインスタンスのhandle()メソッドを呼び出すと、
    • スイッチ状態に変化があった場合にキーボードキーのコードをUSBに送出します
    • チャッタリングが発生する可能性のある期間は、handle()は何もしません
    • スイッチに変化のない場合も、handle()は何もしません
//Morse key to USB keyboard converter for Morse Mania app.
//2 paddle key: pin7<-->left paddle, pin8<-->right GND<-->common
//straight key: pin7 or pin8<-->key, GND<-->common  
#include "Keyboard.h"

//class for a Morse key switch
class MorseSwitch {
  static const int chatlength=20; //key-chattering duration in msec
  int pin;  //connected Arduino I/O pin
  char key; //assigned keyboard-key ('a', 's', space...)
  int prevLevel=HIGH; //previous Arduino-pin level (HIGH or LOW)
  unsigned long chatstart=0; //time when key-chattering may have started

public:
  MorseSwitch(int arduino_pin, char keyboard_key) {
    pin=arduino_pin;
    key=keyboard_key;
    pinMode(pin, INPUT_PULLUP); //pull-up mode
  }

  //read the Arduino pin and send a keyboard-key if pin changed
  void handle() { //called from loop().
    unsigned long timenow=millis(); //time now in ms
    if((timenow - chatstart) < chatlength) return; //chattering, do nothing
    int newLevel = digitalRead(pin); //now stable, read this pin
    if(prevLevel==newLevel) return; //no change, do nothing
    prevLevel=newLevel;//update this previous pin-level
    chatstart=timenow;//update chattering-start-time
    if(newLevel == LOW) { //switch is pressed
      Keyboard.press(key);
    } 
    else { //newLevel == HIGH, then switch is released
      Keyboard.release(key);
    }             
  }
};

MorseSwitch *leftPaddle, *rightPaddle;

void setup() {
  Keyboard.begin();  
  leftPaddle  = new MorseSwitch(7,'a');
  rightPaddle = new MorseSwitch(8,'s');
}

void loop() {
  leftPaddle->handle(); //read left and send USB key
  rightPaddle->handle();//read right and send USB key
}

動作確認

縦振り電鍵を使うのは初めてだったのですが、打ち心地は想像以上に良かったです。電鍵の重量があるので、安定してます。使い心地にこだわって作られた道具は素晴らしいと感じました。使っている動画を添付します。

まとめ

前回の2パドル電鍵に続いて、今回は縦振り電鍵をiPhoneに接続して、Morse Maniaアプリで使ってみました。2パドル電鍵は、信号長さが一定ですし、楽ですね。一方で、縦振り電鍵は、手数が増えるけど、思い通りに打つ感じがします。車のオートマチックとマニュアル変速みたいな関係かなと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?