1.77 KB
Newer Older
Athokshay Ashok's avatar
Athokshay Ashok committed
# Microprocessor-Morse-Code-Translator
Morse code represents every character in the English language using three symbols: dot, dash, and space. Morse code symbols are sent at specific time intervals based on the symbol. A dot is one time unit, a dash is three time units, a space between letters is three time units, and a space between words is seven time units. However, for someone unfamiliar with Morse code, this can be a very complicated way of translating especially when they must constantly refer to the conversion table (shown in Appendix A). Moreover, a typical hardware converter (as seen in Figure 1) uses one button-like mechanism that is used for both dots and dashes; a small tap is a dot and a longer press is a dash. Since it can be easy to lose track of time units and make mistakes, we decided to implement a simplified version of a Morse Code translator that is beginner-friendly.

Rather than using time as a metric, we looked at the conversion table and decided to standardize every character to be 5 symbols long, regardless of the symbols. For example, looking at Appendix A, A in morse code would be dot-dash-space-space-space. Since we are no longer using time to determine which symbol we are sending, we need separate inputs to send a dot, dash, and space. We also noticed that mistakes can easily be made. One wrong symbol can completely change the character, and so we decided to include an erase function that deletes the last sent symbol. In addition, the STM32L4 LCD display can only display 6 characters at a time, and for strings longer than that, we decided to implement a scrolling string function that can be called to view the entire string so far. Otherwise, if the translation is still in process, the LCD will display the six most recently translated characters by default.