Arduino Memory Keyer

Ok, so it looks like a mess on the breadboard, and you would be right, its a bloody mess and there is so much other left over other projects that it is almost impossible to tell where the crap ends and the keyer begins, but i can assure you, its there and it works. I used the morse library written by Erik Linder SM0RVV and Mark VandeWettering K6HX and fixed by Glen Popiel which can be gotten from his website here: With a minor change to the header file in the library to make 2 private methods public, we are now able to individually key dits and dahs at the correct speed without delay overheads.

Connecting the key to the arduino is as simple as using 2 10K resistors in series to 5v to pull things high. And when you key a dit or dah things get pulled low, we read that change on pins 10 and 11 and send the dit and dah accordingly. Very much how PA3CHM did it here: in his simple keyer.

And because the morse library takes care of timing and can send strings of morse characters, it was a rather prospect to add in a 4 button keypad, fiddle with the example code in arduino and get some memory functions happening. So i have 2 hard coded memory calls, which call cq for me. This could be expanded with a larger keypad but suits my needs. The other 2 buttons are used to set the cw keyer speed, incrementing or decrementing the speed 1 wpm at a time.

Now obviously there are some rather full blown arduino keyers out there that have all the bells and whistles you can imagine, and yes i could have used the code by K3NG here: but i chose to roll my own specifically to my own needs and ultimately this will embedded in the 3 band cw rig i have been working on for sometime. The good thing is I have this part working, its timing is fine and now I can move onto the transmitter part of the project.

The code is published below, I hope others find it useful, take it, modify, expand and customise to your own needs. Enjoy.




3 thoughts on “Arduino Memory Keyer

  1. Dear Rob,

    Please send me de library used in the arduino-memory-keyerwith the changes you made.

    Thank you very much,


    1. Hi Hans, I will dig it out and send it to you over the weekend. I think i added it as a download link in the blog post. I will check later, if not i will send it to you.


    2. Hi Hans, if you download the library from the link above and change the morse.h header file to look like this it will work. All you are doing is making 2 private methods public so you can call them anywhere.

      #ifndef Morse_h
      #define Morse_h

      #include “Arduino.h”

      class Morse
      Morse(byte pin, byte speed, byte beep);
      void sendmsg(char *str);
      void send(char c);
      void dash();
      void dit();
      void bdash();
      void bdit();

      Cheers, Rob

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.