Arduino – Comunicação entre PC e Arduino [Parte 2]

Depois de um semestre super tenso, aqui estou voltando a publicar artigos, e seguindo os do Arduino.

Bom, agora nesta segunda parte vamos comunicar novamente com o Arduino mas desta vez, vamos enviar um carácter (char) e analisar o que ele irá retornar, que será o que programarmos.

Segue abaixo o código-fonte C do Microcontrolador:

Novamente no lugar de digitar o código eu prefiro enviar uma imagem porque assim você é forçado a digitar linha por linha e acaba vendo os passos.

Em termos de código é bem simples, usei apenas lógica básica de programação como condicional (if e else) e operadores como &&, mas algo novo surgiu que é o descrito abaixo:

Serial.print(” “); //Com esta linha você escreve na Serial ou seja, você envia algo para o computador no nosso caso

O que fiz no programa C foi analisar a entrada dos caracteres o que me interessa neste exemplo são os caracteres (a,b e r), a sendo 97, b 98 e r 114, quando a retornara a mensagem que está no código, quando b outra mensagem e quando r coloquei meu nome.

O programa que fiz para realizarmos este teste, tem algumas adaptações a serem corrigidas como quebra de linha da janela do Log depois de receber os dados da Serial, segue abaixo a tela do programa.

Ainda esta na primeira versão, realizei o tratamento de exceção apenas da parte de comunicação, os erros que o usuário pode comentar ainda não tratei hehe, mas é simples você deve verificar a COM que o Arduino esta usando, ele já detecta automaticamente as COM do seu computador e clicar no botão com ícone de power logo abaixo.

Ae logo do lado direito temos Enviar Comandos, Limpar log a cada comando e Enviar, no primeiro você irá digitar o carácter para enviar via serial, o Limpar log é para não ficar enchendo de retornos no Log e o Enviar é o que comunica com o Arduino.

Segue abaixo download do aplicativo.

Download do Aplicativo:  https://www.dropbox.com/sh/7n6b17hj6fcoc4t/N4my5O_qYt/ComArduino.exe

OBS: Por algum problema de configuração, do software ou Arduino este software pode apresentar erros, pois não trabalhei com Tratamento de Exceções “ainda”, mas como já mencionei este será um software que irei adaptar e ir utilizando em vários tópicos, com o decorrer ire personalizando, atualizando e corrigindo os problemas.

Duvidas e sugestões:  [email protected]

Share Button

