46 lines
942 B
C++
46 lines
942 B
C++
// SOS in Morse code on the Arduino UNO R4 Minima built-in LED.
|
|
// S = ... O = --- S = ...
|
|
|
|
constexpr unsigned long UNIT_MS = 200;
|
|
|
|
void blinkSymbol(unsigned long onUnits) {
|
|
digitalWrite(LED_BUILTIN, HIGH);
|
|
delay(onUnits * UNIT_MS);
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
|
|
// Every Morse symbol is followed by a one-unit gap.
|
|
delay(UNIT_MS);
|
|
}
|
|
|
|
void blinkLetter(const char *pattern) {
|
|
for (const char *symbol = pattern; *symbol != '\0'; ++symbol) {
|
|
blinkSymbol(*symbol == '.' ? 1 : 3);
|
|
}
|
|
}
|
|
|
|
void letterGap() {
|
|
// blinkSymbol() already supplied the first of the three gap units.
|
|
delay(2 * UNIT_MS);
|
|
}
|
|
|
|
void wordGap() {
|
|
// blinkSymbol() already supplied the first of the seven gap units.
|
|
delay(6 * UNIT_MS);
|
|
}
|
|
|
|
void setup() {
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
digitalWrite(LED_BUILTIN, LOW);
|
|
}
|
|
|
|
void loop() {
|
|
blinkLetter("...");
|
|
letterGap();
|
|
|
|
blinkLetter("---");
|
|
letterGap();
|
|
|
|
blinkLetter("...");
|
|
wordGap();
|
|
}
|
|
|