make morse dot duration user settable
This commit is contained in:
parent
5874e6b8e5
commit
292a774a79
|
@ -54,6 +54,7 @@ void setup() {
|
|||
radio.setRfPower(0);
|
||||
|
||||
radio.setMorseFreq(400);
|
||||
radio.setMorseDotMillis(200);
|
||||
|
||||
// Configure the HamShield to transmit and recieve on 446.000MHz
|
||||
radio.frequency(438000);
|
||||
|
|
|
@ -26,6 +26,7 @@ const uint32_t WX[] PROGMEM = {0,162550,162400,162475,162425,162450,162500,16252
|
|||
|
||||
|
||||
unsigned int morse_freq = 600;
|
||||
unsigned int morse_dot_millis = 100;
|
||||
|
||||
/* morse code lookup table */
|
||||
// This is the Morse table in reverse binary format.
|
||||
|
@ -1298,6 +1299,18 @@ void HamShield::setMorseFreq(unsigned int morse_freq_hz) {
|
|||
morse_freq = morse_freq_hz;
|
||||
}
|
||||
|
||||
// Get current duration of a morse dot (shorter is more WPM)
|
||||
|
||||
unsigned int HamShield::getMorseDotMillis() {
|
||||
return morse_dot_millis;
|
||||
}
|
||||
|
||||
// Set current duration of a morse dot (shorter is more WPM)
|
||||
|
||||
void HamShield::setMorseDotMillis(unsigned int morse_dot_dur_millis) {
|
||||
morse_dot_millis = morse_dot_dur_millis;
|
||||
}
|
||||
|
||||
/* Morse code out, blocking */
|
||||
|
||||
void HamShield::morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]) {
|
||||
|
@ -1309,11 +1322,11 @@ void HamShield::morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]) {
|
|||
// We delay by 4 here, if we previously sent a symbol. Otherwise 7.
|
||||
// This could probably just be always 7 and go relatively unnoticed.
|
||||
if(prev == 0 || prev == ' '){
|
||||
tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT * 7);
|
||||
delay(HAMSHIELD_MORSE_DOT*7);
|
||||
tone(HAMSHIELD_PWM_PIN, 6000, morse_dot_millis * 7);
|
||||
delay(morse_dot_millis*7);
|
||||
} else {
|
||||
tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT * 4);
|
||||
delay(HAMSHIELD_MORSE_DOT*4);
|
||||
tone(HAMSHIELD_PWM_PIN, 6000, morse_dot_millis * 4);
|
||||
delay(morse_dot_millis*4);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
@ -1322,20 +1335,20 @@ void HamShield::morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]) {
|
|||
if(bits) { // If it is a valid character...
|
||||
do {
|
||||
if(bits & 1) {
|
||||
tone(HAMSHIELD_PWM_PIN, morse_freq, HAMSHIELD_MORSE_DOT * 3);
|
||||
delay(HAMSHIELD_MORSE_DOT*3);
|
||||
tone(HAMSHIELD_PWM_PIN, morse_freq, morse_dot_millis * 3);
|
||||
delay(morse_dot_millis*3);
|
||||
} else {
|
||||
tone(HAMSHIELD_PWM_PIN, morse_freq, HAMSHIELD_MORSE_DOT);
|
||||
delay(HAMSHIELD_MORSE_DOT);
|
||||
tone(HAMSHIELD_PWM_PIN, morse_freq, morse_dot_millis);
|
||||
delay(morse_dot_millis);
|
||||
}
|
||||
tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT);
|
||||
delay(HAMSHIELD_MORSE_DOT);
|
||||
tone(HAMSHIELD_PWM_PIN, 6000, morse_dot_millis);
|
||||
delay(morse_dot_millis);
|
||||
bits >>= 1; // Shift into the next symbol
|
||||
} while(bits != 1); // Wait for 1 termination to be all we have left
|
||||
}
|
||||
// End of character
|
||||
tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT * 3);
|
||||
delay(HAMSHIELD_MORSE_DOT * 3);
|
||||
tone(HAMSHIELD_PWM_PIN, 6000, morse_dot_millis * 3);
|
||||
delay(morse_dot_millis * 3);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
// HamShield constants
|
||||
|
||||
#define HAMSHIELD_MORSE_DOT 100 // Morse code dot length (smaller is faster WPM)
|
||||
#define HAMSHIELD_MORSE_BUFFER_SIZE 80 // Char buffer size for morse code text
|
||||
#define HAMSHIELD_AUX_BUTTON 2 // Pin assignment for AUX button
|
||||
#define HAMSHIELD_PWM_PIN 3 // Pin assignment for PWM output
|
||||
|
@ -483,6 +482,8 @@ class HamShield {
|
|||
static void isr_reset();
|
||||
unsigned int getMorseFreq();
|
||||
void setMorseFreq(unsigned int morse_freq_hz);
|
||||
unsigned int getMorseDotMillis();
|
||||
void setMorseDotMillis(unsigned int morse_dot_dur_millis);
|
||||
void morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]);
|
||||
uint8_t morseLookup(char letter);
|
||||
bool waitForChannel(long timeout, long breakwindow, int setRSSI);
|
||||
|
|
Loading…
Reference in New Issue