
Neste tutorial, iremos aprender a fazer o Arduino se comunicar com o PC através de texto enviado pela porta serial.
O Arduino UNO (e vários outros modelos) consegue se comunicar com o PC através da porta USB. Essa comunicação se dá através de um processo chamado “serial”, que podemos acessar pelo “Monitor Serial” na IDE do Arduino. Além disso, essa comunicação pode ser feita em duas vias, ou seja, enviando e recebendo dados.
- Um Arduino UNO.
- Um Cabo USB.
Conecte o Arduino no PC usando o cabo USB, abra a IDE, selecione a placa e a porta. Caso não lembre como fazer, clique aqui.
1 2 3 4 5 6 7 8 9 10 11 |
void setup() { //Inicializa a porta serial Serial.begin(9600); while(!Serial) { ; //Aguarda conexão da porta. Necessário apenas para placas com USB nativa (como o Arduino Leonardo) } //Fim do while } //Fim da setup void loop() { Serial.println("Um elefante incomoda muita gente"); delay(1000); } |
Dentro do setup, o comando Serial.begin(9600);, significa exatamente “inicie a (porta) Serial em 9600 (de velocidade)”. Ele é necessário para informar que vamos usar a porta serial e que a comunicação será em determinada velocidade. O valor dessa velocidade pode ser escolhido, conforme a página de referência do arduino. Usamos a velocidade de 9600, pois é reconhecida por muitos equipamentos.
O comando while(!Serial){;} é usado para garantir que a placa está conectada e inicializada corretamente antes que se faça qualquer comunicação. Sua interpretação é: “enquanto Serial não for verdade, faça nada”. Em um próximo tutorial explicaremos melhor o while.
Isso é tudo que é necessário para configurar a porta serial. Em outros programas, podemos reaproveitar essa parte do código dentro do setup para ter acesso à este tipo de comunicação.
Dentro do loop, o comando Serial.println(“…”); serve para “imprimir/enviar” (“print”) na porta serial a mensagem que está entre as aspas. Em seguida, temos delay(1000);, que serve para fazer o Arduino esperar um segundo antes de voltar a executar comandos.
Após fazer “Upload” do código, podemos visualizar o resultado abrindo o Monitor Serial:

Abrir o Monitor Serial
O Monitor Serial tem a seguinte aparência:

Monitor Serial
A cada segundo, uma nova linha da frase do elefante aparece. Note, que na parte de baixo da tela está selecionada a mesma velocidade do setup do programa.
Depois de mostrar “um elefante”, iremos contar até 99 elefantes!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void setup() { //Inicializa a porta serial Serial.begin(9600); ; //Aguarda conexão da porta. Necessário apenas para placas com USB nativa (como o Arduino Leonardo) } //Fim do while } //Fim da setup void loop() { Serial.println("Um elefante incomoda muita gente"); delay(1000); //Aguarda um segundo int quantos; //Quantos elefantes int vezes; //Número de "incomodam" for(quantos = 2; quantos < 100; quantos = quantos + 1) { //Início do for Serial.print(quantos); //Escreve a quantidade Serial.println(" elefantes incomodam muito mais!"); delay(1000); } //Fim do for de quantos } //Fim do loop |
O resultado no monitor serial é assim:

Mais elefantes
Existem algumas coisas novas nesta versão do programa. A primeira delas é o comando Serial.print. Anteriormente, usamos o Serial.println, que, além de enviar o texto, já avançava para a próxima linha e por isso tem as letras ln no final (significa “linha”). O comando Serial.print envia o texto, porém permite que mais coisas sejam acrescentadas na mesma linha. Também não usamos aspas dentro do comando, isto faz com que o valor da variável seja impresso, por isso aparecem os números de 2 a 99 no começo das frases.
Outra novidade é int quantos; que avisa a IDE que vamos usar uma variável chamada quantos que pode receber números inteiros (int). Ela será usada para saber quantos elefantes estamos contando.
Em seguida, temos o for(…) que é usado para repetir um bloco de comandos e contar quantas vezes essa repetição acontece. Dentro dele, entre parênteses, temos três partes: quantos = 2, indica que a contagem começa em 2; quantos < 100, indica que vamos contar enquanto for menos que 100, ou seja, 99; quantos = quantos + 1, que diz quanto a contagem muda ao final do bloco, nesse caso a contagem aumenta 1 a cada vez.
Fizemos algumas alterações para que o programa repita a palavra “incomodam” várias vezes dentro da frase. Tente entender o funcionamento dos dois comandos for um dentro do outro.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
void setup() { //Inicializa a porta serial Serial.begin(9600); while(!Serial) { ; //Aguarda conexão da porta. Necessário apenas para placas com USB nativa (como o Arduino Leonardo) } //Fim do while } //Fim da setup void loop() { Serial.println("Um elefante incomoda muita gente"); delay(1000); //Aguarda um segundo int quantos; //Quantos elefantes int vezes; //Número de "incomodam" for(quantos = 2; quantos < 100; quantos = quantos + 1) { //Início do for Serial.print(quantos); //Escreve a quantidade Serial.print(" elefantes"); for(vezes = 0; vezes < quantos; vezes = vezes + 1) { //Início do for Serial.print(" incomodam"); delay(500); } //Fim do for de vezes Serial.println(" muito mais!"); delay(1000); } //Fim do for de quantos } //Fim do loop |

incomodam incomodam incomodam incomodam incomodam incomodam
No próximo tutorial, iremos aprender a fazer o Math Game, jogo de perguntas e respostas com operações matemáticas (multiplicação e divisão), usando o Monitor Serial.
Uno SMD – Arduino compatível
Ideal para iniciantes, o Uno é um Arduino compatível bem capaz, barato e com diversos shields e sensores compatíveis disponíveis. Se você está começando a aprender sobre microcontroladores e Arduinos, esta é a placa perfeita! Ela é a nossa placa principal nos nossos tutoriais de Arduino.
Parabéns pela iniciativa, principalmente para iniciantes como eu, as matérias
são bem comentadas e ilustradas.
Muito obrigado!!
Ficamos muito felizes com o elogio, pois nossa intenção é fazer conteúdos de qualidade! E melhorar sempre, portanto, críticas construtivas são bem-vindas também
Olá Mauricio,
Muito Bacana o passo a passo, estou querendo implementar um controle de acesso ao restaurante de minha Instituição e acredito que o arduino possa me ajudar nisso. Vi que participou do projeto Orpas no FabLab, e gostaria de saber se existe previsão de divulgação do programa feito em processing para este projeto no github.
Desde já agradeço.
Ricardo, bom dia!
Acho que já conversamos pelo facebook.com/MauMaker.
Vou divulgar o programa em Processing nos próximos 15 dias. Estou atualizando os comentários no código para facilitar o entendimento. Somente não poderemos divulgar a parte de criptografia por motivos de segurança do sistema da ORPAS, porém se eu puder te ajudar, basta dizer!
Se você tiver alguma experiência com Processing posso enviar o código mesmo sem os comentários, para adiantar suas coisas!
Ola, quero fazer um sistema que mostra a temperatura do PC usando um sensor, mas quero que ao passar certa temperatura, o arduino execute um programa .bat para desligar automaticamante o PC, é possivel?
Oi Mauricio, muito nobre sua intenção de ajudar iniciantes nesta arte de programar.
Valeu parabéns!!