int BUTTON = PB4; int LED = PB3; //letters A-Z in Morse code char *letters[] = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." }; char *string = "SOS"; char ch_dot = '.'; char ch_dash = '-'; int dot_duration = 200; boolean start = false; int curr = 0; void blink_dot_dash(char code){ digitalWrite(LED,HIGH); //turn on LED if(code == ch_dot) delay(dot_duration); else delay(dot_duration*3); digitalWrite(LED,LOW); //turn off LED delay(dot_duration); //space between dot/dash } void blink_letter(char ch){ char *code_letter = letters[ch - 'A']; unsigned int i = 0; while(code_letter[i] != NULL){ blink_dot_dash(code_letter[i]); i++; } delay(dot_duration * 3);//space between letters } void setup() { pinMode(BUTTON, INPUT_PULLUP); //init button as input pinMode(LED, OUTPUT); //init LED as output } void loop() { // when button pushed, invert start. if (!digitalRead(BUTTON)){ start = !start; } if(start){ for(curr = 0; string[curr] != NULL; ++curr){ blink_letter(string[curr]); } delay(dot_duration*7);//space between words start = false; } }