Parte 5 - Segundo projeto (Código Morse com LED e Buzzer)

Código Morse S.O.S

Parte 1 - Componentes

Para começar, devemos saber o que iremos utilizar no projeto:


1 Protoboard de, no mínimo, 400 pontos (se quiser usar uma de 830, sem problemas).


1 LED vermelho de 5 milímitros

1 resistor de 1 Ω


Obs: Se precisar usar outros valores, calcule o resistor apropriado para o LED utilizado.
Um exemplo de site para isso é esse aqui.


Cabos de Ligação (Fios Jumper) da cor de sua preferência.





E, se quiser deixar mais completo futuramente, 1 Buzzer


Parte 2 - Montagem

Conecte os componentes na Protoboard como mostra a imagem abaixo. Verifique cuidadosamente os Cabos de Ligação antes de ligar/ativar seu Arduino. Lembre-se de que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.


Atenção:

Lembre-se de que o LED tem polaridade: o terminal maior tem polaridade positiva e o lado do chanfro tem polaridade negativa:



Parte 3 - O Código

Em todos os projetos que você for fazer com Arduino, você precisará criar (se souber programar em C/C++) ou pegar da internet um código. Digite-o manualmente ou, se você estiver acessando a página pelo computador, selecione o código abaixo e copie e cole no ambiente de desenvolvimento do Arduino. Faça a verificação e o upload.

/*|---------------------------------------------------------------------------|
  |                                                                           |
  |            Segundo projeto (Código Morse com LED e Buzzer)                |
  |               https://utilizacaodearduino.blogspot.com                    |
  |                                                                           |
  |---------------------------------------------------------------------------|*/

int led = 11;                   //Pino em que a perna positiva do LED está posicionada

void setup() {
  pinMode(led, OUTPUT);         //Configura o pino do LED como 'saída'
}

void loop() {

 // ... (S) - Três pontos
 for(int x=0;x<3;x++)           //Repete tudo dentro das chaves três vezes
  {
    digitalWrite(led,HIGH);     //Acende o LED
    delay(200);                 //Aguarda 200ms (0,2 segundo)
    digitalWrite(led,LOW);      //Desliga o LED
    delay(100);                 //Aguarda novamente, por 100ms (0,1 segundo)
  }

  delay(200);                   //Aguarda 200ms (0,2 segundo) para fazer a próxima letra

 // --- (O) - Três traços
 for(int x=0;x<3;x++)
  {
    digitalWrite(led,HIGH);
    delay(450);                 //Aguarda 450ms (0,45 segundo)
    digitalWrite(led,LOW);
    delay(150);                 //Aguarda 150ms (0,15 segnudo)
  }

  delay(200);

 // ... (S) - Três pontos
 for(int x=0;x<3;x++)
  {
    digitalWrite(led,HIGH);
    delay(200);
    digitalWrite(led,LOW);
    delay(100);
  }

 delay(5000);                   //Aguarda 5000ms (5 segundos) para repetir o processo

}



Parte 4 - Funcionamento

Se tudo deu certo, quando você executou o programa, o seu LED vermelho piscou. Se você prestar atenção, você verá que ele piscou 3 vezes rápido, 3 vezes devagar e, novamente, 3 vezes rápido. Isto é o código SOS! O S, se pesquisar em uma tabela de código morse, é 3 pontos e o O, 3 traços:


Se você está fazendo o sinal de SOS, seu LED piscará nessa sequência:


                                                Parte 5 - Buzzer

Agora, vamos deixar um pouco mais completo. Que tal adicionarmos um Buzzer? Para isso, nós teremos que adicionar mais uns comandos no código e mais cabos, para ligá-lo:




/*|---------------------------------------------------------------------------|
  |                                                                           |
  |            Segundo projeto (Código Morse com LED e Buzzer)                |
  |               https://utilizacaodearduino.blogspot.com                    |
  |                                                                           |
  |---------------------------------------------------------------------------|*/

int led = 11;                   //Pino em que a perna positiva do LED está posicionada
int buzzer = 3;                 //Pino em que a perna positiva do Buzzer está posicionada

void setup() {
  pinMode(led, OUTPUT);         //Configura o pino do LED como 'saída'
  pinMode(buzzer, OUTPUT);      //Configura o pino do Buzzer como 'saída'
}

