Esta barra, indica o nível de dificuldade encontrado para cada experiência realizada.
sendo:
"VERDE", indicação de nível 1 a 5 (Fácil);
"AMARELO", indicação de nível 6 a 8 (Médio);
VERMELHO, indicação de nível 9 e 10 (Difícil);
Esta experiência é um complemento ao SOS, LED Código Morse.
Agora iremos ver como fazer um tradutor de palavras e textos para código morse e efetuar a sinalização em um LED.
Para usar, basta:
Abrir um terminal de comunicação serial da IDE do Arduino, e escrever os caracteres, palavra ou texto, e enviar. O Arduino irá traduzir e sinalizar no LED ou Lâmpada de Sinalização.
Tabela do Código Morse |
O HARDWARE:
É o mesmo utilizado na experiência anterior.
O CIRCUITO:
É o mesmo utilizado na experiência anterior. Um LED ligado ao pino 10 com seu respectivo resistor de limitação e queda de tensão.
O SOFTWARE:
/*
Este exemplo é um código de domínio público.
*/
int ledPin = 10; // pino onde seráconectado o LED
// matriz contendo o código Morse de cada letra do alfabeto
char* letters[] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", // A-I
".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", // J-R
"...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." // S-Z
};
// matriz contendo o código Morse de cada número
char* numbers[] = {"-----", ".----", "..---", "...--", "....-", ".....", "-....",
"--...", "---..", "----."};
int dotDelay = 200; // delay para os "dits"
// inicialização do Arduino
void setup()
{
pinMode(ledPin, OUTPUT); // define pino do LED como saída
Serial.begin(9600); // inicializa a comunicação serial
}
// loop principal do programa
void loop()
{
char ch; // define variável
if (Serial.available()) // existe alguma informação a ser lida da serial?
{
ch = Serial.read(); // lê uma letra única
if (ch >= 'a' && ch <= 'z') // se a letra estiver entre a e z
{
flashSequence(letters[ch - 'a']); // chama a função "flashSequence"
// tendo como parâmetro o número da
// letra na matriz
// subtrair 'a' da letra é um ponto
// de refrência 'a' - 'a' = 0...
// primeiro menbro da matriz;
// 'b' - 'a' = 1...
// segundo membro da matriz
// e assim por diante
}
else if (ch >= 'A' && ch <= 'Z') // se a letra está entre A e Z
{
flashSequence(letters[ch - 'A']); // como dito acima, agora para as maísculas
}
else if (ch >= '0' && ch <= '9') // se está entre 0 e 9
{
flashSequence(numbers[ch - '0']); // como dito acima, agora para os números
}
else if (ch == ' ') // se vazio, espaço
{
delay(dotDelay * 4); // gap entre as palavras
}
}
}
// pisca a sequência letras
void flashSequence(char* sequence)
{
int i = 0;
while (sequence[i] != NULL) // enquanto não acabar a sequencia de letras
{
flashDotOrDash(sequence[i]); // envia para ser piscado o dit ou dah
i++; // mais um da sequência
}
delay(dotDelay * 3); // gap entre letras
}
// pisca a sequência de dits e dahs
void flashDotOrDash(char dotOrDash)
{
digitalWrite(ledPin, HIGH); // acende LED
if (dotOrDash == '.') // se dit?
{
delay(dotDelay); // tempo de um dit
}
else // então é um dah
{
delay(dotDelay * 3); // tempo de um dah
}
digitalWrite(ledPin, LOW); // apaga o LED
delay(dotDelay); // gap entre piscadas
}
// Fim da Compilação
O VÍDEO:
Vejamos o teste!
Dúvidas e sugestões enviem para: arduinobymyself@gmail.com
Bom dia ;
ResponderExcluirCaso eu queira que a informação digitada no serial se repita indefinidamente , como faço?
–·· ·· –·–· ·– –––··· –·–· ·· –·· ·– –·· · –– ·– ·· ··· ·– –· – ·· ––· ·– –·· ––– –– ··– –· –·· ––– ––··–– ·––– ··– –·· ·– ·· ··· –– ––– ––··–– –·–· ·–· ·· ··· – ·· ·– –· ·· ··· –– ––– ––··–– ·· ··· ·–·· ·– –– ·· ··· –– –––
ResponderExcluirx XXXx XXX xXXXx XXXxXXXXXX / XXXx xxXXX XXXXXX XXXxxx x xXXXx / xxxXXXXXX xXXXxXXXxXXX / XXX XXXXXXXXX XXXXXX XXXXXXXXX xXXXx xXXXx XXXXXXXXX xXXXXXX / xx xxx / XXX xxxx x / xxXXXx xx xXXXx xxx XXX / XXX x xxx XXX / XXXXXXXXX xxXXXx / XXX xxxx x / # # # # # # # / XXXXXX xXXX XXXxXXXx xxxx xx XXXx x xXXXxXXXxXXX / xx / XXX XXXXXXXXX xXXXxx XXXxx / XXX xxxx x XXXXXX / xx / XXXxx xx XXXxx XXXx XXX / XXX xxxx xx XXXx XXXxXXX / XXX xxxx xx xxx / xXXXXXX XXXXXXXXX xxXXX xXXXxx XXXxx / x XXXx XXXxx / xXXXXXX x xXXXxx xXXXxx XXXXXXxxXXXXXX XXXxxx xxXXX XXX / XXX xxxx x XXXxXXXXXX / XXXxx xx XXXxx XXXx xXXXXXXXXXXXXx XXX / xXXXxx xx xxx XXX x XXXx / XXX XXXXXXXXX / XXXXXX x XXXXXXxxXXXXXX / xXXX XXXx XXXxx / XXXx XXXXXXXXX xXXXXXX / XXX xxxx x xXXXx x xxx / xXXX / XXXxXXXx xxxx xXXX XXXx XXXxXXXx x / XXX xxxx xXXX / XXXXXX XXXXXXXXX xxx XXX / xXXXXXXx x XXXXXXXXX xXXXXXXx xXXXxx x / xx XXXx / XXX xxxx xXXX XXX / xXXXx XXXXXXXXX XXXXXXXXX XXXXXX / xXXX xXXXx x / XXXXXXx XXXXXXXXX XXXx XXXx xXXX / XXXxxx x / XXXxx x xXXX XXXxx xXXXxXXXxXXX / xXXXXXX xxxx XXXxXXXXXX / XXXxx XXXXXXXXX / XXX xxxx x XXXxXXXXXX / XXXx x xxxXXX x xXXXx / xXXXxx x xXXX xXXXx XXXx / xXXXXXX xxxx x XXXx / xxx XXXXXXXXX XXXXXX x XXX xxxx xx XXXx XXXXXXx / xx xxx / XXXx XXXXXXXXX XXX / xXXXx x xXXX XXXxx XXXxXXXXXX xxXXXXXXxx / xxXXX XXXXXXx xxxx xXXXxXXXxXXX / xx xXXXXXXXXXXXXx xXXXxx xXXXxx / XXX xXXXx XXXxXXXXXX / XXX XXXXXXXXX / xXXXXXX xXXX xXXXx XXXx / XXX xxxx x XXXXXX / xXXX XXXxxx XXXXXXXXX xxXXX XXX / xx XXX / XXX XXXXXXXXX XXXXXX XXXXXXXXX xXXXx xXXXx XXXXXXXXX xXXXXXX xXXXxXXXxXXX
ResponderExcluir