Hidden in a nondescript mountain location in eastern Pennsylvania, the highly trained squirrels at the Radio Artisan Lab have been working feverishly lately on the Arduino keyer code. Besides being amazed that squirrels can code in C or even operate computers in the first place, I’m amazed at some of the features they’ve been pumping out. Here are the highlights:
You can now plug a PS2 keyboard right into the keyer, no computer required.
The keyer interfaces with popular logging and contest programs with the new Winkey Emulation feature.
Iambic A and B modes are now available. Straight key and bug modes are also available as before.
Various timing niceties like wordspace adjust, keying compensation, autospace, and first element extension are now available, along with the existing PTT lead/lag and dit-to-dah ratio features.
There’s now a Dead Operator Watchdog. If you keel over mid-QSO and one of the paddles gets stuck, the keyer will stop transmitting so you won’t be QRMing the frequency until your unfortunate (or fortunate) XYL finds you.
A few months ago one of the bright-eyed and bushy-tailed new guys wrote some Hellschreiber code on his lunch break. I’m not sure anyone will use it, but it’s there if some one wants to build a hell beacon or respond back to an unsuspecting CW op in hell. [insert joke here]
The little rodents tell me there’s more coming.
5 thoughts on “K3NG Keyer Update”
I am having problems with the “space bar” timing for the ps3 keyboard and serial. The space time for the cw characters is too long. At first I thought the keyboard/keyer hung, but then the next word was sent.
I am looking at your routines and you’ve changes a few things from the previous for element timing. I am going to download your code one more time, just in case I may have corrupted the source.
I just found a *big* bug. I re-worked the loop_element_lengths routine this past weekend and used a byte where I should have been using a float. It screwed up the wpm timing a bit and QRSS big time. New code coming shortly tonight or you can change this line:
Also, the default wordspace is now set with this line:
#define default_length_wordspace 7
and can be set in the CLI using the new \y command. Before this past weekend it was hardcoded for 5 for some reason. It should be 7.
Updated code on the page now. Thanks for finding this!! 73
Thanks for the code! I had a go at it this weekend. My goal is to use the keyer in command mode with only a paddle connected. When I tried to program the keyer’s memory with the paddle (using P1″message”), I found out there were many spaces inserted between characters. Hacking into the program_memory function I discovered that element_length is calculated nowhere. The calculate_element_length function and all of the calls to this function are commented out. After adding it, it seemed to work fine!
There is another small issue: after programming a memory position and hitting the command switch, it should send back all of the programmed morse code, but it will send only the first character…
Let me know if I need to do some more debugging. Best 73’s de Joop, PG4I.
i found out your Ardunio-Keyer and i am surprised about the numbers of features you had implemented in just one source file. Your work is awesome and a very good example, how an ATMEGA is used by radio amateur. The most cw keyer implementationens base upon a PIC.
I implemented your keyer code to fit on a plain ATMEGA 128 board (non Arduino) that i previously tested on a breadboard. I’am familar in usage of AvrStudio and will port your CW-keyer to them. This seems to be easier in usage of available atmega processors and platforms that is non-adruino based. You need just a bunch of circuits to build the keyer for a price less than $10.- . That’s an amazing argument for many people. Many thanks for the availablity of your source code. If I am finished, i send you the project code back to you. vy 73 de Gerd