void loop() {

 // ... (S) - Três pontos
 for(int x=0;x<3;x++)           //Repete tudo dentro das chaves três vezes
  {
    digitalWrite(led,HIGH);     //Acende o LED
    tone(buzzer,1500);          //Liga o Buzzer
    delay(200);                 //Aguarda 200ms (0,2 segundo)
    digitalWrite(led,LOW);      //Desliga o LED
    noTone(buzzer);             //Desliga o Buzzer
    delay(100);                 //Aguarda novamente, por 100ms (0,1 segundo)
  }

  delay(200);                   //Aguarda 200ms (0,2 segundo) para fazer a próxima letra

 // --- (O) - Três traços
 for(int x=0;x<3;x++)
  {
    digitalWrite(led,HIGH);
    tone(buzzer,1500);
    delay(450);                 //Aguarda 450ms (0,45 segundo)
    digitalWrite(led,LOW);
    noTone(buzzer);
    delay(150);                 //Aguarda 150ms (o,15 segundo)
  }

  delay(200);

 // ... (S) - Três pontos
 for(int x=0;x<3;x++)
  {
    digitalWrite(led,HIGH);
    tone(buzzer,1500);
    delay(200);
    digitalWrite(led,LOW);
    noTone(buzzer);
    delay(100);
  }

 delay(5000);                   //Aguarda 5000ms (5 segundos) para repetir o processo

}

Se você fez tudo certinho, seu Arduino funcionará assim:



                                         Parte 6 - Personalização

Agora, a parte que nós mais gostamos desse tipo de circuito: a personalização! Você pode colocar seu nome, palavras isoladas ou até mesmo frases inteiras! Aqui vai um exemplo da palavra "Robótica" para servir de base:


/*|---------------------------------------------------------------------------|
  |                                                                           |
  |            Segundo projeto (Código Morse com LED e Buzzer)                |
  |               https://utilizacaodearduino.blogspot.com                    |
  |                                                                           |
  |---------------------------------------------------------------------------|*/

int led = 11;                   //Pino em que a perna positiva do LED está posicionada

void setup() {
  pinMode(led, OUTPUT);         //Configura o pino do LED como 'saída'
}

