Projetos

Código Morse com Arduino

Eletrogate 6 de abril de 2023

Introdução

No post de hoje, nós iremos aprender sobre o Código Morse e como ele funciona! O código Morse foi criado em 1835  pelo pintor, físico e inventor, Samuel Finley Breese Morse. Por volta do Século XIX o código era muito usado por marinheiros. Inclusive, o primeiro resgate marítimo registrado usando código Morse foi em 1889, no estreito de Dover.

Fonte: pt.wikipedia.org/wiki/Estreito_de_Dover


O que é?

O código Morse é um sistema binário de números, letras e sinais gráficos. Como o nome já diz, um sistema binário funciona com dois tipos de “informações”. O código binário, por exemplo, utiliza apenas o 0 e o 1, já o código Morse utiliza pontos e traços.

Fonte: escoteirodesbravador.blogspot.com

Fonte: cursoenemgratuito.com.br


Como o Código Morse Funciona?

A transmissão do código Morse pode ser feita várias maneiras. Ele pode ser transmitido por pulsos elétricos, intervalos de sons ou até intervalos de luz (piscadas de luz). A primeira invenção a realmente usar o código Morse de forma efetiva para longas distâncias foi o telégrafo. Os operadores tinham que saber interpretar os cliques, para transferi-los em pontos e traços. Pouco tempo depois, foi notado que os operadores teriam mais facilidade em pegar os sinais se eles fossem escutados. Daí, o código Morse passou a ser mais usado por sons, (bips curtos para pontos e bips longos para traços).

E uma curiosidade: o teclado como nós conhecemos hoje em dia, na sua formatação mais conhecida “QWERTY”, surgiu por causa dos operadores de telégrafo, que tinham que passar o código recebido para texto. Porém, eles tinham que digitar muito rápido o que captavam e, com isso, surgiu o teclado QWERTY, em que as letras mais comuns do inglês ficam mais próximas. Hoje em dia, existem mais formatações de teclado, como, por exemplo: Dvorak, KALQ, MALTRON, JCUKEN, etc.

Teclado QWERTY

Teclado DVORAK
Fonte: Wikipedia

Teclado kalq
Fonte: Tecmundo

Aqui, o mais diferente da lista:

Teclado MALTRON


Prática

Vamos aprender na prática como o Código Morse funciona com o Arduino!


Montagem


Código

O código será o seguinte:

//Converte os caracteres em dados char
char charecters[] = {'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', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', '"', '$', '&', '(', ')', '_', '+', '=', '-', ':', ';', '@', '\'', ',', '.', '/', '?', ' '};
char* morse[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----.", "-·-·--", "·-··-·", "···-··-", "·-···", "-·--·", "-·--·-", "··--·-", "·-·-·", "-···-", "-····-", "---···", "-·-·-·", "·--·-·", "·----·", "--··--", "·-·-·-", "-··-·", "··--··", " "};
int len = 55;

//instancia em que pino o buzzer vai ficar
int buzzerpin = 12 ;

int dotLen = 150;	// Você pode ajustar a velocidade dos bips aqui
int dashLen = dotLen * 3;
int elemGap = dotLen;
int charGap = dotLen * 2;
int Space = dotLen * 6;

char charDelimiter = '@'; // Usa isso para separar os caracteres

String inputString = "";
boolean stringComplete = false;

void setup() {
  Serial.begin(9600);
  pinMode(buzzerpin, OUTPUT);
  inputString.reserve(200);
}

void loop() {
  serialEvent();
  if (stringComplete) {
    Serial.println(inputString); //imprime no monitor seria a mensagem que você escreveu
    String code = toMorse(inputString); 
    Display(code);
    inputString = "";
    stringComplete = false;
  }
}

String toMorse(String inputString) {
  inputString.toLowerCase();
  int inputString_len = inputString.length() + 1;
  char char_array[inputString_len];
  inputString.toCharArray(char_array, inputString_len);
  String finalcode = "";
  for (int i = 0; i < inputString_len; i++) {
    for (int n = 0; n < len; n++) {
      if (char_array[i] == charecters[n] )
      {
        finalcode += morse[n];
        finalcode += charDelimiter; 
      }
    }
  }
  return finalcode;
}

String toString(String code) {
  
  return "";
}

void Display(String code) {
  int code_len = code.length() + 1;
  char code_array[code_len];
  code.toCharArray(code_array, code_len);
  for (int i = 0; i < code_len; i++) {
    if (code_array[i] == '.')
    {
     
      digitalWrite(buzzerpin, HIGH);
      delay(dotLen);
      
      digitalWrite(buzzerpin , LOW);
      delay(elemGap);
      Serial.print(code_array[i]);
    }
    else if (code_array[i] == '-')
    {
     
      digitalWrite(buzzerpin , HIGH);
      delay(dashLen);
      
      digitalWrite(buzzerpin, LOW);
      delay(elemGap);
      Serial.print(code_array[i]);
    }
    else if (code_array[i] == ' ')
    {
      delay(Space);
      Serial.print("   ");
    }
    else if (code_array[i] == charDelimiter)
    {
      delay(charGap);
      Serial.print(" ");
    }
  }
  Serial.println();
  Serial.println("Pronto");
}
void serialEvent() {
  while (Serial.available()) {
    char inChar = (char)Serial.read();
    inputString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
}

Esse código foi adaptado do Instructables.
Link: https://www.instructables.com/Arduino-Text-to-Morse-code/


Funcionamento

Como podemos ver no monitor serial , o código pegou a palavra e traduziu para o morse e ativou o buzzer de acordo se era um ponto ou um traço.


Sobre o Autor


Arthur Almeida

Estudante do Ensino médio , aficionado por criar novos projetos eletrônicos e automações, principalmente com o Arduino. No meu tempo livre eu gosto de pesquisar sobre novas tecnologias e tento criar projetos com elas.


Eletrogate

6 de abril de 2023

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Assine nossa newsletter e
receba  10% OFF  na sua
primeira compra!