Arduino – Exibindo e lendo dados da serial

Arduino – Exibindo e lendo dados da serial

Nesta prática você vai aprender a utilizar o monitor serial da IDE do Arduino para exibir e ler dados digitados.

Um dos principais recursos do Arduino é a comunicação serial (UART), pois é a partir dela que podemos enviar o código para a placa, requisitar informações de sensores e módulos, e enviar comandos para que o Arduino execute uma ação:

img01_arduino_exibindo_e_lendo_dados_da_serial

A seguir você vai aprender a exibir informações no monitor serial e enviar comandos para o Arduino através da serial.

Se você ainda não instalou a IDE do Arduino, acesse o link abaixo e em seguida retorne para continuar:

Arduino – Instalação e Configuração da IDE no Windows

Exibindo informações no monitor serial:

Para este primeiro procedimento você vai precisar apenas do Arduino com Cabo USB para conectar ao computador. Se ainda não possui o Arduino, você pode adquirir o seu na loja virtual da MasterWalker Shop.

Não será necessário esquema de ligação, pois vamos utilizar o LED conectado ao pino digital 13 do Arduino.

Abaixo está o código que você deve carregar no Arduino. Conecte o Arduino ao computador, abra a IDE, confira a placa e a porta selecionada e carregue o código na placa:

Terminado o carregamento do código abra o monitor serial para ver as informações em tempo real:

img02_arduino_exibindo_e_lendo_dados_da_serial

Veja que no monitor serial está sendo exibido o estado atual do LED. A informação é atualizada no monitor de acordo com o intervalo que foi definido no código, no caso, a cada 3 segundos. O código está todo comentado para que você possa ler e entender o que cada linha faz.

Lendo dados na entrada do monitor serial:

Agora o que vamos fazer é enviar um comando ao Arduino através do monitor serial e em resposta ao comando enviado o LED do pino 13 irá acender ou apagar e a informação será apresentada no monitor.

Novamente não vamos precisar de esquema de ligação.

Carregue o código abaixo na placa:

 

Terminado o carregamento do código abra o monitor serial. No monitor temos o campo para digitar o comando e o botão de ENVIAR está ao lado do campo:

img03_arduino_exibindo_e_lendo_dados_da_serial

Digite a letra ‘b’ (sem aspas), dê enter ou clique no botão ENVIAR e veja que o LED conectado ao pino 13 vai alterar o estado para ligado e no monitor serial será mostrado esta informação. Digite a letra ‘b’ novamente e o LED será desligado e a informação será mostrada no monitor:

img04_arduino_exibindo_e_lendo_dados_da_serial

Note que utilizamos a mesma letra (b) para controlar o LED. Dentro do código há uma variável chamada ‘status’ que faz o controle do estado atual do LED. Leia o código e entenda o que cada linha está fazendo.

Exibir informações no monitor serial e enviar dados ao Arduino através dele é um recurso extremamente útil. Em muitas situações em que é necessário fazer debug de código, o monitor serial será seu grande aliado!

