dit();
else
dah();
if (i != code_length - 1)
delay(_dit_length);
}
}
void Telegraph::dit() {
Serial.print(".");
output_symbol(_dit_length);
}
void Telegraph::dah() {
Serial.print("-");
output_symbol(_dah_length);
}
void Telegraph::output_symbol(const int length) {
digitalWrite(_output_pin, HIGH);
delay(length);
digitalWrite(_output_pin, LOW);
}
The function
output_code
takes a Morse code sequence consisting of dots and
dashes and turns it into calls to
dit
and
dah
. The
dit
and
dah
methods then print
a dot or a dash to the serial port and delegate the rest of the work to
output_sym-
bol
, passing it the length of the Morse code symbol to be emitted.
output_symbol
sets the output pin to
HIGH
for the length of the symbol, and then it sets it
back to
LOW
. Everything works exactly as described in the Morse code timing
scheme, and only the implementation of
send_message
is missing:
TelegraphLibrary/telegraph.cpp
void Telegraph::send_message(const char* message) {
Line 1
for (unsigned int i = 0; i < strlen(message); i++) {
-
const char current_char = toupper(message[i]);
-
if (isalpha(current_char)) {
-
output_code(LETTERS[current_char - 'A']);
5
delay(_dah_length);
-
} else if (isdigit(current_char)) {
-
output_code(DIGITS[current_char - '0']);
-
delay(_dah_length);
-
} else if (current_char == ' ') {
10
Serial.print(" ");
-
delay(_dit_length * 7);
-
}
-
}
-
Serial.println();
15
}
-
Chapter 4. Building a Morse Code Generator Library • 66
report erratum • discuss
www.it-ebooks.info