From e6b80b69a385aebfd1bc399c512acfb2445e2a0c Mon Sep 17 00:00:00 2001 From: Jason Milldrum Date: Mon, 14 May 2018 15:07:24 -0700 Subject: [PATCH 1/2] Add support for a preamble --- README.md | 7 +++++++ keywords.txt | 1 + library.properties | 2 +- src/Morse.cpp | 13 ++++++++++--- src/Morse.h | 1 + src/Morse.h.gch | Bin 0 -> 9487 bytes 6 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 src/Morse.h.gch diff --git a/README.md b/README.md index 684a2bd..92f22a4 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,8 @@ The sending speed can be changed on-the-fly by using the _setWPM()_ method. The If you don't want to have the library directly control a digital I/O pin, you may have your sketch poll the boolean _tx_ member variable and act on it accordingly within their periodic 1 ms function. Set the output pin parameter in the constructor to 0. +When you are using this library for the DFCW mode (continuous wave Morse Code with frequency modulation), you can specify a preamble period to happen with the carrier on before the message begins. Set member variable _preamble_enable_ to true to enable this for a transmission. Keep in mind that this member variable acts like a one-shot, so you will need to set it every time you intend to use it. + Startup Conditions and Constraints ---------------------------------- The default output pin is defined as LED_BUILTIN while the default sending speed is 25 words per minute. @@ -113,6 +115,7 @@ Public Variables bool tx_enable; uint8_t output_pin; bool busy; + bool preamble_enable; Valid Characters ---------------- @@ -128,6 +131,10 @@ The standard uppercase and lowercase letters 'A' through 'Z' and digits '0' thro Changelog --------- +* v1.0.1 + + * Add support for preamble. + * v1.0.0 * Initial release diff --git a/keywords.txt b/keywords.txt index 856ff70..362760e 100644 --- a/keywords.txt +++ b/keywords.txt @@ -9,3 +9,4 @@ tx KEYWORD2 tx_enable KEYWORD2 output_pin KEYWORD2 busy KEYWORD2 +preamble_enable KEYWORD2 diff --git a/library.properties b/library.properties index 1241d2a..40b1c12 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=Etherkit Morse -version=1.0.0 +version=1.0.1 author=Jason Milldrum maintainer=Jason Milldrum sentence=Generate Morse Code for transmission on an digital I/O pin. diff --git a/src/Morse.cpp b/src/Morse.cpp index 27ab094..4736da9 100644 --- a/src/Morse.cpp +++ b/src/Morse.cpp @@ -103,6 +103,12 @@ void Morse::update() #ifdef DEBUG Serial.println("Start of message"); #endif + if(preamble_enable) + { + cur_state = State::PREAMBLE; + cur_state_end = cur_state_end = cur_timer + (dit_length * MULT_WORDDELAY); + return; + } } // Get the current element in the current character @@ -225,16 +231,17 @@ void Morse::update() break; case State::PREAMBLE: - // Transmitter on - tx = true; + // Transmitter off + tx = false; if(output_pin) { - digitalWrite(output_pin, HIGH); + digitalWrite(output_pin, LOW); } // When done waiting, go back to IDLE state to start the message if(cur_timer > cur_state_end) { + preamble_enable = false; cur_state = State::IDLE; } break; diff --git a/src/Morse.h b/src/Morse.h index aec69a7..9ef6daa 100644 --- a/src/Morse.h +++ b/src/Morse.h @@ -53,6 +53,7 @@ class Morse bool tx_enable = true; uint8_t output_pin; bool busy = true; + bool preamble_enable = false; private: uint32_t getMsgDelay(uint8_t); diff --git a/src/Morse.h.gch b/src/Morse.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..a38e2c17d383a563dc36e83cf5bcefc99f02e6ff GIT binary patch literal 9487 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 U)bAmJrq!61Ti)JEJwtc@2gtymWB>pF literal 0 HcmV?d00001 From fd389e84fcae99637f348153c1cad55378d71f9f Mon Sep 17 00:00:00 2001 From: Jason Milldrum Date: Mon, 14 May 2018 15:07:59 -0700 Subject: [PATCH 2/2] Add support for a preamble --- src/Morse.h.gch | Bin 9487 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/Morse.h.gch diff --git a/src/Morse.h.gch b/src/Morse.h.gch deleted file mode 100644 index a38e2c17d383a563dc36e83cf5bcefc99f02e6ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9487 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 U)bAmJrq!61Ti)JEJwtc@2gtymWB>pF