CC BY-NC-SA 4.0 Arduino – Comunicação entre PC e Arduino [Parte 2] by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

  • humberto henrique

    tem como voce me enviar o codigo do form?

  • Mateus

    Cara, excelente seu exemplo, porém, poste o código fonte para download pra gente, iria facilitar muito a vida… obrigado.

    • Como várias pessoas já me perguntaram isso, irei fazer um post voltado a comunicação serial usando Delphi e Arduino, utilizando componentes e com o código-fonte do programa.
      Já esta na fila dos posts a serem publicados.

      Só vai ter que aguardar um pouco porque ando bem ocupado com serviço e faculdade.

  • Fabio

    Claiton muito bom, já salvei nos favoritos.

    Eu estou tentando fazer um projeto de automação de um equipamento, esse equipamento vai me retornar um sinal( sensor ou acionamento fim de curso) para dentro do arduino nano. A partir dali eu envio os dados para dentro do computador através da conversão através do chip ftdi (TTL para USB). Devo criar um programinha em c++ pra dizer oque aconteceu no equipamento, mas o problema é que não sei os códigos fontes básicos para o programa mostrar ou só registrar que foi acionado algo no equipamento.
    Como faço para o programa que vou criar ler esses dados que vão entrar através da usb? Esse aplicativo para comunicação arduino que você criou é exatamente o que eu procurava, como fez pra ele ler o retorno de ” serial.print(); ” . ate…

    • Opa Fabio, que legal seu projetinho.

      Então vou explicar por partes, esse programa eu não fiz “amarrado” a aplicação do blog e sim para qualquer comando para ser enviado assim qualquer um poderia usar esta aplicação, pois bem.

      Então na minha aplicação se eu digitar os caracteres (a, b e r) ele retorna algo no caso digitando r retorna meu nome, se digitar qualquer outra coisa irá retornar “comando ou sintaxe incorreta”.
      Na aplicação que estará rodando no computador você programa no arquivo qualquer numero ou letra para verificar como eu fiz e depois dentro da condição o que deve ser retornado, porque a aplicação sempre ficará escutando tudo que receber pela serial.
      Ele conta o que chega na serial e monta um buffer certinho, então não tem limites até os testes que realizei.
      Agora escrever em C++ vai ser mais divertido porque você terá que realizar um tratamento na comunicação serial como limpar o buffer antes e depois de receber, vai ter que ter um timer junto porque se não realizar estes tratamentos começa a vir coisa sem sentido na tela.
      Mas utilize este aplicativo que forneci, até na faculdade que estudo o pessoal usa hehe.

      Espero ter ajudado, abraço.

  • Fabio

    Eu também não consegui fazer o seu aplicativo rodar junto com o arduino nano, ele só funciona com o Uno?

    • Neste código do Arduino no exemplo, não tem nenhuma amarração quanto a board utilizada, o cuidado que se deve ter é selecionar sua placa na IDE do Arduino indo em Tools > Board > Arduino UNO ou Arduino Nano w/ ATmega328 e dentre os diversos modelos.

  • O aplicativo não rodou também no ubuntu 12.04, pelo wine. Ja foi testado alguma vez? E quando vou no Serial Monitor, digito as letras correspondentes, mas ele me retorna o que eu programei pra letra e o que eu programei pra quando fosse digitada uma letra errada. Como poderia consertar isso?

  • Vitor Alcântara

    Mano Muito bom esse tutorial… eu preciso tirar uma dúvida…

    é possível através dessa serial eu enviar comandos de ligar e desligar, ou ajustar uma determinada velocidade (como se faz com um potenciômetro por exemplo)?

    • 1) Sim é possível enviar comandos de ligar e desligar é só implementar em ambos lados (Arduino e Aplicativo Desktop)

      2) “como se faz com um potenciômetro por exemplo”. Essa questão eu não entendi. Se for para ler um pot. é só conectar no 5V e GND e o OUT em alguma porta analógica do Arduino e ler esta porta.

  • Fabiano Oliveira

    Boa noite Cleiton!
    Tenho 1 Painel Eletrônico de leds de 1,50cm x 0,20cm (aqueles com letreiros) e não consigo programar pois não tenho o software, ele usa um cabo serial rs 232, gostaria de saber se através do “Arduino IO LED” eu consigo acessar pra programar o que preciso escrever, ficaria muito agradecido se me ajudasse pois esta muito difícil de encontrar o software deste painel. Sou leigo no assunto mas gosto de pesquisar e ir atras desses “PROBLEMINHAS” do dia a dia, a marca dele é microhard MPM 1901.Fico muito agradecido e obrigado desde já,grande abraço.Fabiano Oliveira

    • Fabiano, não conheço sobre este Painel Eletrônico. Não veio nenhum CD, Manual ou algo assim com ele? Porque comunicar via serial tudo bem, mas teria que saber a “palavra” ou os comandos para programar ele, sem isso em mãos que no Manual ou um CD era para conter fica difícil lhe ajudar.

  • Mauro Lana

    Eu estou criando um programa e C#, e já tenho os codigo do arduino no qual eu preciso importar para o programa, porem não sei como importas essas informações que esta no arduino para o banco de dados SQLITE,

    Esses são os codigos gerados pelo arduino que eu preciso ler para salvar no banco.

    Serial iniciado
    Hora do sistema atualizado com RTC
    21:13:19 2 10 2014
    Lendo Memoria…
    #45FFBFFF;01;03;22;39;29;08;2014;
    #45FFBFFF;01;03;26;55;29;08;2014;
    #45FFBFFF;01;03;26;55;29;08;2014;
    #45FFBFFF;01;03;26;55;29;08;2014;
    #45FFBFFF;01;03;26;55;29;08;2014;
    #45FFBFFF;01;03;31;11;29;08;2014;
    #45FFBFFF;01;03;39;43;29;08;2014;
    #45FFBFFF;01;03;39;43;29;08;2014;
    #45FFBFFF;01;03;39;43;29;08;2014;
    #45FFBFFF;01;04;09;35;29;08;2014;
    #45FFBFFF;01;04;09;35;29;08;2014;
    #45FFBFFF;01;04;13;51;29;08;2014;
    #45FFBFFF;01;04;13;51;29;08;2014;
    #45FFBFFF;01;04;13;51;29;08;2014;
    Leitura Finalizada!
    Modo Normal

    Help!!!

    • Não entendi a parte de “importar para o programa”, o que você vai importar?
      Não sei como você esta pensando, mas eu faria com que o Arduino apenas fosse consultado ou por algum evento temporal enviasse as informações para a aplicação C# e esta aplicação faria a conexão e inserção dos dados no SQLite, é assim que esta pensando?

      Abraço