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.setRfPower(0);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  radio.setMorseFreq(400);
 | 
					  radio.setMorseFreq(400);
 | 
				
			||||||
 | 
					  radio.setMorseDotMillis(200);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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_freq = 600;
 | 
				
			||||||
 | 
					unsigned int morse_dot_millis = 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* 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.
 | 
				
			||||||
| 
						 | 
					@ -1298,6 +1299,18 @@ void HamShield::setMorseFreq(unsigned int morse_freq_hz) {
 | 
				
			||||||
	morse_freq = 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 */
 | 
					/* Morse code out, blocking */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void HamShield::morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]) { 
 | 
					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.
 | 
					      // We delay by 4 here, if we previously sent a symbol. Otherwise 7.
 | 
				
			||||||
      // This could probably just be always 7 and go relatively unnoticed.
 | 
					      // This could probably just be always 7 and go relatively unnoticed.
 | 
				
			||||||
      if(prev == 0 || prev == ' '){
 | 
					      if(prev == 0 || prev == ' '){
 | 
				
			||||||
        tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT * 7);
 | 
					        tone(HAMSHIELD_PWM_PIN, 6000, morse_dot_millis * 7);
 | 
				
			||||||
        delay(HAMSHIELD_MORSE_DOT*7);
 | 
					        delay(morse_dot_millis*7);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT * 4);
 | 
					        tone(HAMSHIELD_PWM_PIN, 6000, morse_dot_millis * 4);
 | 
				
			||||||
        delay(HAMSHIELD_MORSE_DOT*4);
 | 
					        delay(morse_dot_millis*4);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      continue;
 | 
					      continue;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -1322,20 +1335,20 @@ 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, morse_freq, HAMSHIELD_MORSE_DOT * 3);
 | 
					          tone(HAMSHIELD_PWM_PIN, morse_freq, morse_dot_millis * 3);
 | 
				
			||||||
          delay(HAMSHIELD_MORSE_DOT*3);
 | 
					          delay(morse_dot_millis*3);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          tone(HAMSHIELD_PWM_PIN, morse_freq, HAMSHIELD_MORSE_DOT);
 | 
					          tone(HAMSHIELD_PWM_PIN, morse_freq, morse_dot_millis);
 | 
				
			||||||
          delay(HAMSHIELD_MORSE_DOT);
 | 
					          delay(morse_dot_millis);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT);
 | 
						tone(HAMSHIELD_PWM_PIN, 6000, morse_dot_millis);
 | 
				
			||||||
        delay(HAMSHIELD_MORSE_DOT);
 | 
					        delay(morse_dot_millis);
 | 
				
			||||||
        bits >>= 1; // Shift into the next symbol
 | 
					        bits >>= 1; // Shift into the next symbol
 | 
				
			||||||
      } while(bits != 1); // Wait for 1 termination to be all we have left
 | 
					      } while(bits != 1); // Wait for 1 termination to be all we have left
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // End of character
 | 
					    // End of character
 | 
				
			||||||
    tone(HAMSHIELD_PWM_PIN, 6000, HAMSHIELD_MORSE_DOT * 3);
 | 
					    tone(HAMSHIELD_PWM_PIN, 6000, morse_dot_millis * 3);
 | 
				
			||||||
    delay(HAMSHIELD_MORSE_DOT * 3);
 | 
					    delay(morse_dot_millis * 3);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return;
 | 
					  return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// HamShield constants
 | 
					// 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_MORSE_BUFFER_SIZE      80    // Char buffer size for morse code text
 | 
				
			||||||
#define HAMSHIELD_AUX_BUTTON              2    // Pin assignment for AUX button
 | 
					#define HAMSHIELD_AUX_BUTTON              2    // Pin assignment for AUX button
 | 
				
			||||||
#define HAMSHIELD_PWM_PIN                 3    // Pin assignment for PWM output
 | 
					#define HAMSHIELD_PWM_PIN                 3    // Pin assignment for PWM output
 | 
				
			||||||
| 
						 | 
					@ -483,6 +482,8 @@ class HamShield {
 | 
				
			||||||
        static void isr_reset();
 | 
					        static void isr_reset();
 | 
				
			||||||
		unsigned int getMorseFreq();
 | 
							unsigned int getMorseFreq();
 | 
				
			||||||
		void setMorseFreq(unsigned int morse_freq_hz);
 | 
							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]);
 | 
							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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue