Alter morseOut to use a for loop and clearer dit/dah timing in the tone.
Back up to 1000Hz tones.
This commit is contained in:
		
							parent
							
								
									1c7dbfc4b6
								
							
						
					
					
						commit
						fc09429133
					
				| 
						 | 
				
			
			@ -1268,12 +1268,13 @@ bool HamShield::waitForChannel(long timeout = 0, long breakwindow = 0, int setRS
 | 
			
		|||
/* Morse code out, blocking */
 | 
			
		||||
 | 
			
		||||
void HamShield::morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]) { 
 | 
			
		||||
  int i = 0;
 | 
			
		||||
  int i;
 | 
			
		||||
  char prev = 0;
 | 
			
		||||
  while(buffer[i] != '\0' && i < HAMSHIELD_MORSE_BUFFER_SIZE) {
 | 
			
		||||
  for(i = 0; buffer[i] != '\0' && i < HAMSHIELD_MORSE_BUFFER_SIZE; prev = buffer[i], i++) {
 | 
			
		||||
    // On a space, delay 7 dots
 | 
			
		||||
    if(buffer[i] == ' ') {
 | 
			
		||||
      // 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 == ' ')
 | 
			
		||||
        delay(HAMSHIELD_MORSE_DOT*7);
 | 
			
		||||
      else
 | 
			
		||||
| 
						 | 
				
			
			@ -1284,15 +1285,16 @@ void HamShield::morseOut(char buffer[HAMSHIELD_MORSE_BUFFER_SIZE]) {
 | 
			
		|||
    uint8_t bits = morseLookup(buffer[i]);
 | 
			
		||||
    if(bits) { // If it is a valid character...
 | 
			
		||||
      do {
 | 
			
		||||
        tone(HAMSHIELD_PWM_PIN, 600, HAMSHIELD_MORSE_DOT * (bits & 1 ? 3 : 1));
 | 
			
		||||
        if(bits & 1)
 | 
			
		||||
          tone(HAMSHIELD_PWM_PIN, 1000, HAMSHIELD_MORSE_DOT * 3);
 | 
			
		||||
        else
 | 
			
		||||
          tone(HAMSHIELD_PWM_PIN, 1000, HAMSHIELD_MORSE_DOT);
 | 
			
		||||
        delay(HAMSHIELD_MORSE_DOT);
 | 
			
		||||
        bits >>= 1; // Shift into the next symbol
 | 
			
		||||
      } while(bits != 1); // Wait for 1 termination to be all we have left
 | 
			
		||||
    }
 | 
			
		||||
    // End of character
 | 
			
		||||
    delay(HAMSHIELD_MORSE_DOT * 3);
 | 
			
		||||
    prev = buffer[i];
 | 
			
		||||
    i++;
 | 
			
		||||
  }
 | 
			
		||||
  return;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue