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:
1 2 3 4 5 6 7 8 9 |
void setup() { } void loop() { } |
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:
“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:
1 2 3 4 |
void setup() { Serial.begin(9600); //Comunicação série iniciada a 9600 bits/sec } |
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:
1 2 3 4 5 |
void setup() { Serial.begin(9600); //Comunicação série iniciada a 9600 bits/sec Serial.println("Olá Mundo!"); //Enviar "Olá Mundo!" através da porta série } |
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:
1 2 3 4 5 6 7 |
void loop() { Serial.println("tic"); //Escreve "beat"tic" na porta série delay(1000); //Espera 1000 milissegundos Serial.println("toc"); //Escreve "toc" na porta série delay(1000); //Espera 1000 milliseconds } |
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:
1 2 3 4 5 6 |
void loop() { if (Serial.available()>0){ //Se houver informação na porta série Serial.write(Serial.read()); //Escreve na porta série o que foi lido } } |
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).