void loop() {

 // .-. (R) - Ponto, traço e ponto
    digitalWrite(led,HIGH);     //Acende o LED
delay(200); //Aguarda 200ms (0,2 segundo) digitalWrite(led,LOW); //Desliga o LED delay(150); //Aguarda novamente, por 100ms (0,1 segundo) digitalWrite(led,HIGH); delay(450); //Aguarda 450ms (0,45 segundo) digitalWrite(led,LOW); delay(150); //Aguarda novamente, por 150ms (0,15 segundo) digitalWrite(led,HIGH); delay(200); digitalWrite(led,LOW);

  delay(200);                   //Aguarda 200ms (0,2 segundo) para fazer a próxima letra

 // --- (O) - Três traços
 for(int x=0;x<3;x++) {
    digitalWrite(led,HIGH);
    delay(450);
    digitalWrite(led,LOW);
    delay(150);
  }

  delay(50);

 // -... (B) - Traço, três pontos

    digitalWrite(led,HIGH);
    delay(450);
    digitalWrite(led,LOW);
    delay(150);
    for(int x=0;x<3;x++) {
    digitalWrite(led,HIGH);
    delay(100);
    digitalWrite(led,LOW);
    delay(150);
  }

   delay(50);

 // --- (O) - Três traços
 for(int x=0;x<3;x++) {
    digitalWrite(led,HIGH);
    delay(450);
    digitalWrite(led,LOW);
    delay(150);
  }

  delay(50);
// - (T) - Traço
    digitalWrite(led,HIGH);
    delay(450);
    digitalWrite(led,LOW);

    delay(200);

 // .. (I) - Dois pontos
    for(int x=0;x<2;x++) {
    digitalWrite(led,HIGH);
    delay(100);
    digitalWrite(led,LOW);
    delay(150);
   }
   delay(50);
// -.-. (C) - Traço, ponto, traço, ponto
   for(int x=0;x<2;x++) {
    digitalWrite(led,HIGH);
    delay(450);
    digitalWrite(led,LOW);
    delay(150);
    digitalWrite(led,HIGH);
    delay(100);
    digitalWrite(led,LOW);
    delay(150);
    }
  delay(50);
// .- (A) - Ponto, traço
    digitalWrite(led,HIGH);
    delay(100);
    digitalWrite(led,LOW);
    delay(150);
    digitalWrite(led,HIGH);
    delay(450);
    digitalWrite(led,LOW);
    delay(200);
delay(5000); //Aguarda 5000ms (5 segundos) para repetir o processo }

Padrões

Caso você não tenha percebido, há o uso de vários padrões no código acima. Use eles para fazer um código morse original:

Padrão de pontos:
// . (E) - Ponto

    digitalWrite(led,HIGH);     //Acende o LED
    delay(100);                 //Aguarda 100ms (0,1 segundo)
    digitalWrite(led,LOW);      //Apaga o LED
    delay(200);                 //Aguarda 200ms (0,2 segundo) para a próxima letra

Padrão de traços:
// - (T) - Traço

    digitalWrite(led,HIGH);     //Acende o LED
    delay(450);                 //Aguarda 450ms (0,45 segundo)
    digitalWrite(led,LOW);      //Apaga o LED
    delay(200);                 //Aguarda 200ms (0,2 segundo) para a próxima letra

Note que, comparado com os dois padrões acima, a única coisa que muda é o tempo do primeiro delay, que é a duração do símbolo. Sabendo disso, você pode usar um desses tempos no próximo padrão para definir um ponto ou traço.

Padrão de repetição:
// .. (I) - Dois pontos

    for(int x=0;x<2;x++) {
    digitalWrite(led,HIGH);     //Acende o LED
    delay(100);                 //Aguarda 100ms (0,1 segundo)
    digitalWrite(led,LOW);      //Apaga o LED
    delay(150);                 //Aguarda 150ms para repetir o símbolo
    }

    delay(50);                  //Aguarda 50ms para completar os 200, por causa do delay de 150 acima

O "for(int..." acima do código do símbolo faz com que o que está dentro das chaves ("{ }") se repita um certo número vezes. Para configurar a quantidade de vezes que o símbolo é repetido, troque o número 2 em "x<2" pela quantidade de vezes que você quer (não use o número 1, senão o código dentro das chaves só será executado uma vez. Use apenas números maiores ou iguais a 2).

Padrão com Buzzer:
int buzzer = <número do pino em que a perna positiva do Buzzer está posicionada>

void setup() {
    pinMode(buzeer, OUTPUT);
}

void loop() {

// Algum símbolo

    tone(buzzer,<tom do buzzer. Recomendamos que deixe como 1500>);
    delay(<duração do símbolo>);
    noTone(buzzer);
    delay(200);
}

Lembre-se de sempre colocar um tempinho maior no final do código antes de fechar as chaves do void loop, para dar um tempo antes de repetir o código novamente. Se o último símbolo não estiver sendo executado com um código de repetição, recomendamos usar "delay(5000);":
    <código do LED/Buzzer>
    delay(5000);
}  //Fim do void loop
no final (esse tempo é o equivalente a 5 segundos).

Se seu código estiver sendo executado dentro das chaves de uma repetição, recomendamos usar "delay(4850);":
    <código do LED/Buzzer>
    delay(150);  //Tempo para repetir (no caso, executar a próxima letra)
    }  //Fim do código da repetição

  delay(4850);

}  //Fim do void loop
se ele tiver 150 no final.


Parte 7 - Finalização

Nessa publicação, você aprendeu como funciona um código morse, como reproduzir um em um Arduino e como criar um código morse original. Muito obrigado se você leu até aqui! Dá um trabalhão escrever esses posts, pesquisar sobre, editar e criar as imagens de montagem e código morse, escrever os códigos, gravar os vídeos de como o Arduino vai funcionar com eles e usar a revisão e feedback de outros integrantes do nosso grupo para deixar o mais completo e claro possível. Eu sei que é chato ficar pedindo mas, se você gostou, comente. Conhece alguém que queira entrar na área/goste de robótica? Considere compartilhar essa publicação e o blog em geral. Tudo isso ajuda muito e nos deixa muito feliz! ^^ Até a próxima!

Escritor: Nathan Oliveira
Leitores de testes: Caio, Leonardo e Murilo

Comentários