From the Workbench: Arduino CW Keyer

I’m pleased to announce my Arduino CW keyer code is ready for prime time and available for download here.  At first this started out as merely porting my PIC keyer code to the Arduino, but the advanced features and ease (and joy) of coding for this platform encouraged me to venture further.  Beyond my original PIC keyer features, this creation also has a speed potentiometer, a serial port command line interface, more and bigger memories, QRSS, HSCW, and memory macros.  It also has a callsign receive practice mode, CW keyboard, and Hellscreiber sending capability.  I’m trying to figure out a way to interface with Ham Radio Deluxe and N1MM, and I have in the works a frequency counter option for use within homebew rigs, like my original PIC keyer.

The code is stable at this point, and I’m not aware of any bugs.  If anyone tries this code out and has bug reports, feedback, or feature requests, please drop me a comment.  Next I’m going to finish the Yaesu rotator computer interface.

I have a lot of ideas for an Arduino controlled antenna tuner swimming around in my mind.  After having two commercial automatic antenna tuners that were disappointing, I think I can build a better mousetrap.  The tuner will be a balanced L design capable of 150 watts or more, but still capable and accurate at QRP power levels.

Fun stuff!

6 Responses to “From the Workbench: Arduino CW Keyer”

  • Chad KJ4VYI:

    great stuff — i have been following the arduino for some time but have never bought one — now i need to !!! — would like to figure out a morse decoder with an lcd screen with inputs directly for a qrp rig ( tuna tin swl type rigs) and or some type of freq readout from the smaller rigs !!

    keep up the great work


  • Ken N9VV:

    How about contributing to the OpenQRP project by K1EL who is using an Arduino to control the entire QRP rig: He has ported special CW keyer code from an N6?? and is very excited about the capability.

    GL 72/73
    de Ken N9V

  • Vincenzo - IZ5GVP:

    Help! I can’t compile the code!

  • Goody K3NG:

    Vincenzo, what error are you getting?

    There may be an issue copy-and-pasting the code. Let me see if I can drop a text file somewhere for you to download.

  • Goody K3NG:

    Vincenzo, try copy and pasting the text from this file into the Arduino Sketchbook:

  • Vincenzo IZ5GVP:

    Many thanks for the new text file… but now compiler say this:

    In function ‘void setup()’:
    error: ‘A2’ was not declared in this scope In function ‘byte pot_value_wpm()’:
    In function ‘void ptt_key()’:
    In function ‘void ptt_unkey()’:
    In function ‘void command_speed_mode()’:
    In function ‘void switch_to_tx(byte)’:
    In function ‘void check_the_memory_buttons()’:
    In function ‘void serial_qrss_mode()’:
    In function ‘void serial_switch_tx()’:
    In function ‘void serial_set_serial_number()’:
    In function ‘void serial_wpm_set()’:
    In function ‘void serial_callsign_receive_practice()’:
    In function ‘void play_memory(int)’:

    Again many thanks for your help.

Leave a Comment

Subscribe FREE to's
Amateur Radio Newsletter
News, Opinion, Giveaways & More!

Join over 7,000 subscribers!
We never share your e-mail address.

Also available via RSS feed, Twitter, and Facebook.

Subscribe FREE to's
Amateur Radio Newsletter

We never share your e-mail address.

Do you like to write?
Interesting project to share?
Helpful tips and ideas for other hams?

Submit an article and we will review it for publication on!

Have a ham radio product or service?
Consider advertising on our site.

Are you a reporter covering ham radio?
Find ham radio experts for your story.

How to Set Up a Ham Radio Blog
Get started in less than 15 minutes!

  • Matt W1MST, Managing Editor

Sign up for our free
Amateur Radio Newsletter

Enter your e-mail address: