About K3NG

If you are looking for support for any of the projects on this site, please consult this page.

If you hear me calling CQ MY TEST, I’m operating My Contest. The exchange is RST.  It’s your contest as well and you’re welcome to participate in it.

I QSL via LOTW usually within a day or two and prefer this over paper QSLs.  I no longer have an eQSL account.  If you’re not on LOTW, you should be.  It saves paper and it’s fast.  It takes a little bit of work to get it set up, but you’ll be glad you did.

My postal address for paper snail mail QSLs is:

Anthony Good

56 Midway Drive

Jim Thorpe, PA 18229

I QSL 100% with an SASE, however I’m often very slow at paper QSLing. I tend to amass cards for a period of time and then respond to them all at once. Don’t be upset if you send me a PSE QSL card and you don’t hear back from me right away. I *will* QSL sooner or later. If I’m the very last QSL you need for 5 Band WAS or County Hunters, email me and I’ll try to expedite it :-)

Obligatory Memberships and Numbers

SKCC #12482T ~ EPA QRP #68 ~  Feld-Hell #578 ~ NRR #807

Silent Key Society

Regretful ARRL Life Member

I am intentionally not a member of FISTS due to the stance of past (now silent key) North America leadership regarding CW and CW testing, including public statements about people not learning CW being “lazy”.

I enjoy QRP, 6 meters, CW, Summits on the Air (SOTA), building stuff, making microcontrollers do cool things, and hiking with Amateur Radio.   Turn-offs include political discussions, 80m phone, and old people who act like really old people.

I do not publish my information on QRZ.com these days as it has become a podium for egomaniacs, political wingnuts, antagonistic moderators, and questionable management.  You might want to try using these fine sites for callsign lookups:

hamdb

HamQTH.com

QRZCQ.com

Callook.info

FCC ULS (US Amateurs Only)

If you’re one of these so-called MAGAs, a “Three-Percenter”, a white Christian nationalist, an Oath Keeper, or you’re in one of several other groups of this ilk, please don’t bother contacting me online or on the air.  You’re not a patriot or on some glorious mission from God.  You’re a tool and you are ruining this country with your propaganda, division, hatred, and toxicity.

27 thoughts on “About K3NG

  1. Hi Goody,
    Tnx for attempting a QSO with me on 7040 today. You were clearly copyable to begin with but then got stomped on by other stations and some noise. I did manage to get your name and signal report, though. You were my first QSO with the Tuna-Tin-Two/Sudden Storm combo – putting out about 500 mW to a Cushcraft R8 vertical. Tnx for hanging in there with me. If you think we managed to exchange enough info on the air for a valid contact, I’d like to exchange QSLs to mark my first flea-power QSO.

    Tnx & 72/73 for a happy new year,
    Rich W2VU
    w2vu@cq-amateur-radio.com

  2. i noticed you had trouble at one point logging into VHFDX,Info. I am having the same run in circles experience, did you ever solve it?

    paul kc2nyu

    1. Every time I’ve had an issue it’s been a server side issue. I see errors that point to database issues or resource exhaustion on the server. I’m guessing the site is too popular and it tends to get overloaded. It is a great site and I miss it when it’s down.

  3. Great site Anthony. We’re running parallel on many aspects. Have just started the keyer project which will be a great learning curve for me.

  4. Hi Anthony its been a long time since i fired up the code you have for the yeasu rotor ,i have been busy myself with a icom civ band decoder based on (antenna matrix – ON7EQ ) with lots of help from – Pete VE5VA ,any intentions of maybe adding that to antenna tuner unit you have as its running on a mega 2560 now but might have to redesign the switching for in band and out of band antennas completely ….

    Regards
    SAM – zs6sam

    1. Icom support is on the list. I was looking through the code and I think I can follow it as an example. I hadn’t considered automatic switching of antennas based on band, but that’s a great idea I will throw on the list.

  5. Hi Anthony
    Pete and i have made good improvements with the original code … to many to name ,but what we are currently sorting out a big stumbling block and has been a terrible bug to resolve and i think we going to have to re-engineer the code as im sure if you look at the code you will notice that
    the way in which it works is freq gets mapped to a band then antenna but the correct way as Pete has explained to me is by mapping the freq to a antenna and then to a band to be able to get the correct default antennas assigned ..Hope that helps ..I am also willing to do some basic testing of the code if you like and pick up glitches on the antenna selection on a full time basis… As that gives me a chance to learn more as well :-)

  6. Anthony::
    Thanks for a very informative and diverse blog.

    I’ve developed a fairly novel approach to home-brewing a beefy antenna rotator, using a readily available Buehler gear motor and 60:1 gear reducer plus chain drive gearing. It can turn a fairly large array a full 360° in about 45 seconds (about 2800 kb-inches of torque).The enclosure is a 10″ aluminum chef’s stock pot. Now that the rotator is functioning, I’ve turned my attention to a controller. Your Arduino-based project seems to be exactly what I need.

    The gear motor operates on 28 volts has a stall current of 5 amps, so I think I need a more robust controller than the standard Arduino shield. I’m a complete newcomer to the Arduino world, so please forgive what are certainly naive questions. In researching online, I have found a board that combines an Arduino development board and an H-bridge capable of handling up to 40 amps surge per motor, and up to 30 VDC supply. (This is the T’Rex board sold by SparkFun; see https://www.sparkfun.com/products/12075.)

    My questions are: is there any reason to think that this wouldn’t work to provide the foundation for a heftier version of the controller that you have created? And, are there better, or cheaper, hardware implementations of which I should be aware?

    thanks and 73,

    Lew N6LEW

    1. Hi Lew. There are several amateurs using H bridges with my controller, however most of them use Arduino Unos, Megas, or their own homebrew Arduino board using a bare Atmel ATMEGA chip. I’m not familiar with the T’Rex, however it looks like they’ve integrated an Arduino controller with the H bridge electronics, along with other things. My code probably could be made to work with it. At a quick glance I see the functionality is I2C controlled. However, this board is probably overkill. There are H bridge motor control shields available that connect to a stock Arduino Uno or Mega. I use Megas for development these days due to the extra memory, and there’s a cheap source for them (SainSmart).

      I see the “Arduino project” motor board handles only 2A per channel / 4A total, so that board isn’t robust enough. I’m sure we could probably locate a third party one that can handle 5A.

      There are several folks on the Radio Artisan group with experience with H bridges and hefty rotation systems. I’d recommend you join and see if you could get some advice there: https://groups.yahoo.com/neo/groups/radioartisan/info In the meantime I’ll do some Googling…

      73
      Goody
      K3NG

      1. Googling around, I’m actually liking the packaging and price of the T’Rex board more. It seems like a pretty good deal. I looked at the sample code a little more and it looks like motor control can be achieved without using I2C commands and just mapping the appropriate control pins. I need to look it over more, but I think you can probably get away with customizing the rotator_pins.h file in my project to make this board work.

  7. I am trying to compile K3NG CW keyer CODE_VERSION “2.1.2014040301-UNSTABLE” on my IDE 1.5.4 but keep getting the following errors. Can you give me any ideas of how to fix that? Thanks and thanks for your great work effort with this!
    73 de Arnie W8DU

    Arduino: 1.5.4 (Windows 7), Board: “Arduino Duemilanove or Diecimila, ATmega328”

    k3ng_keyer.ino:280:40: error: keyer_features_and_options.h: No such file or directory
    k3ng_keyer.ino:281:25: error: keyer_debug.h: No such file or directory
    k3ng_keyer.ino:282:32: error: keyer_pin_settings.h: No such file or directory
    k3ng_keyer.ino:284:28: error: keyer_settings.h: No such file or directory
    k3ng_keyer:347: error: ‘tx_key_line_1’ was not declared in this scope
    k3ng_keyer:348: error: ‘initial_ptt_tail_time_tx1’ was not declared in this scope
    k3ng_keyer:348: error: ‘initial_ptt_tail_time_tx2’ was not declared in this scope
    k3ng_keyer:348: error: ‘initial_ptt_tail_time_tx3’ was not declared in this scope
    k3ng_keyer:348: error: ‘initial_ptt_tail_time_tx4’ was not declared in this scope
    k3ng_keyer:348: error: ‘initial_ptt_tail_time_tx5’ was not declared in this scope
    k3ng_keyer:348: error: ‘initial_ptt_tail_time_tx6’ was not declared in this scope
    k3ng_keyer:349: error: ‘initial_ptt_lead_time_tx1’ was not declared in this scope
    k3ng_keyer:349: error: ‘initial_ptt_lead_time_tx2’ was not declared in this scope
    k3ng_keyer:349: error: ‘initial_ptt_lead_time_tx3’ was not declared in this scope
    k3ng_keyer:349: error: ‘initial_ptt_lead_time_tx4’ was not declared in this scope
    k3ng_keyer:349: error: ‘initial_ptt_lead_time_tx5’ was not declared in this scope
    k3ng_keyer:349: error: ‘initial_ptt_lead_time_tx6’ was not declared in this scope
    k3ng_keyer:351: error: ‘initial_qrss_dit_length’ was not declared in this scope
    k3ng_keyer:363: error: ‘SPEED_NORMAL’ was not declared in this scope
    k3ng_keyer:366: error: ‘default_length_letterspace’ was not declared in this scope
    k3ng_keyer:368: error: ‘default_keying_compensation’ was not declared in this scope
    k3ng_keyer:369: error: ‘default_first_extension_time’ was not declared in this scope
    k3ng_keyer:371: error: ‘ULTIMATIC_NORMAL’ was not declared in this scope
    k3ng_keyer:372: error: ‘default_ptt_hang_time_wordspace_units’ was not declared in this scope
    k3ng_keyer:373: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:452: error: ‘send_buffer_size’ was not declared in this scope
    k3ng_keyer:454: error: ‘SERIAL_SEND_BUFFER_NORMAL’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void loop()’:
    k3ng_keyer:703: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:719: error: ‘PRINTCHAR’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void check_paddles()’:
    k3ng_keyer:2590: error: ‘ULTIMATIC’ was not declared in this scope
    k3ng_keyer:2591: error: ‘ULTIMATIC_NORMAL’ was not declared in this scope
    k3ng_keyer:2672: error: ‘ULTIMATIC_DIT_PRIORITY’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void check_ptt_tail()’:
    k3ng_keyer:2730: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void check_dit_paddle()’:
    k3ng_keyer:2818: error: ‘PADDLE_NORMAL’ was not declared in this scope
    k3ng_keyer:2819: error: ‘paddle_left’ was not declared in this scope
    k3ng_keyer:2821: error: ‘paddle_right’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void check_dah_paddle()’:
    k3ng_keyer:2895: error: ‘PADDLE_NORMAL’ was not declared in this scope
    k3ng_keyer:2896: error: ‘paddle_right’ was not declared in this scope
    k3ng_keyer:2898: error: ‘paddle_left’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void send_dit(byte)’:
    k3ng_keyer:2956: error: ‘SENDING_DIT’ was not declared in this scope
    k3ng_keyer:2961: error: ‘tx_key_dit’ was not declared in this scope
    k3ng_keyer:2963: error: ‘tx_key_dit’ was not declared in this scope
    k3ng_keyer:3026: error: ‘SENDING_NOTHING’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void send_dah(byte)’:
    k3ng_keyer:3051: error: ‘SENDING_DAH’ was not declared in this scope
    k3ng_keyer:3056: error: ‘tx_key_dah’ was not declared in this scope
    k3ng_keyer:3058: error: ‘tx_key_dah’ was not declared in this scope
    k3ng_keyer:3133: error: ‘SENDING_NOTHING’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void tx_and_sidetone_key(int, byte)’:
    k3ng_keyer:3156: error: ‘SIDETONE_ON’ was not declared in this scope
    k3ng_keyer:3156: error: ‘COMMAND’ was not declared in this scope
    k3ng_keyer:3156: error: ‘SIDETONE_PADDLE_ONLY’ was not declared in this scope
    k3ng_keyer:3156: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:3157: error: ‘sidetone_line’ was not declared in this scope
    k3ng_keyer:3171: error: ‘SIDETONE_ON’ was not declared in this scope
    k3ng_keyer:3171: error: ‘COMMAND’ was not declared in this scope
    k3ng_keyer:3171: error: ‘SIDETONE_PADDLE_ONLY’ was not declared in this scope
    k3ng_keyer:3171: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:3172: error: ‘sidetone_line’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void loop_element_lengths(float, float, int, byte)’:
    k3ng_keyer:3195: error: ‘SPEED_NORMAL’ was not declared in this scope
    k3ng_keyer:3219: error: ‘ULTIMATIC’ was not declared in this scope
    k3ng_keyer:3220: error: ‘IAMBIC_A’ was not declared in this scope
    k3ng_keyer:3220: error: ‘paddle_left’ was not declared in this scope
    k3ng_keyer:3220: error: ‘paddle_right’ was not declared in this scope
    k3ng_keyer:3225: error: ‘SENDING_DIT’ was not declared in this scope
    k3ng_keyer:3228: error: ‘SENDING_DAH’ was not declared in this scope
    k3ng_keyer:3261: error: ‘AUTOMATIC_SENDING’ was not declared in this scope
    k3ng_keyer:3261: error: ‘paddle_left’ was not declared in this scope
    k3ng_keyer:3261: error: ‘paddle_right’ was not declared in this scope
    k3ng_keyer:3263: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:3269: error: ‘IAMBIC_A’ was not declared in this scope
    k3ng_keyer:3269: error: ‘paddle_left’ was not declared in this scope
    k3ng_keyer:3269: error: ‘paddle_right’ was not declared in this scope
    k3ng_keyer.ino: In function ‘int get_cw_input_from_user(unsigned int)’:
    k3ng_keyer:3444: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:3451: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void send_tx()’:
    k3ng_keyer:3944: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void switch_to_tx_silent(byte)’:
    k3ng_keyer:3954: error: ‘ptt_tx_1’ was not declared in this scope
    k3ng_keyer:3954: error: ‘tx_key_line_1’ was not declared in this scope
    k3ng_keyer:3955: error: ‘ptt_tx_2’ was not declared in this scope
    k3ng_keyer:3955: error: ‘tx_key_line_2’ was not declared in this scope
    k3ng_keyer:3956: error: ‘ptt_tx_3’ was not declared in this scope
    k3ng_keyer:3956: error: ‘tx_key_line_3’ was not declared in this scope
    k3ng_keyer:3957: error: ‘ptt_tx_4’ was not declared in this scope
    k3ng_keyer:3957: error: ‘tx_key_line_4’ was not declared in this scope
    k3ng_keyer:3958: error: ‘ptt_tx_5’ was not declared in this scope
    k3ng_keyer:3958: error: ‘tx_key_line_5’ was not declared in this scope
    k3ng_keyer:3959: error: ‘ptt_tx_6’ was not declared in this scope
    k3ng_keyer:3959: error: ‘tx_key_line_6’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void switch_to_tx(byte)’:
    k3ng_keyer:3983: error: ‘ptt_tx_1’ was not declared in this scope
    k3ng_keyer:3983: error: ‘tx_key_line_1’ was not declared in this scope
    k3ng_keyer:3983: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:3984: error: ‘ptt_tx_2’ was not declared in this scope
    k3ng_keyer:3984: error: ‘tx_key_line_2’ was not declared in this scope
    k3ng_keyer:3984: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:3985: error: ‘ptt_tx_3’ was not declared in this scope
    k3ng_keyer:3985: error: ‘tx_key_line_3’ was not declared in this scope
    k3ng_keyer:3985: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:3986: error: ‘ptt_tx_4’ was not declared in this scope
    k3ng_keyer:3986: error: ‘tx_key_line_4’ was not declared in this scope
    k3ng_keyer:3986: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:3987: error: ‘ptt_tx_5’ was not declared in this scope
    k3ng_keyer:3987: error: ‘tx_key_line_5’ was not declared in this scope
    k3ng_keyer:3987: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:3988: error: ‘ptt_tx_6’ was not declared in this scope
    k3ng_keyer:3988: error: ‘tx_key_line_6’ was not declared in this scope
    k3ng_keyer:3988: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void service_dit_dah_buffers()’:
    k3ng_keyer:4422: error: ‘IAMBIC_A’ was not declared in this scope
    k3ng_keyer:4422: error: ‘IAMBIC_B’ was not declared in this scope
    k3ng_keyer:4422: error: ‘ULTIMATIC’ was not declared in this scope
    k3ng_keyer:4423: error: ‘paddle_left’ was not declared in this scope
    k3ng_keyer:4423: error: ‘paddle_right’ was not declared in this scope
    k3ng_keyer:4430: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:4434: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:4438: error: ‘BUG’ was not declared in this scope
    k3ng_keyer:4441: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:4445: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:4447: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:4453: error: ‘STRAIGHT’ was not declared in this scope
    k3ng_keyer:4456: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer:4458: error: ‘MANUAL_SENDING’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void beep()’:
    k3ng_keyer:4473: error: ‘sidetone_line’ was not declared in this scope
    k3ng_keyer:4473: error: ‘hz_high_beep’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void boop()’:
    k3ng_keyer:4480: error: ‘sidetone_line’ was not declared in this scope
    k3ng_keyer:4480: error: ‘hz_low_beep’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void beep_boop()’:
    k3ng_keyer:4489: error: ‘sidetone_line’ was not declared in this scope
    k3ng_keyer:4489: error: ‘hz_high_beep’ was not declared in this scope
    k3ng_keyer:4491: error: ‘hz_low_beep’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void boop_beep()’:
    k3ng_keyer:4500: error: ‘sidetone_line’ was not declared in this scope
    k3ng_keyer:4500: error: ‘hz_low_beep’ was not declared in this scope
    k3ng_keyer:4502: error: ‘hz_high_beep’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void send_the_dits_and_dahs(char*)’:
    k3ng_keyer:4533: error: ‘AUTOMATIC_SENDING’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void send_char(char, byte)’:
    k3ng_keyer:4564: error: ‘CW’ was not declared in this scope
    k3ng_keyer:4606: error: ‘AUTOMATIC_SENDING’ was not declared in this scope
    k3ng_keyer:4666: error: ‘OMIT_LETTERSPACE’ was not declared in this scope
    k3ng_keyer:4667: error: ‘AUTOMATIC_SENDING’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void service_send_buffer(byte)’:
    k3ng_keyer:4786: error: ‘SERIAL_SEND_BUFFER_NORMAL’ was not declared in this scope
    k3ng_keyer:4791: error: ‘send_buffer_array’ was not declared in this scope
    k3ng_keyer:4791: error: ‘SERIAL_SEND_BUFFER_SPECIAL_START’ was not declared in this scope
    k3ng_keyer:4791: error: ‘SERIAL_SEND_BUFFER_SPECIAL_END’ was not declared in this scope
    k3ng_keyer:4793: error: ‘SERIAL_SEND_BUFFER_HOLD_SEND’ was not declared in this scope
    k3ng_keyer:4794: error: ‘SERIAL_SEND_BUFFER_HOLD’ was not declared in this scope
    k3ng_keyer:4798: error: ‘SERIAL_SEND_BUFFER_HOLD_SEND_RELEASE’ was not declared in this scope
    k3ng_keyer:4802: error: ‘SERIAL_SEND_BUFFER_MEMORY_NUMBER’ was not declared in this scope
    k3ng_keyer:4814: error: ‘number_of_memories’ was not declared in this scope
    k3ng_keyer:4823: error: ‘SERIAL_SEND_BUFFER_WPM_CHANGE’ was not declared in this scope
    k3ng_keyer:4838: error: ‘SERIAL_SEND_BUFFER_NULL’ was not declared in this scope
    k3ng_keyer:4842: error: ‘SERIAL_SEND_BUFFER_PROSIGN’ was not declared in this scope
    k3ng_keyer:4845: error: ‘OMIT_LETTERSPACE’ was not declared in this scope
    k3ng_keyer:4849: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:4854: error: ‘SERIAL_SEND_BUFFER_TIMED_KEY_DOWN’ was not declared in this scope
    k3ng_keyer:4857: error: ‘SERIAL_SEND_BUFFER_TIMED_COMMAND’ was not declared in this scope
    k3ng_keyer:4858: error: ‘AUTOMATIC_SENDING’ was not declared in this scope
    k3ng_keyer:4865: error: ‘SERIAL_SEND_BUFFER_TIMED_WAIT’ was not declared in this scope
    k3ng_keyer:4868: error: ‘SERIAL_SEND_BUFFER_TIMED_COMMAND’ was not declared in this scope
    k3ng_keyer:4875: error: ‘SERIAL_SEND_BUFFER_PTT_ON’ was not declared in this scope
    k3ng_keyer:4881: error: ‘SERIAL_SEND_BUFFER_PTT_OFF’ was not declared in this scope
    k3ng_keyer:4906: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:4913: error: ‘SERIAL_SEND_BUFFER_TIMED_COMMAND’ was not declared in this scope
    k3ng_keyer:4915: error: ‘SERIAL_SEND_BUFFER_TIMED_KEY_DOWN’ was not declared in this scope
    k3ng_keyer:4916: error: ‘AUTOMATIC_SENDING’ was not declared in this scope
    k3ng_keyer:4921: error: ‘SERIAL_SEND_BUFFER_TIMED_WAIT’ was not declared in this scope
    k3ng_keyer:4928: error: ‘SERIAL_SEND_BUFFER_HOLD’ was not declared in this scope
    k3ng_keyer:4933: error: ‘send_buffer_array’ was not declared in this scope
    k3ng_keyer:4933: error: ‘SERIAL_SEND_BUFFER_HOLD_SEND_RELEASE’ was not declared in this scope
    k3ng_keyer:4947: error: ‘SERIAL_SEND_BUFFER_NORMAL’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void remove_from_send_buffer()’:
    k3ng_keyer:4988: error: ‘send_buffer_array’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void add_to_send_buffer(byte)’:
    k3ng_keyer:5000: error: ‘send_buffer_size’ was not declared in this scope
    k3ng_keyer:5003: error: ‘send_buffer_array’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void initialize_pins()’:
    k3ng_keyer:8595: error: ‘paddle_left’ was not declared in this scope
    k3ng_keyer:8597: error: ‘paddle_right’ was not declared in this scope
    k3ng_keyer:8601: error: ‘tx_key_line_1’ was not declared in this scope
    k3ng_keyer:8605: error: ‘tx_key_line_2’ was not declared in this scope
    k3ng_keyer:8609: error: ‘tx_key_line_3’ was not declared in this scope
    k3ng_keyer:8613: error: ‘tx_key_line_4’ was not declared in this scope
    k3ng_keyer:8617: error: ‘tx_key_line_5’ was not declared in this scope
    k3ng_keyer:8621: error: ‘tx_key_line_6’ was not declared in this scope
    k3ng_keyer:8627: error: ‘ptt_tx_1’ was not declared in this scope
    k3ng_keyer:8631: error: ‘ptt_tx_2’ was not declared in this scope
    k3ng_keyer:8635: error: ‘ptt_tx_3’ was not declared in this scope
    k3ng_keyer:8639: error: ‘ptt_tx_4’ was not declared in this scope
    k3ng_keyer:8643: error: ‘ptt_tx_5’ was not declared in this scope
    k3ng_keyer:8647: error: ‘ptt_tx_6’ was not declared in this scope
    k3ng_keyer:8651: error: ‘sidetone_line’ was not declared in this scope
    k3ng_keyer:8654: error: ‘tx_key_dit’ was not declared in this scope
    k3ng_keyer:8658: error: ‘tx_key_dah’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void initialize_keyer_state()’:
    k3ng_keyer:8965: error: ‘initial_speed_wpm’ was not declared in this scope
    k3ng_keyer:8967: error: ‘initial_pot_wpm_low_value’ was not declared in this scope
    k3ng_keyer:8969: error: ‘initial_sidetone_freq’ was not declared in this scope
    k3ng_keyer:8970: error: ‘default_memory_repeat_time’ was not declared in this scope
    k3ng_keyer:8971: error: ‘default_cmos_super_keyer_iambic_b_timing_percent’ was not declared in this scope
    k3ng_keyer:8973: error: ‘initial_dah_to_dit_ratio’ was not declared in this scope
    k3ng_keyer:8975: error: ‘default_length_wordspace’ was not declared in this scope
    k3ng_keyer:8976: error: ‘default_weighting’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void initialize_default_modes()’:
    k3ng_keyer:9018: error: ‘NORMAL’ was not declared in this scope
    k3ng_keyer:9019: error: ‘PADDLE_NORMAL’ was not declared in this scope
    k3ng_keyer:9020: error: ‘IAMBIC_B’ was not declared in this scope
    k3ng_keyer:9021: error: ‘SIDETONE_ON’ was not declared in this scope
    k3ng_keyer:9022: error: ‘CW’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void check_eeprom_for_initialization()’:
    k3ng_keyer:9043: error: ‘paddle_left’ was not declared in this scope
    k3ng_keyer:9043: error: ‘paddle_right’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void check_for_beacon_mode()’:
    k3ng_keyer:9065: error: ‘paddle_left’ was not declared in this scope
    k3ng_keyer:9070: error: ‘paddle_right’ was not declared in this scope
    k3ng_keyer:9071: error: ‘STRAIGHT’ was not declared in this scope
    k3ng_keyer.ino: In function ‘void initialize_display()’:
    k3ng_keyer:9220: error: ‘BEACON’ was not declared in this scope
    java.util.zip.ZipException: error in opening zip file

    at java.util.zip.ZipFile.open(Native Method)

    at java.util.zip.ZipFile.(ZipFile.java:114)

    at java.util.zip.ZipFile.(ZipFile.java:131)

    at processing.app.tools.ZipDeflater.(ZipDeflater.java:25)

    at processing.app.Base.handleAddLibrary(Base.java:2870)

    at processing.app.Base$4.actionPerformed(Base.java:1109)

    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)

    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

    at javax.swing.AbstractButton.doClick(AbstractButton.java:357)

    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)

    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)

    at java.awt.Component.processMouseEvent(Component.java:6263)

    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

    at java.awt.Component.processEvent(Component.java:6028)

    at java.awt.Container.processEvent(Container.java:2041)

    at java.awt.Component.dispatchEventImpl(Component.java:4630)

    at java.awt.Container.dispatchEventImpl(Container.java:2099)

    at java.awt.Component.dispatchEvent(Component.java:4460)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)

    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

    at java.awt.Container.dispatchEventImpl(Container.java:2085)

    at java.awt.Component.dispatchEvent(Component.java:4460)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

    This report would have more information with
    “Show verbose output during compilation”
    enabled in File > Preferences.

    1. It looks like you are missing several of the .h files. Look in the error log text for those files you are missing.

  8. HI Anthony.

    Nice website you have with the Arduino ideas.
    Since january working but still improving with
    software I am running a homebrew beacon
    on 4m with ‘the next generation beacon’
    as know as PI4-mode. Idea of the group
    from OZ2M. Have it run with an Arduino
    2560, DDS9850 and the OZ2M’s 4m
    transverter+PA. The software I’m writing
    is very straight with almost each line a
    comment or explanation. For better
    reproducability for HAM’s with very less
    knowledge about Arduino. If you are
    interested contact me. Keeping software
    open source will improve experimenting.

    73 de Roelf, pe1mxp

  9. Hi
    congratulations for your work
    I am amateur radio chile
    and I need help
    I have a mega260 Arduino, LCD Keypad Shield for Arduino relay shield DFRobot and catalex
    Please send code for Arduino
    thanks
    Joel

  10. WRT you arduino antenna tuner article, you mention that “lethal voltages” are present within the tuner. At RF frequencies, one is no electrocuted. I have seen films of people standing barefoot on tesla coils with thimbles on their fingers with 10 foot arcs coming off of the thimbles. Electricity flows over a conductor, not through it. This is known as the “skin effect”. However, if an arc is produced to skin, it will cause an RF burn into the flesh rather deeply. This results in a burn that never “heals”. I know this to be true because in 1971, I was using an poorly grounded antenna tuner in a second floor apartment. The ground wire was 1/4 wavelength long. An arc jumped from the setscrew in the tuner knob, causing an RF burn. About twice a week, I have to snip off the callous that grows out of the skin or it gets quite annoying. So, while contact with high voltage is not a shock hazard, it is a burn hazard and is just plain annoying for what seems to be a lifetime.

  11. I am working hard to familiarize myself with your winkey emulation. When I get smart enough I might be able to even ask a question.

  12. Hello. Not work K3NG(easycom)>ethernet>pstrotator :( K3NG(yaesu emul)>ethernet>pstrotator work. Help me pls (

  13. Is there a command to give longer inter character delay (for practice purposes). I’m sending at 30WPM, but need time to decode what I hear. Right now, I modified this line of code.

    byte length_letterspace = default_length_letterspace*4; //jh testing

    Someone have a better way?

  14. I just came upon your Arduino keyer and threw together a keyboard keyer using your code and my junk box of parts. I’m impressed! I’ve used CW since being a novice in ’68, and this has brought back the excitement of CW for me. Just wanted to say “thanks” ! Works great.

  15. Hi Anthony,
    I would like to comment a project boiling in my mind (and running on my PC) about Rotator Controller.

    I’ll appreciate you to contact me for providing you more details and sharing some thoughts.

    Thanks,
    Rafa.
    EA3BIL.

  16. hello,K3NG.My callsign BG3FB.I saw the code for your project, but unfortunately, I am a beginner. I want to copy it and use the ADXL335 for angle sensing. Please advise. Thank you.

  17. Hi! I saw your remarks about the activity level of licensed hams and wanted to chat with you.

  18. I read your piece titled My Last Post on the ARRL and found that I agree. I’m a licensed ham but not a member, although have struggled with the idea and admit I’d certainly enjoy the magazine subscription too. I look forward to reading more of your material and hope for your continued submission of such. Best Luck in the new year!
    Thank You. Chris O’Donnell KD2OBV.

  19. i just want to thank you for your Keyer and the fact that you shared it for free with the entire planet! Thank you very much! i searched around and it must be the world best Keyer DIY project.

Leave a comment