int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); } const char *msg = "occam lives "; const char *morse[] = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", }; const unsigned long wpm = 12; // PARIS is 50 dits const unsigned long dit = (60L * 1000L) / (wpm * 50); const unsigned long dah = 3 * dit; const unsigned long space = dit; const unsigned long charspace = 2 * dit; // 3, but always with space before const unsigned long wordspace = 4 * dit; // 7, but always with space,wordspace before void loop() { for (const char *p = msg; *p != '\0'; p++) { if (*p == ' ') { delay(wordspace); } else { for (const char *q = morse[*p - 'a']; *q != '\0'; q++) { digitalWrite(ledPin, HIGH); delay(*q == '-' ? dah : dit); digitalWrite(ledPin, LOW); delay(space); } } delay(charspace); } }