Escolar Documentos
Profissional Documentos
Cultura Documentos
Código Morse
Niterói – RJ
Maio / 2019
1 Introdução
Este documento é consequência de uma pesquisa aprofundada sobre o código Morse. Nele contém alguns
projetos realizados pelo Grupo PET Tele usando para além do código referido como base, um resgate sobre suas
origens e fatores que levaram à sua criação. Uma ideia central por detrás da abordagem do tema é trazer-lhe
uma perspectiva educacional, conhecimento do público e respeito aos assuntos relacionados às telecomunicações.
Como resultado, pretendemos mostrar um dos ramos da engenharia que mais tem se desenvolvido nos últimos
anos, de maneira lúdica e didática.
2 Como surgiu?
O código Morse, como seu próprio nome diz, foi inventado por Samuel Finley Breese Morse. Seu surgimento
foi necessario em razão sa criaçao do telegrafo elétrico em 1838 -pelo prorio Samuel-.
O aparelho tinha um código base para ser operado e esse código se chama Morse, em homenagem ao seu
inventor.
Nesse momento se desenvolveu uma das áreas mais importantes das telecomunicações, mas antes de falar
sobre essa área vamos explicar o que é o telégrafo elétrico .
Em seguida,
4.1.1 Emissor
É a fonte que pretende comunicar uma mensagem (também pode ser chamada de fonte ou de origem). Ele é
responsável por dar significado a sua mensagem, ou seja, elaborar à ideia e o conceito que se deseja comunicar,
e codificar a mensagem, em outras palavras, constituir um mecanismo pelo qual a mensagem é elaborada para
que possa ser transmitida (como exemplo temos o Código Morse).
4.1.2 Mensagem
É a ideia que o emissor deseja transmitir. Dividida em canal, também chamado de veı́culo, é o espaço situado
entre o emissor e o receptor, com por exemplo os fios usados na comunicação da rede de telégrafos, e o ruı́do,
que é a perturbação dentro do processo de comunicação.
4.1.3 Receptor
É a etapa do recebimento da mensagem pelo destinatário.
Nela se decodifica a mensagem, ou seja, é estabelecido mecanismo para decifrar a mensagem, para que assim
o receptor a compreenda, e confirme ao emissor que a mensagem foi recebida.
Figura 4
5 Meios de transmissão
Geralmente, as mensagens codificadas em Código Morse são reproduzidas por som ou luz. Por sua vez,
são detectadas e para humanos por meio de aparelhos a captam e traduzam (por exemplo o radiotelégrafo e o
telégrafo). No entanto, dependendo da criatividade dos usuários do código, ele pode ser transmitido de outras
maneiras, já que envolve uma sequência de pontos e traços como visto anteriormente.
Esse meio de transmissão foi muito utilizado por marinheiros no século XIX, tendo o primeiro registro de um
resgate marı́timo utilizando o Código Morse em 1899, no Estreito de Dover. Ainda no século XIX, a utilização
do Código Morse se popularizou rapidamente, alcançando praticamente todos os paı́ses europeus.
Em 1865, o Congresso Internacional Telegráfico regulamentou o Código Morse Internacional após algumas
alterações no código criado por Samuel Morse, o que proporcionou maior dinamismo às comunicações. Com o
surgimento do telefone, no fim do século XIX, o Código Morse caiu em desuso, e o desenvolvimento de novas
tecnologias de comunicação mais eficazes desencadeou a substituição do sistema criado por Morse por outros
aparelhos.
6 Projetos Desenvolvidos
6.1 Projetos Convencionais
6.1.1 Simulação de Faróis
Esse projeto tem a intenção de simular a comunicação entre dois locais, como é feito nos navios, por exemplo.
Ele tem como intuito ultilizar materias de fácil acesso, para que crinças -com auxı́lio de adultos-, possam criar
um brinquedo que simule um tipo de transmissão de informação, e essa, por sua vez, tem como base o Código
Morse.
Material ultilizado:
• Duas lâmpadas;
• Papel alumı́nio;
• Dois circulos de plático de 15cm de diâmetro;
• Dois fios (+ tomadas nas pontas) de 3 m(ligados ao bocal);
• Cola quente.
Modo de preparo:
1. Pegue o papel alumı́nio e revista os prolongadores de ralo por dentro;
(a) Projeto visto por cima, com tampa. (b) Fios ligados à lãmpada.
Figura 7: Projeto final.
• Arduino Uno;
• Cabo para conexão com Arduino;
• 2 Jumpers.
• As versões binário e com sı́mbolos textuais empregam um total de quatro elementos básicos para repre-
sentar os três sı́mbolos do código Morse, enquanto a versão com sons emprega quatro vetores de pontos,
cuja quantidade de pontos depende diretamente de f, de Tdot e de Fs.
• A versão com sı́mbolos textuais é ternária, enquanto as outras duas, em essência, são binárias. Assim,
pode-se realizar as seguintes escolhas:
• Adotar a versão binário como uma representação interna e intermediária, que pode ser transformada nas
demais.
• Adotar as versões binário e/ou de sı́mbolos textuais (ternária) para uma transmissão digital, baseada em
tensão ou corrente. Adotar a versão de sons apenas como versão final, a ser enviada a um circuito gerador
de som.
Para ter acesso ao codigo cunsulte o anexo 3.
7 Conclusão
Portanto, a criação do telégrafo e do Código Morse foram a alavanca necessária para o desenvolvimento
da tecnologia da comunicação. Podemos observar semelhanças até hoje, com a criação de Morse e dos sinais
digitais, que se baseiam em dois elementos de codificação.
Concluı́mos assim que ainda na era dos computadores e smartphones continuamos a nos comunicar da
maneira semelhante aos nossos antepassados.
8 Perguntas frequentes
Qual é a codificação empregada no Código Morse?
O tipo de codificação usado no código e a binária, que consiste em dois pontos: igaldo e desligado (zero e
um). Já no caso do Código Morse traço e ponto.
Quais são os tipos de sinais mais usados na transmissão?
Sinais elétricos, sinais sonoros, sinais de luz e sinais de rádio.
Que tipos de mensagens são transmitidas? Curtas e simplificadas (tipo telegrama)? Textos
completos?
O emissor pode se sentir livre ao enviar a mensagem, desde que tanto o receptor quanto o emissor tenham
domı́nio na codificação e decodificação do código, mas o aconselhado são mensagens curtas para evitar erros, já
que toda a codificação é controlada por homens.
String t r a d u z i r ( String l e t r a ){
i f ( l e t r a == ”a ”) {
r e t u r n ”. − ”;
}
i f ( l e t r a == ”b ”) {
r e t u r n ” − . . . ”;
}
i f ( l e t r a == ”c ”) {
r e t u r n ”− . − . ”;
}
i f ( l e t r a == ”d ”) {
r e t u r n ” − . . ”;
}
i f ( l e t r a == ”e ”) {
r e t u r n ”. ”;
}
i f ( l e t r a == ” f ”) {
r e t u r n ”. . − . ”;
}
i f ( l e t r a == ”g ”) {
r e t u r n ”− −.”;
}
i f ( l e t r a == ”h ”) {
return ”. . . . ”;
}
i f ( l e t r a == ” i ”) {
return ”. . ”;
}
i f ( l e t r a == ” j ”) {
r e t u r n ”. − − −”;
}
i f ( l e t r a == ”k ”) {
r e t u r n ”−. −”;
}
i f ( l e t r a == ” l ”) {
r e t u r n ”. − . . ”;
}
i f ( l e t r a == ”m”) {
r e t u r n ”− −”;
}
i f ( l e t r a == ”n ”) {
r e t u r n ” − . ”;
}
i f ( l e t r a == ”o ”) {
r e t u r n ”−−−”;
}
i f ( l e t r a == ”p ”) {
r e t u r n ”. − − . ”;
}
i f ( l e t r a == ”q ”) {
r e t u r n ”− −. −”;
}
i f ( l e t r a == ”r ”) {
r e t u r n ”−. −”;
}
if ( letra == ”s ”) {
return ”. . . ”;
}
if ( letra == ”t ”) {
return ”−”;
}
if ( letra == ”u ”) {
return ”. . − ”;
}
if ( letra == ”v ”) {
return ”. . . − ”;
}
if ( letra == ”w”) {
return ”. − −”;
}
if ( letra == ”x ”) {
return ”− . . − ”;
}
if ( letra == ”y ”) {
return ”−. − −”;
}
if ( letra == ”z ”) {
return ”− − . . ”;
}
if ( letra == ” ”) {
return ” ”;
}
}
v o i d traduzLed ( c h a r c o d i g o ) {
delay ( 4 0 ) ;
i f ( c o d i g o == ’ . ’ ) {
d i g i t a l W r i t e ( 8 , HIGH ) ;
delay ( 4 0 ) ;
d i g i t a l W r i t e ( 8 , LOW) ;
}
i f ( c o d i g o == ’ ’ ) {
d i g i t a l W r i t e ( 8 , HIGH ) ;
delay (12 0);
d i g i t a l W r i t e ( 8 , LOW) ;
}
i f ( c o d i g o == ’ − ’){
d i g i t a l W r i t e ( 8 , HIGH ) ;
delay (12 0);
d i g i t a l W r i t e ( 8 , LOW) ;
}
}
S t r i n g a l f a b e t o = ”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 ”;
S t r i n g morse = ””;
void loop ( ) {
String entrada ;
i n t tamanho = 0 ;
i f ( S e r i a l . a v a i l a b l e ( ) > 0){
entrada = S e r i a l . readString ( ) ;
w h i l e ( tamanho < e n t r a d a . l e n g t h ( ) ) {
morse = morse + t r a d u z i r ( S t r i n g ( e n t r a d a [ tamanho ] ) ) ;
tamanho = tamanho + 1 ;
i f ( tamanho == ( e n t r a d a . l e n g t h ( ) − 1 ) ) {
S e r i a l . p r i n t l n ( morse ) ;
}
}
tamanho = 0 ;
w h i l e ( tamanho < morse . l e n g t h ( ) ) {
traduzLed ( morse [ tamanho ] ) ;
tamanho = tamanho + 1 ;
}
tamanho = 0 ;
w h i l e ( tamanho < morse . l e n g t h ( ) ) {
t r a d u z B u z z e r ( morse [ tamanho ] ) ;
tamanho = tamanho + 1 ;
}
tamanho = 0 ;
}
morse = ””;
e n t r a d a = ””;
tamanho = 0 ;
}
Anexo 2
\\ Emissor
String t r a d u z i r ( String l e t r a ){
i f ( l e t r a == ”a ”) {
r e t u r n ”. − ”;
}
i f ( l e t r a == ”b ”) {
r e t u r n ” − . . . ”;
}
i f ( l e t r a == ”c ”) {
r e t u r n ”− . − . ”;
}
i f ( l e t r a == ”d ”) {
return ” − . . ”;
}
if ( letra == ”e ”) {
return ”. ”;
}
if ( letra == ” f ”) {
return ”. . − . ”;
}
if ( letra == ”g ”) {
return ”− −.”;
}
if ( letra == ”h ”) {
return ”. . . . ”;
}
if ( letra == ” i ”) {
return ”. . ”;
}
if ( letra == ” j ”) {
return ”. − − −”;
}
if ( letra == ”k ”) {
return ”−. −”;
}
if ( letra == ” l ”) {
return ”. − . . ”;
}
if ( letra == ”m”) {
return ”− −”;
}
if ( letra == ”n ”) {
return ” − . ”;
}
if ( letra == ”o ”) {
return ”−−−”;
}
if ( letra == ”p ”) {
return ”. − − . ”;
}
if ( letra == ”q ”) {
return ”− −. −”;
}
if ( letra == ”r ”) {
return ”−. −”;
}
if ( letra == ”s ”) {
return ”. . . ”;
}
if ( letra == ”t ”) {
return ”−”;
}
if ( letra == ”u ”) {
return ”. . − ”;
}
if ( letra == ”v ”) {
return ”. . . − ”;
}
if ( letra == ”w”) {
return ”. − −”;
}
if ( letra == ”x ”) {
return ”− . . − ”;
}
if ( letra == ”y ”) {
return ”−. − −”;
}
if ( letra == ”z ”) {
return ”− − . . ”;
}
if ( letra == ” ”) {
return ” ”;
}
}
S t r i n g a l f a b e t o = ”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 ”;
S t r i n g morse = ””;
void loop ( ) {
String entrada ;
i n t tamanho = 0 ;
i f ( S e r i a l . a v a i l a b l e ( ) > 0){
entrada = S e r i a l . readString ( ) ;
w h i l e ( tamanho < e n t r a d a . l e n g t h ( ) ) {
morse = morse + t r a d u z i r ( S t r i n g ( e n t r a d a [ tamanho ] ) ) ;
tamanho = tamanho + 1 ;
i f ( tamanho == ( e n t r a d a . l e n g t h ( ) − 1 ) ) {
S e r i a l . p r i n t l n ( morse ) ;
}
}
tamanho = 0 ;
}
w h i l e ( tamanho < morse . l e n g t h ( ) ) {
t r a d u z L a s e r ( morse [ tamanho ] ) ;
tamanho = tamanho + 1 ;
}
morse = ””;
e n t r a d a = ””;
tamanho = 0 ;
}
\\ R ece pto r
v o i d c a l c u l a C a r a c t e r ( u n s i g n e d l o n g tempo , S t r i n g mensagem ) {
i f ( tempo < 8 0 ) {
mensagem += ”. ”;
} else {
mensagem += ”−”;
}
v o i d c a l c u l a E s p a c o ( u n s i g n e d l o n g tempo , S t r i n g mensagem ) {
i f ( tempo > 8 0 ) {
mensagem += ” ”;
}
}
i n t pinoReceptor = 9 ;
int leitura ;
i n t laserOn = 0 ;
int laserOff = 0;
int inicio = 0;
int ativo = 0;
S t r i n g mensagem = ””;
unsigned long tempoInicio ;
u n s i g n e d l o n g tempoFim ;
u n s i g n e d l o n g tempoTotal ;
% lim p a ambiente de t r a b a l h o
clear a l l
% constantes uteis
%
empty char = ’ ’ ;
%
blank char = ’ ’ ;
%
left delimiter char = ’{ ’ ;
%
right delimiter char = ’} ’ ;
% dot s t r i n g
dot char = ’ o ’ ;
% trace length
trace len = 3; % trace time = 3 ∗ dot time
% trace string
t r a c e s t r = [ empty char ] ;
for lo o p in d = 1 : t r a c e l e n
t r a c e s t r = [ t r a c e s t r ’− ’ ] ;
end
clear lo op ind
%
% 1 ∗ dot time
elem sp str = [ blank char ] ;
%
% 3 ∗ dot time
symbol sp str = [ elem sp str elem sp str elem sp str ] ;
%
% 7 ∗ dot time
word sp str = [ elem sp str elem sp str elem sp str . . .
elem sp str elem sp str elem sp str . . .
elem sp str ] ;
% t i t u l o da l i s t a de s i m b o l o s
%
%d i s p ( b l a n k c h a r ) ; d i s p ( b l a n k c h a r ) ;
%d i s p ( ’ A l f a b e t o de s t r i n g s ’ ) ;
%d i s p ( b l a n k c h a r ) ; d i s p ( b l a n k c h a r ) ;
% letras
%
A str = [ dot char elem sp str trace str ];
%
B str = [ t r a c e s t r elem sp str dot char elem sp str . . .
dot char elem sp str dot char ];
%
C str = [ t r a c e s t r elem sp str dot char elem sp str . . .
trace str elem sp str dot char ];
%
D str = [ t r a c e s t r elem sp str dot char elem sp str . . .
dot char ];
%
E str = [ dot char ];
%
F str = [ dot char elem sp str dot char elem sp str . . .
trace str elem sp str dot char ];
%
G str = [ t r a c e s t r elem sp str trace str elem sp str . . .
dot char ];
%
H str = [ dot char elem sp str dot char elem sp str . . .
dot char elem sp str dot char ];
%
I s t r = [ dot char elem sp str dot char ];
%
J str = [ dot char elem sp str trace str elem sp str . . .
trace str elem sp str trace str ];
%
K str = [ t r a c e s t r elem sp str dot char elem sp str . . .
trace str ];
%
L str = [ dot char elem sp str trace str elem sp str . . .
dot char elem sp str dot char ];
%
M str = [ t r a c e s t r elem sp str trace str ];
%
N str = [ t r a c e s t r elem sp str dot char ];
%
O str = [ t r a c e s t r elem sp str trace str elem sp str . . .
trace str ];
%
P str = [ dot char elem sp str trace str elem sp str . . .
trace str elem sp str dot char ];
%
Q str = [ t r a c e s t r elem sp str trace str elem sp str . . .
dot char elem sp str trace str ];
%
R str = [ dot char elem sp str trace str elem sp str . . .
dot char ];
%
S str = [ dot char elem sp str dot char elem sp str . . .
dot char ];
%
T str = [ t r a c e s t r ];
%
U str = [ dot char elem sp str dot char elem sp str . . .
trace str ];
%
V str = [ dot char elem sp str dot char elem sp str . . .
dot char elem sp str trace str ];
%
W str = [ d o t c h a r elem sp str trace str elem sp str . . .
trace str ];
%
X str = [ t r a c e s t r elem sp str dot char elem sp str . . .
dot char elem sp str trace str ];
%
Y str = [ t r a c e s t r elem sp str dot char elem sp str . . .
trace str elem sp str trace str ];
%
Z str = [ trace str elem sp str trace str elem sp str . . .
dot char elem sp str dot char ];
%
disp ( b l a n k c h a r ) ; disp ( b l a n k c h a r ) ;
% b a s e numerica
%
n1 str = [ dot char elem sp str trace str elem sp str . . .
trace str elem sp str trace str elem sp str . . .
trace str ];
%
n2 str = [ dot char elem sp str dot char elem sp str . . .
trace str elem sp str trace str elem sp str . . .
trace str ];
%
n3 str = [ dot char elem sp str dot char elem sp str . . .
dot char elem sp str trace str elem sp str . . .
trace str ];
%
n4 str = [ dot char elem sp str dot char elem sp str . . .
dot char elem sp str dot char elem sp str . . .
trace str ];
%
n5 str = [ dot char elem sp str dot char elem sp str . . .
dot char elem sp str dot char elem sp str . . .
dot char ];
%
n6 str = [ trace str elem sp str dot char elem sp str . . .
dot char elem sp str dot char elem sp str . . .
dot char ];
%
n7 str = [ trace str elem sp str trace str elem sp str . . .
dot char elem sp str dot char elem sp str . . .
dot char ];
%
n8 str = [ trace str elem sp str trace str elem sp str . . .
trace str elem sp str dot char elem sp str . . .
dot char ];
%
n9 str = [ trace str elem sp str trace str elem sp str . . .
trace str elem sp str trace str elem sp str . . .
dot char ];
%
n0 str = [ trace str elem sp str trace str elem sp str . . .
trace str elem sp str trace str elem sp str . . .
trace str ];
%
disp ( b l a n k c h a r ) ; disp ( b l a n k c h a r ) ;
% pontuacao
%
p pnt str = [ dot char elem sp str trace str elem sp str . . .
dot char elem sp str trace str elem sp str . . .
dot char elem sp str trace str ];
%
p frc str = [ trace str elem sp str dot char elem sp str . . .
dot char elem sp str trace str elem sp str . . .
dot char ];
%
p vrg str = [ trace str elem sp str trace str elem sp str . . .
dot char elem sp str dot char elem sp str . . .
trace str elem sp str trace str ];
%
p 2pt str = [ trace str elem sp str trace str elem sp str . . .
trace str elem sp str dot char elem sp str . . .
dot char elem sp str dot char ];
%
p aps str = [ dot char elem sp str trace str elem sp str . . .
trace str elem sp str trace str elem sp str . . .
trace str elem sp str dot char ];
%
p hfn str = [ trace str elem sp str dot char elem sp str . . .
dot char elem sp str dot char elem sp str . . .
dot char elem sp str trace str ];
%
p rpr str = [ trace str elem sp str dot char elem sp str . . .
trace str elem sp str dot char elem sp str . . .
dot char elem sp str trace str ];
%
p lpr str = [ trace str elem sp str dot char elem sp str . . .
trace str elem sp str dot char elem sp str . . .
dot char elem sp str ];
%
p asp str = [ dot char elem sp str trace str elem sp str . . .
dot char elem sp str dot char elem sp str . . .
trace str elem sp str dot char ];
%
p i n t s t r = [ dot char elem sp str dot char elem sp str . . .
trace str elem sp str trace str elem sp str . . .
dot char elem sp str dot char ];
% g e r a l i n h a s em branco para t e r m i n a r
disp ( b l a n k c h a r ) ; disp ( b l a n k c h a r ) ;
% d e f i n i c a o das f r e q u e n c i a s
%
Fs = 8 e3 ; % sampling frequency
Fm = 1 e3 ; % sinusoidal frequency
%
Omega = 2∗ pi ∗Fm/ Fs ; % Omega = w Ts = 2 p i f Ts = 2 p i f / Fs
% d e f i n i c a o dos tempos
% for testing
dot time = 0.08;
%
%
% d e f i n e d by Alyne / Lucio
%d o t t i m e = 0.04;
trace time = 3 ∗ dot time ;
%
% d e f i n e d by ASV
%m o r s e s y m b o l s s p a c e t i m e = 2 ∗ d o t t i m e ;
%c h a r s p a c e t i m e = 4 ∗ dot time ;
%w o r d s p v a c e t i m e = 8 ∗ dot time ;
%
% Nbr o f s a m p l e s p e r d o t t i m e
Ndot = d o t t i m e ∗ Fs ;
%
nd = 0 : ( Ndot −1);
d o t s n d = cos (Omega ∗ nd ) ;
% c o n s t r u c a o do som do t r a c o
%
% Nbr o f s a m p l e s p e r t r a c e t i m e
Ntrace = t r a c e t i m e ∗ Fs ;
%
nt = 0 : ( Ntrace −1);
t r a c e s n d = cos (Omega ∗ nt ) ;
%
% 1 ∗ dot time
elem sp snd = zeros ( 1 , Ndot ) ;
%
% 3 ∗ dot time
s y m b o l s p s n d = zeros ( 1 , Ntrace ) ;
%
% 7 ∗ dot time
word sp snd = zeros ( 1 , 7 ∗ Ndot ) ;
%
%d i s p ( b l a n k c h a r ) ; d i s p ( b l a n k c h a r ) ;
% letras
%
A snd = [ d o t s n d elem sp snd trace snd ];
%
B snd = [ t r a c e s n d elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd dot snd ];
%
C snd = [ t r a c e s n d elem sp snd dot snd elem sp snd . . .
trace snd elem sp snd dot snd ];
%
D snd = [ t r a c e s n d elem sp snd dot snd elem sp snd . . .
dot snd ];
%
E snd = [ d o t s n d ];
%
F snd = [ d o t s n d elem sp snd dot snd elem sp snd . . .
trace snd elem sp snd dot snd ];
%
G snd = [ t r a c e s n d elem sp snd trace snd elem sp snd . . .
dot snd ];
%
H snd = [ d o t s n d elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd dot snd ];
%
I snd = [ dot snd elem sp snd dot snd ];
%
J snd = [ d o t s n d elem sp snd trace snd elem sp snd . . .
trace snd elem sp snd trace snd ];
%
K snd = [ t r a c e s n d elem sp snd dot snd elem sp snd . . .
trace snd ];
%
L snd = [ d o t s n d elem sp snd trace snd elem sp snd . . .
dot snd elem sp snd dot snd ];
%
M snd = [ t r a c e s n d elem sp snd trace snd ];
%
N snd = [ t r a c e s n d elem sp snd dot snd ];
%
O snd = [ t r a c e s n d elem sp snd trace snd elem sp snd . . .
trace snd ];
%
P snd = [ d o t s n d elem sp snd trace snd elem sp snd . . .
trace snd elem sp snd dot snd ];
%
Q snd = [ t r a c e s n d elem sp snd trace snd elem sp snd . . .
dot snd elem sp snd trace snd ];
%
R snd = [ d o t s n d elem sp snd trace snd elem sp snd . . .
dot snd ];
%
S snd = [ d o t s n d elem sp snd dot snd elem sp snd . . .
dot snd ];
%
T snd = [ t r a c e s n d ];
%
U snd = [ d o t s n d elem sp snd dot snd elem sp snd . . .
trace snd ];
%
V snd = [ d o t s n d elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd trace snd ];
%
W snd = [ d o t s n d elem sp snd trace snd elem sp snd . . .
trace snd ];
%
X snd = [ t r a c e s n d elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd trace snd ];
%
Y snd = [ t r a c e s n d elem sp snd dot snd elem sp snd . . .
trace snd elem sp snd trace snd ];
%
Z snd = [ t r a c e s n d elem sp snd trace snd elem sp snd . . .
dot snd elem sp snd dot snd ];
% b a s e numerica
%
n1 snd = [ d o t s n d elem sp snd trace snd elem sp snd . . .
trace snd elem sp snd trace snd elem sp snd . . .
trace snd ];
%
n2 snd = [ d o t s n d elem sp snd dot snd elem sp snd . . .
trace snd elem sp snd trace snd elem sp snd . . .
trace snd ];
%
n3 snd = [ d o t s n d elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd trace snd elem sp snd . . .
trace snd ];
%
n4 snd = [ d o t s n d elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd dot snd elem sp snd . . .
trace snd ];
%
n5 snd = [ d o t s n d elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd dot snd elem sp snd . . .
dot snd ];
%
n6 snd = [ t r a c e s n d elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd dot snd elem sp snd . . .
dot snd ];
%
n7 snd = [ t r a c e s n d elem sp snd trace snd elem sp snd . . .
dot snd elem sp snd dot snd elem sp snd . . .
dot snd ];
%
n8 snd = [ t r a c e s n d elem sp snd trace snd elem sp snd . . .
trace snd elem sp snd dot snd elem sp snd . . .
dot snd ];
%
n9 snd = [ t r a c e s n d elem sp snd trace snd elem sp snd . . .
trace snd elem sp snd trace snd elem sp snd . . .
dot snd ];
%
n0 snd = [ t r a c e s n d elem sp snd trace snd elem sp snd . . .
trace snd elem sp snd trace snd elem sp snd . . .
trace snd ];
%
%d i s p ( b l a n k c h a r ) ; d i s p ( b l a n k c h a r ) ;
% pontuacao
%
p pnt snd = [ dot snd elem sp snd trace snd elem sp snd . . .
dot snd elem sp snd trace snd elem sp snd . . .
dot snd elem sp snd trace snd ];
%
p frc snd = [ trace snd elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd trace snd elem sp snd . . .
dot snd ];
%
p vrg snd = [ trace snd elem sp snd trace snd elem sp snd . . .
dot snd elem sp snd dot snd elem sp snd . . .
trace snd elem sp snd trace snd ];
%
p 2pt snd = [ trace snd elem sp snd trace snd elem sp snd . . .
trace snd elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd dot snd ];
%
p aps snd = [ dot snd elem sp snd trace snd elem sp snd . . .
trace snd elem sp snd trace snd elem sp snd . . .
trace snd elem sp snd dot snd ];
%
p hfn snd = [ trace snd elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd trace snd ];
%
p rpr snd = [ trace snd elem sp snd dot snd elem sp snd . . .
trace snd elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd trace snd ];
%
p lpr snd = [ trace snd elem sp snd dot snd elem sp snd . . .
trace snd elem sp snd dot snd elem sp snd . . .
dot snd elem sp snd ];
%
p asp snd = [ dot snd elem sp snd trace snd elem sp snd . . .
dot snd elem sp snd dot snd elem sp snd . . .
trace snd elem sp snd dot snd ];
%
p int snd = [ dot snd elem sp snd dot snd elem sp snd . . .
trace snd elem sp snd trace snd elem sp snd . . .
dot snd elem sp snd dot snd ];
%
disp ( empty char ) ; disp ( empty char ) ;
%
% i n t e r f a c e g r a f i c a para l e i t u r a do t e x t o
%
prompt = { ”Texto ” } ;
title = ”Digite o texto a ser codificado ”;
rowscols = [1 , 60];
defaults = { ” D i g i t e a q u i e p r e s s i o n e OK. ” } ;
%
cell array s t r = i n p u t d l g ( prompt , t i t l e , r o w s c o l s , d e f a u l t s ) ;
% t e s t a de u s u a r i o e s c o l h e u OK ou CANCEL
i f ( isempty ( c e l l a r r a y s t r ) )
%
disp ( empty char ) ; disp ( empty char ) ;
disp ( ” A p l i c a t i v o f i n a l i z a d o c o r r e t a m e n t e . ” ) ;
disp ( empty char ) ; disp ( empty char ) ;
%
return
end
%
text to translate = c e l l a r r a y s t r {1 ,1};
%
disp ( empty char ) ; disp ( empty char ) ;
disp ( ’ Texto d i g i t a d o : ’ ) ;
disp ( [ ’ { ’ , t e x t t o t r a n s l a t e , ’ } ’ ] ) ;
disp ( empty char ) ;
% for testing . . .
%
%t e x t t o t r a n s l a t e = . . .
% input ( ’ Digite o texto a ser codificado : ’);
% i n i c i a l i z a c a o dos v e t o r e s de c o d i f i c a c a o
%
% i n i c i a l i z a c a o para padrao t e x t u a l
morse str = [ left delimiter char ];
s t r e t c h s p s t r = empty char ;
%
% i n i c i a l i z a c a o para s o n s
morse snd = [];
stretch sp snd = [ ] ;
%
for i n d s = 1 : t e x t l e n
symbol to translate = text to translate ( ind s ) ;
%
i f ( s y m b o l t o t r a n s l a t e ˜= b l a n k c h a r )
morse str = [ morse str s t r e t c h s p s t r ] ;
morse snd = [ morse snd s t r e t c h s p s n d ] ;
end
%
switch ( s y m b o l t o t r a n s l a t e )
%
case { b l a n k c h a r }
morse str = [ morse str word sp str ] ;
morse snd = [ morse snd word sp snd ] ;
%
case { ’ a ’ ’A ’ }
morse str = [ morse str A str ] ;
morse snd = [ morse snd A snd ] ;
case { ’ b ’ ’B ’ }
morse str = [ morse str B str ] ;
morse snd = [ morse snd B snd ] ;
case { ’ c ’ ’C ’ }
morse str = [ morse str C str ] ;
morse snd = [ morse snd C snd ] ;
case { ’ d ’ ’D ’ }
morse str = [ morse str D str ] ;
morse snd = [ morse snd D snd ] ;
case { ’ e ’ ’E ’ }
morse str = [ morse str E str ] ;
morse snd = [ morse snd E snd ] ;
case { ’ f ’ ’F ’ }
morse str = [ morse str F str ] ;
morse snd = [ morse snd F snd ] ;
case { ’ g ’ ’G ’ }
morse str = [ morse str G str ] ;
morse snd = [ morse snd G snd ] ;
case { ’ h ’ ’H ’ }
morse str = [ morse str H str ] ;
morse snd = [ morse snd H snd ] ;
case { ’ i ’ ’ I ’ }
morse str = [ morse str I s t r ] ;
morse snd = [ morse snd I s n d ] ;
case { ’ j ’ ’ J ’ }
morse str = [ morse str J str ] ;
morse snd = [ morse snd J snd ] ;
case { ’ k ’ ’K ’ }
morse str = [ morse str K str ] ;
morse snd = [ morse snd K snd ] ;
case { ’ l ’ ’L ’ }
morse str = [ morse str L str ] ;
morse snd = [ morse snd L snd ] ;
case { ’m’ ’M’ }
m o r s e s t r = [ m o r s e s t r M str ] ;
morse snd = [ morse snd M snd ] ;
case { ’ n ’ ’N ’ }
morse str = [ morse str N str ] ;
morse snd = [ morse snd N snd ] ;
case { ’ o ’ ’O ’ }
morse str = [ morse str O str ] ;
morse snd = [ morse snd O snd ] ;
case { ’ p ’ ’P ’ }
morse str = [ morse str P str ] ;
morse snd = [ morse snd P snd ] ;
case { ’ q ’ ’Q ’ }
morse str = [ morse str Q str ] ;
morse snd = [ morse snd Q snd ] ;
case { ’ r ’ ’R ’ }
morse str = [ morse str R str ] ;
morse snd = [ morse snd R snd ] ;
case { ’ s ’ ’ S ’ }
morse str = [ morse str S str ] ;
morse snd = [ morse snd S snd ] ;
case { ’ t ’ ’T ’ }
morse str = [ morse str T str ] ;
morse snd = [ morse snd T snd ] ;
case { ’ u ’ ’U ’ }
morse str = [ morse str U str ] ;
morse snd = [ morse snd U snd ] ;
case { ’ v ’ ’V ’ }
morse str = [ morse str V str ] ;
morse snd = [ morse snd V snd ] ;
case { ’w ’ ’W’ }
morse str = [ m o r s e s t r W str ] ;
morse snd = [ morse snd W snd ] ;
case { ’ x ’ ’X ’ }
morse str = [ morse str X str ] ;
morse snd = [ morse snd X snd ] ;
case { ’ y ’ ’Y ’ }
morse str = [ morse str Y str ] ;
morse snd = [ morse snd Y snd ] ;
case { ’ z ’ ’ Z ’ }
morse str = [ morse str Z str ] ;
morse snd = [ morse snd Z snd ] ;
%
case { ’ 0 ’ }
morse str = [ morse str n0 str ] ;
morse snd = [ morse snd n0 snd ] ;
case { ’ 1 ’ }
morse str = [ morse str n1 str ] ;
morse snd = [ morse snd n1 snd ] ;
case { ’ 2 ’ }
morse str = [ morse str n2 str ] ;
morse snd = [ morse snd n2 snd ] ;
case { ’ 3 ’ }
morse str = [ morse str n3 str ] ;
morse snd = [ morse snd n3 snd ] ;
case { ’ 4 ’ }
morse str = [ morse str n4 str ] ;
morse snd = [ morse snd n4 snd ] ;
case { ’ 5 ’ }
morse str = [ morse str n5 str ] ;
morse snd = [ morse snd n5 snd ] ;
case { ’ 6 ’ }
morse str = [ morse str n6 str ] ;
morse snd = [ morse snd n6 snd ] ;
case { ’ 7 ’ }
morse str = [ morse str n7 str ] ;
morse snd = [ morse snd n7 snd ] ;
case { ’ 8 ’ }
morse str = [ morse str n8 str ] ;
morse snd = [ morse snd n8 snd ] ;
case { ’ 9 ’ }
morse str = [ morse str n9 str ] ;
morse snd = [ morse snd n9 snd ] ;
%
case { ’ . ’ }
morse str = [ morse str p pnt str ] ;
morse snd = [ morse snd p p n t s n d ] ;
case { ’ / ’ }
morse str = [ morse str p f r c s t r ] ;
morse snd = [ morse snd p f r c s n d ] ;
case { ’ , ’ }
morse str = [ morse str p vrg str ] ;
morse snd = [ morse snd p v r g s n d ] ;
case { ’ : ’ }
morse str = [ morse str p 2pt str ] ;
morse snd = [ morse snd p 2 p t s n d ] ;
case { ” ’ ”}
morse str = [ morse str p aps str ] ;
morse snd = [ morse snd p a p s s n d ] ;
case { ’− ’ }
morse str = [ morse str p hfn str ] ;
morse snd = [ morse snd p h f n s n d ] ;
case { ’ ) ’ }
morse str = [ morse str p rpr str ] ;
morse snd = [ morse snd p r p r s n d ] ;
case { ’ ( ’ }
morse str = [ morse str p l p r s t r ] ;
morse snd = [ morse snd p l p r s n d ] ;
case { ’ ” ’ }
morse str = [ morse str p asp str ] ;
morse snd = [ morse snd p a s p s n d ] ;
case { ”? ”}
morse str = [ morse str p i n t s t r ] ;
morse snd = [ morse snd p i n t s n d ] ;
%
otherwise
disp ( empty char ) ; disp ( empty char ) ;
e r r m s g = [ ” I n v a l i d v a l u e : <” , ...
symbol to translate , . . .
”> ! ! ! ” ]
error ( e r r m s g ) ;
%
endswitch
%
i f ( s y m b o l t o t r a n s l a t e == b l a n k c h a r )
s t r e t c h s p s t r = empty char ;
stretch sp snd = [ ] ;
else
stretch sp str = symbol sp str ;
s t r e t c h s p s n d = symbol sp snd ;
end
%
end
%
disp ( empty char ) ; disp ( empty char ) ;
%
disp ( ’ Texto c o d i f i c a d o em Morse : ’ ) ;
disp ( m o r s e s t r )
%
disp ( empty char ) ; disp ( empty char ) ;
%
t i t l e = ”Texto c o d i f i c a d o em Morse ” ;
msg = { ”Texto o r i g i n a l : ” ,
blank char ,
[ ’{ ’ , text to translate , ’} ’ ] ,
blank char ,
blank char ,
”Texto c o d i f i c a d o : ” ,
blank char ,
morse str
blank char ,
blank char ,
” P r e s s i o n e OK para o u v i r . ” ,
};
h e l p d l g ( msg , t i t l e ) ;
%
s o u n d s c ( morse snd , Fs )
% c o n t r o l e de fim do l o o p
%
% BTN = q u e s t d l g (MSG, TITLE , BTN1, BTN2, BTN3, DEFAULT)
%
msg = ”O que d e s e j a a g o r a ? ” ;
title = ” C o d i f i c a d o r Morse ” ;
b pos = ”Codificar outro texto ” ;
b neg = ”Sair ”;
d e f a u l t = b pos ;
%
c h o i c e y n y = q u e s t d l g ( msg , t i t l e , b pos , b neg , d e f a u l t ) ;
u n t i l ( strcmp ( c h o i c e y n y , b neg ) )
%
%s a v e m o r s e p a d r o e s e s o n s d a t
% informa o f i n a l do a p l i c a t i v o
disp ( empty char ) ; disp ( empty char ) ;
disp ( ” A p l i c a t i v o f i n a l i z a d o corretamente . ” ) ;
disp ( empty char ) ; disp ( empty char ) ;
%
% EOF
%