const byte buttonPin = 11;
const byte ledPin = 13;
const byte buzzer = 9;
bool Tester = false;
bool lineTester = false;
bool buttonState = false;
bool lastButtonState = false;
const int pause_value = 400; // depending on your skill and how fast your fingers are you can change this value to make typing a message faster or slower
long signal_length = 0;
long pause = 0;
long lastDebounceTime = 0;
long debounceDelay = 0;
String morse = "";
String dash = "-";
String dot = "*";
String Text = "";
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.println("Welcome to Arduino-Uno morse ");
Serial.println("Press button to start making morse code");
while (digitalRead(buttonPin)==LOW);
}
void loop() {
buttonState = digitalRead(buttonPin)==HIGH;
if (buttonState && lastButtonState) {
++signal_length;
if (signal_length < 2 * pause_value)tone(buzzer, 1500);
else tone(buzzer, 1000);
}
else if (!buttonState && lastButtonState) {
if (signal_length > 0 && signal_length < 2 * pause_value )morse += dot;
else if (signal_length > 2 * pause_value)morse += dash;
signal_length = 0;
digitalWrite(13, LOW);
noTone(buzzer);
}
else if (buttonState && !lastButtonState) {
pause = 0;
digitalWrite(13, HIGH);
Tester = true;
lineTester = true;
}
else if (!buttonState && !lastButtonState) {
++pause;
if (( pause > 3 * pause_value ) && (Tester)) {
Drucker(morse);
Tester = false;
morse = "";
}
if ((pause > 15 * pause_value) && (lineTester)) {
Serial.println();
lineTester = false;
}
}
lastButtonState = buttonState;
delay(1);
}
void Drucker(String Translator) {
if (Translator=="*-")
Serial.print("A");
else if (Translator=="-***")
Serial.print("B");
else if (Translator=="-*-*")
Serial.print("C");
else if (Translator=="-**")
Serial.print("D");
else if (Translator=="*")
Serial.print("E");
else if (Translator=="**-*")
Serial.print("F");
else if (Translator=="--*")
Serial.print("G");
else if (Translator=="****")
Serial.print("H");
else if (Translator=="**")
Serial.print("I");
else if (Translator=="*---")
Serial.print("J");
else if (Translator=="-*-")
Serial.print("K");
else if (Translator=="*-**")
Serial.print("L");
else if (Translator=="--")
Serial.print("M");
else if (Translator=="-*")
Serial.print("N");
else if (Translator=="---")
Serial.print("O");
else if (Translator=="*--*")
Serial.print("P");
else if (Translator=="--*-")
Serial.print("Q");
else if (Translator=="*-*")
Serial.print("R");
else if (Translator=="***")
Serial.print("S");
else if (Translator=="-")
Serial.print("T");
else if (Translator=="**-")
Serial.print("U");
else if (Translator=="***-")
Serial.print("V");
else if (Translator=="*--")
Serial.print("W");
else if (Translator=="-**-")
Serial.print("X");
else if (Translator=="-*--")
Serial.print("Y");
else if (Translator=="--**")
Serial.print("Z");
else if (Translator=="*----")
Serial.print("1");
else if (Translator=="**---")
Serial.print("2");
else if (Translator=="***--")
Serial.print("3");
else if (Translator=="****-")
Serial.print("4");
else if (Translator=="*****")
Serial.print("5");
else if (Translator=="-****")
Serial.print("6");
else if (Translator=="--***")
Serial.print("7");
else if (Translator=="---**")
Serial.print("8");
else if (Translator=="----*")
Serial.print("9");
else if (Translator=="-----")
Serial.print("0");
else if (Translator=="*-*-*-")
Translator="";
}