Académique Documents
Professionnel Documents
Culture Documents
Objetivo Final: implementar um protocolo simples para comunicar os dois pontos, simulando
alguns eventos.
Arduino
USB
Laptop/PC
void keyPressed() {
myPort.write(key);
// manda a tecla pela serial
whichKey = key;
// salva na varivel s pra imprimir depois
}
Para enviar o byte, usamos myPort.write(), que especifica o seguinte: chame a funo write() do
objeto chamado myPort, que do tipo Serial. Isso a Orientao a Objetos do Java.
No se preocupe com isso, v seguindo os exemplos. Se quiser saber, variveis simples
(tecnicamente os tipos bsicos escalares: inteiros, floats, etc) so iguais ao C. Variveis
complicadas (tipos compostos e vetoriais e objetos) devem ser declaradas primeiro e criadas com
new depois.
Por fim, um dado pode vir pelo fio a qualquer momento, e a funo serialEvent() que
especifica o que a gente vai fazer quando um dado chegar.
void serialEvent(Serial myPort) {
inByte = myPort.read();
}
Acima, toda vez que um byte chegar pela porta, simplesmente vamos mandar ler o dado com
myPort.read() e guard-lo na varivel inByte, que ser impressa depois por draw().
Um Breve Exerccio
Eu sei, eu sei, vocs nunca viram a linguagem, esse tutorial seco feito farinha de mandioca crua e
eu j quero exerccio. Acreditem, mais rpido. E no quero aluno PhD em Processing, afinal ; )
Enunciado: Usando o exemplo de String, quero s que a string seja apagada quando o tamanho
dela chegar a 10. Pra apagar uma String s, basta fazer s = ""; e para ver seu tamanho use
s.length() (observe a draw() do exemplo CharactersStrings).
Parte Prtica
Faa as alteraes pedidas anteriormente no exemplo SerialEvent do Arduino e grave com outro
nome. Os programas so chamados de sketches tanto no Arduino quanto no Processing.
Abra o exemplo SerialDuplex do Processing e grave com outro nome. Faa a seguinte
alterao na funo draw() do exemplo, apagando a verso anterior:
void draw() {
background(0);
text("Recebido: "+ char(inByte), 10, 130);
text("Enviado: " + (char)whichKey, 10, 100);
}
Com isto, ao invs de aparecer o cdigo das letras, ns veremos as letras em si (ou seja, veremos 'A'
ao invs de 65).
Passos
1. Compile o programa do Arduino, verifique se no h erros. Baixe ele para a placa com o
boto de Play.
2. Compile e execute o Programa do Processing.
3. Se der erro a configurao da porta serial a ser usada (eu deixei COM4, verifique qual e
altere o programa em Processing na funo setup()).
4. Digite algumas teclas. Letras maisculas e smbolos devem ser recebidos idnticos, letras
minsculas devem ser convertidas em maisculas na tela. Teclas especiais (setas, Home,
shift) tero um caractere maluco impresso ('' no meu PC).
Note que o sistema pode se perder se voc tentar mexer no Arduino com o Processing executando,
pois ambos vo requerer a porta serial para si. Qualquer coisa, feche tudo e abra de novo...
Exerccios
1. Altere o programa do Arduino para fazer o seguinte: se a sequncia de caracteres recebida
for "ABCD", a placa dever enviar ao PC uma exclamao ('!').
2. Altere o programa do Processing para imprimir na tela no s o ltimo caractere recebido,
mas os quatro ltimos.
3. Proponha alguma alterao bacana para o professor.
4. Aprenda vetores lendo a documentao do Processing e do Arduino e refaa os itens 1 e 2
com vetores.
Note, finalmente, que usar Strings no a maneira correta de fazer comunicao de dados: usamos
vetores (arrays), pois podemos ter dados numricos, como uma foto em JPEG. Na prxima parte,
usaremos vetores.