Comunicando-por-puerto-serie

Começamos a programar, mas … porque vamos começar pelas comunicações através da porta série? Não parece o mais adequado. Contudo, quando se programa uma placa controladora, este é a melhor forma de poder fazer o debug (depurar) do código. Quando não sabemos o que se está a passar ou porque razão um programa não funciona como esperávamos, é necessário obter informação durante a sua execução. Ao trabalhar com placas como a ZUM BT 328, o mais simples é enviar esta informação pela porta série e monitoriza-la, por isso … mãos à obra!

Um programa vazio

Todos os programas em Arduino têm a seguinte estrutura mínima:

 

Na função setup, podemos configurar todo o que necessitarmos posteriormente. Na função loop, implementamos o código, que se executará continuamente na placa. Não te preocupes agora se não entenderes nada. O objectivo desta lição é que sejas capaz de comunicar com o ordenador usando a porta série, mesmo que não entendas muito bem que se está a passar.

Entra no Codebender e abre um novo projecto. Vai-se abrir automaticamente, o programa vazio:

codebender_blank

“Olá Mundo” – Começar a comunicar pela porta série

A configuração da porta série deve realizar-se na função setup. Para isso utilizamos o objecto Serial incluído nas livrarias do Arduino. Basta que lhe digas a que velocidade vais querer comunicar com o computador. Esta velocidade és tu que a escolhes, e tipicamente toma os valores 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 ou 115200. A velocidade mais usual é 9600. Este número indica os bits por segundo de informação transferida através da porta série. Obviamente, quanto maior for este número, maior é a velocidade de comunicação. Então, toca a configurar:

 

Este comando inicia a comunicação série a 9600 bits por segundo. Vamos enviar a string Olá Mundo! pela porta série. Como apenas queremos envia-la uma única vez, vamos fazê-lo na mesma função setup:

 

No vídeo seguinte vemos todo o processo de programação. Vais perdoar-me, mas a única placa que tenho à mão é uma ZUM Mega, por isso a placa seleccionada é a Mega e não a ZUM BT. Mesmo assim, é igual para ambas (funciona da mesma forma para qualquer placa Arduino). Todos os vídeos estão gravados em HD 1080p, assim assegura-te que escolhes a melhor qualidade no Youtube.

Tic Tac

Agora vamos criar um relógio de parede. Cada segundo fará tic tac, e para isso programamos a função loop, que se executará continuamente:

 

Vejamos todo o processo em vídeo:

Ecoooo

Para terminar, vamos complicar um pouco mais. Até aqui, escrevemos através da porta série. Agora, vamos receber os dados e escrever o que recebemos:

 

Este código é ligeiramente mais misterioso, por isso vamos explicá-lo rapidamente, mas não te preocupes: esta lição é apenas para aprenderes o que é debugging (depurar). Mais adiante faremos outra lição, sobre comunicação série mais avançada.

A função available() do objecto Serial devolve o número de bytes disponíveis na porta série (para serem lidos). Portanto, quando existirem dados disponíveis (Serial.available()>0) vamos lê-los (Serial.read()) e escrever através da porta série, o mesmo que estamos a ler (Serial.write()).
Como não estamos a incluir a transição automática de linha, o eco vem atrás. Experimenta ver o que acontece se usares println! Sabes porquê?

Vamos ver o último video de hoje. Na próxima lição, veremos (provavelmente) a declaração de variáveis e a sua utilização.

Na secção de downloads, podes encontrar tudo o que é necessário para modificar os vídeos, adicionar legendas ou também adicionar narração. Infelizmente, não podemos partilhar a música, pois tem direitos de autor (que nós pagámos).