Gostou deste tutorial? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.



Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação, Técnico em Eletroeletrônica, Fundador e Diretor da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 16 comentários para esta postagem
  1. Evair Daudt Junior às 20:31

    Olá. Tenho uma dúvida. Preciso ler um cartão RFID e enviar os dados para um “textbox”. Tem como? VAleu

  2. Leandro G. Ribeiro às 17:25

    Cara, que demais! estava com dificuldade em receber uma string com varios dados separados por virgula e separa-los. mas com essa função strstok() do exemplo deu certinho. Valew mesmo pela dedicaçõ em ajudar. VAlEW

  3. Tony às 18:08

    Boa noite!
    Como faço para mostrar no LCD o estado do led se ele esta ligado ou desligado?

  4. Leosito às 21:00

    Olá Euler boa noite queria lhe pedir uma ajuda se possível.
    Quero enviar e receber dados pela serial da placa, mas o que acontece, quando uso a porta USB, envio e recebo normalmente, mas quando uso os pinos tx1 e rx0 chega somente caracteres especiais, não chega o que mando.
    Vou esplicar um teste simples que fiz.
    Coloquei o Arduino para imprimir de 2 em 2 segundos os números de 1a5 na porta serial, então abri o programa Hércules e fiz a leitura da porta. Quando mando ler a porta serial correspondente a do cabo USB, chega os dados certinho, mas quando retiro o cabo USB, e mando ler pelos pinos tx1 e rx0 conectado a porta serial do meu PC só chega alguns caracteres, que não é o que foi enviado. Será que tem algo que esteja faltando fazer para que funcione.

  5. Waldiney às 22:44

    Boa Noite, Euler Parabens pelo artigo, estou tentando fazer um led ascender e apagar por um mesmo botão, atraves da porta serial no arduino, poderia me ajudar?

    Obs. sou novo no ramo rsrsr

  6. Marco Antônio às 00:44

    No LCD usa se os seguintes comandos para posicionar o cursor:

    lcd.setCursor(0,0);
    lcd.setCursor(0, 1);

    Como faz para posicionar o cursor no Monitor serial do Arduino?

  7. Rony às 11:33

    Rapaz, to tentando enviar palavras pelo monitor, mas to tendo problemas com a String, pode me dar uma luz?

    • Euler Oliveira Autor às 11:35

      Olá Rony.

      Agradeço pelo comentário!

      Pra tentar te ajudar é preciso que você dê mais detalhes do problema que está tendo.

      • Rony às 18:18

        Bom, simplificando, eu preciso acionar um led com uma palavra. Eu consegui usando o char com o caractere que eu queria entre apóstrofos (‘ ‘), porém o mesmo eu não consigo usando uma palavra inteira com o String. Não sei se ficou claro.
        Exemplo, preciso acionar ao escrever “feliz”, mas só consigo usando o char para a letra F e não a string para a palavra toda. Entendeu? Desculpa, sou péssimo pra explicar essas coisas.

  8. Matheus às 11:46

    A pergunta que farei pode ser até um bocado óbvia, mas eu tenho pesquisado sobre tem 2 dias inteiros e ainda não achei nada. Estou trabalhando com um sensor de condutividade(mais especificamente o EZO Circuit da Atlas Scientific) e ele funciona através de comandos digitados pelo usuário no monitor serial( por exemplo, eu digito “R, 30” e o sensor lê a condutividade por 30 segundos, ou eu digito “cal, x” e o sensor calibra, coisas assim), porém eu preciso que o sensor tome medidas a cada x tempo sem que eu precise ficar digitando o comando pro monitor serial. Então minha dúvida de hoje é, tem como eu mandar comandos pro Serial, como se eu tivesse digitando-os no monitor serial, totalmente através do código do arduino? Não sei se me fiz claro, tenho a impressão de que é uma dúvida totalmente básica, mas me peguei sem saber isso, agradeço desde já a atenção.

    • Euler Oliveira Autor às 14:14

      Olá Matheus.

      Agradeço pelo comentário!

      É possível sim.

      Pelo pouco que vi na documentação deste sensor e no código, você pode tentar usar o código que estou deixando abaixo. Neste código foram inseridas as seguintes linhas:

      #include

      SimpleTimer timer;

      timer.setInterval(2000L, enviaComando);

      void enviaComando(){

      inputstring = "cal, x";
      input_string_complete = true;
      }

      timer.run();

      E foi comentado o seguinte trecho:

      void serialEvent() {
      inputstring = Serial.readStringUntil(13);
      input_string_complete = true;
      }

      Como não tenho este tipo de sensor, não sei se irá funcionar de primeira. Faça testes e caso queira adicionar novos comandos, basta inseri-los na função envia Comando ou criar novas funções e seus respectivos intervalos de execução. Coloquei 2 segundos de intervalo, mas você pode mudar para um tempo menor ou maior.

      Segue o código (exemplo com Placa Uno R3):

      • Matheus às 09:07

        Muito obrigado, cara! Realmente me ajudou demais. Assim que eu conseguir testar volto aqui pra dar o feedback e considerações! A atenção e velocidade de resposta que você tem para com os comentários desse blog são fenomenais, parabéns pelo ótimo trabalho! Informação de qualidade e muita prestatividade.