make morse tone freq user settable

This commit is contained in:
morgan 2016-12-19 11:40:44 -08:00
parent 4ff3f7d9d0
commit 5874e6b8e5
3 changed files with 20 additions and 2 deletions

View File

@ -53,6 +53,8 @@ void setup() {
radio.initialize(); radio.initialize();
radio.setRfPower(0); radio.setRfPower(0);
radio.setMorseFreq(400);
// Configure the HamShield to transmit and recieve on 446.000MHz // Configure the HamShield to transmit and recieve on 446.000MHz
radio.frequency(438000); radio.frequency(438000);

View File

@ -24,6 +24,9 @@ const uint32_t MURS[] PROGMEM = {0,151820,151880,151940,154570,154600};
const uint32_t WX[] PROGMEM = {0,162550,162400,162475,162425,162450,162500,162525}; const uint32_t WX[] PROGMEM = {0,162550,162400,162475,162425,162450,162500,162525};
unsigned int morse_freq = 600;
/* morse code lookup table */ /* morse code lookup table */
// This is the Morse table in reverse binary format. // This is the Morse table in reverse binary format.
// It will occupy 108 bytes of memory (or program memory if defined) // It will occupy 108 bytes of memory (or program memory if defined)
@ -1283,6 +1286,17 @@ bool HamShield::waitForChannel(long timeout = 0, long breakwindow = 0, int setRS
return false; return false;
} }
// Get current morse code tone frequency (in Hz)
unsigned int HamShield::getMorseFreq() {
return morse_freq;
}
// Set current morse code tone frequency (in Hz)
void HamShield::setMorseFreq(unsigned int morse_freq_hz) {
morse_freq = morse_freq_hz;
}
/* Morse code out, blocking */ /* Morse code out, blocking */
@ -1308,10 +1322,10 @@ void HamShield::morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]) {
if(bits) { // If it is a valid character... if(bits) { // If it is a valid character...
do { do {
if(bits & 1) { if(bits & 1) {
tone(HAMSHIELD_PWM_PIN, 600, HAMSHIELD_MORSE_DOT * 3); tone(HAMSHIELD_PWM_PIN, morse_freq, HAMSHIELD_MORSE_DOT * 3);
delay(HAMSHIELD_MORSE_DOT*3); delay(HAMSHIELD_MORSE_DOT*3);
} else { } else {
tone(HAMSHIELD_PWM_PIN, 600, HAMSHIELD_MORSE_DOT); tone(HAMSHIELD_PWM_PIN, morse_freq, HAMSHIELD_MORSE_DOT);
delay(HAMSHIELD_MORSE_DOT); delay(HAMSHIELD_MORSE_DOT);
} }
tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT); tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT);

View File

@ -481,6 +481,8 @@ class HamShield {
void buttonMode(uint8_t mode); void buttonMode(uint8_t mode);
static void isr_ptt(); static void isr_ptt();
static void isr_reset(); static void isr_reset();
unsigned int getMorseFreq();
void setMorseFreq(unsigned int morse_freq_hz);
void morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]); void morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]);
uint8_t morseLookup(char letter); uint8_t morseLookup(char letter);
bool waitForChannel(long timeout, long breakwindow, int setRSSI); bool waitForChannel(long timeout, long breakwindow, int setRSSI);