#include <LiquidCrystal_I2C.h>
#include <Wire.h>
// Pin definitions
int led = 8;
int button = 3;
int transmit = 10;
// Variables
int go = 0;
int len = 0;
String fin = "";
String morse_array[50];
int test = 0;
int m_inc = 0;
char m_in[5];
String translated = "";
String morsecode[] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.",
"--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-",
"-.--", "--..", " "
};
String alpha[] = {
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p",
"q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " "
};
// Initialize the LCD library with the I2C address 0x3F and dimensions 16x2
LiquidCrystal_I2C lcd(0x3F, 16, 2);
void setup() {
pinMode(led, OUTPUT);
pinMode(button, INPUT);
pinMode(transmit, INPUT);
lcd.begin(16, 2);
lcd.backlight(); // Turn on the backlight
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
String ad = Serial.readString(); // Read the incoming string
char charBuf[50];
ad.toCharArray(charBuf, 50);
len = ad.length();
convert_to_morse(charBuf);
Serial.println(morse_array[0]);
output_morse(morse_array);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(fin);
if (digitalRead(transmit) == LOW) {
delay(300);
if (digitalRead(transmit) == HIGH) {
convert();
} else {
while (digitalRead(transmit) == LOW) {
check_button();
}
}
}
}
void check_button() {
if (digitalRead(button) == LOW) {
delay(300);
if (digitalRead(button) == HIGH) {
m_in[m_inc] = '.';
m_inc++;
test = 1;
} else {
m_in[m_inc] = '-';
m_inc++;
test = 2;
delay(400);
}
}
}
void convert() {
for (int i = 0; i < 5; i++) {
translated += m_in[i];
}
translated.trim();
Serial.print(translated);
for (int i = 0; i < 27; i++) {
if (translated == morsecode[i]) {
fin += alpha[i];
}
}
translated = "";
m_inc = 0;
}
void convert_to_morse(char *charBuf) {
for (int i = 0; i < len; i++) {
for (int j = 0; j < 27; j++) {
if (charBuf[i] == alpha[j][0]) {
morse_array[i] = morsecode[j];
}
}
}
}
void output_morse(String morse_array[]) {
fin = "";
for (int i = 0; i < len; i++) {
fin += morse_array[i];
fin += " ";
}
Serial.println(fin);
}
code im using