quarta-feira, 20 de novembro de 2013

Arduino e MatLab - Leitura/Escrita Digital

    Como foi visto no último post daremos o início do estudo de MatLab e Arduino. Nesse primeiro post sobre tal assunto iremos fazer um simples botão de ligar e outro para desligar um LED, usando a interface gráfica do MatLab. Bom, vamos começar!

    Primeiramente, abra seu software MatLab e no COMMAND WINDOW digite tal frase: GUIDE. Na aba Create new GUI escolha a 1ª opção: Blank GUI(default), a figura abaixo ilustra esse passo.

 
     Já com a GUIDE criada colocaremos os respectivos botões de "ON" e "OFF". Para isso selecione a ferramenta pushbutton na paleta:





Na figura acima existe apenas um botão, pela lógica do nosso programa iremos precisar de dois, um para ligar e outro para desligar o led, então coloque 2 botões na sua interface.
    Feito isto iremos agora configurar a cor e o texto dos botões. Clique 2 vezes em cima de um botão e o inspector de controle irá aparecer localize o texto String e digite "ON", depois localize o texto Background Color e selecione a cor verde, faça de manira análoga para o botão "OFF".


    Com isto já feito iremos agora fazer nossa programação. Com o 3º botão do mouse clique em cima de algum do botões e navegue até a função View Callbacks -> Callbacks. Não se assuste com tantas linhas de programação, á maioria é comentário. Agora iremos fazer a parte de  reconhecimento entre o arduino e o MatLab. Localizando a função function NOMEDOARQUIVOQUEFOISALVO_OpeningFcn(hObject, eventdata, handles, varargin) no final dela digite:
global a;
a = arduino('PORTAdeCOMUNICAÇAO');   %Por exemplo 'COM3'
a.pinMode(9,'output');

    Com esse comandos estamos criando uma variável global a que estará conectada na porta que seu arduino está comunicando com seu SO.
    Agora localizando a função function pushbutton1_Callback(hObject, eventdata, handles) digite:

global a;
a.digitalWrite(9, 1);

    Esses comandos que irão setar a porta 9 do arduino como ON.  Já na função function pushbutton2_Callback(hObject, eventdata, handles) iremos digitar:

global a;
a.digitalWrite(9, 0);

    Irá apagar o led quando selecionada essa porta. Bom de maneira geral é assim que funciona nosso 1º projeto com arduino e MatLab. Logo abaixo disponibilizei os arquivos, tanto o .fig e o .m para quem quiser estudar e baixar para teste. 

    E é claro segue também um video do programa rodando.




5 comentários:

  1. Olá Felipe, consegui usar o matlab junto com o arduino, mas gostaria de saber como implementar um função dentro do código do botão para fazer o led piscar.

    Abraço.

    ResponderExcluir
    Respostas
    1. Desculpa a demora em responder.... fiz um programinha simples que irá te ajudar. Nao esta em GUIDE, mas e facil de converter-lo....


      close all;
      clear all;


      %Inicializaçao da porta serial
      delete(instrfind({'Port'},{'COM3'}));
      a=arduino('COM3');
      %declaração do pinos do botão e led respectivamente
      a.pinMode(9,'output');
      %Laço infinito onde testa se o botao foi ou não precionado
      while true
      a.digitalWrite(9, 1);
      pause(1);
      a.digitalWrite(9, 0);
      pause(1)
      end

      Excluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Felipe!!

    É possível conciliar os botões feitos no GUIDE e construção de gráfico?

    Seria algo com; ao acionar o botão dispara um evento no arduino e no momento em que chegar dados na porta serial o matlab constrói um gráfico.

    Falou!

    ResponderExcluir
    Respostas
    1. Diogo, tem como sim, mas me explique melhor oque vc quer fazer.

      Excluir