Como acadêmico de um curso de engenharia, utilizo muito o MATLAB para simulação matemática.
- Deixa ser chato Hamilton conta logo como comunicar o MATLAB com o ARDUINO. Tá bom vamos lá!!!
Mas primeiro um pouco de teoria.
Como foi visto no post “O que é Arduino” o mesmo é uma placa de fácil manipulação e programação, mas podemos usar o Arduino também como uma interface de comunicação entre o PC.
Em muitos projetos não é necessário que o Arduino trabalhe como um processador independente, mas como um dispositivo intermediário através do qual há a conexão de sensores, leds, motores, etc a um computador. Nesta configuração, a placa e o PC ficam conectados e se comunicam através da porta USB/serial. Um aplicativo executado no PC (que no nosso caso será a classe arduino.m instanciado) interage com outros aparelhos conectados à placa.
Para que essa interação seja feita é necessário adicionar o firmware adiosrv.pde que fará o papel de informar os status e as ações do Arduino. Abaixo segue um diagrama de como isso funciona.
Vamos agora para pratica:
- Faça o download do arduino-matlab em http://www.mathworks.com/academia/arduino-software/arduino-matlab.html, após o download pegue o arquivo adiosvr.pde que encontra-se dentro da pasta adiosvr e grave no Arduino via IDE de programação. Caso não saiba como fazer isso, assista o vídeo do post “O que é Arduino” .
- Abra o MATLAB, adicione o arquivo arduino.m no WORKSPACE, a partir desse momento o MATLAB já esta pronto para se comunicar com o Arduino.
- Dentro do arquivo que foi baixado arduino-matlab contém diversos exemplos mas segue abaixo um exemplo de utilização de escrita e leitura digital e analógica, como também a disposição dos pinos na placa do Arduino.
[sourcecode language="matlab"]
% conectando ao arduino
a=arduino('COM5')
% especificando os modos que os pinos 4, 13 e 5 iram trabalhar
a.pinMode(2,'input');
a.pinMode(13,'output');
a.pinMode(9,'output');
% Efetuando uma leitura digital no pino 4
dv=a.digitalRead(4)
% escrevendo o que tem na variavel dv (0 or 1) no pino 13
a.digitalWrite(13,dv)
% lendo a entrada analógica no pino 5 (NB: não é o pino 5 digital)
av=a.analogRead(5)
% normalizando av de 0:1023 para 0:255
av=(av/1023)*255
% escrevendo a saida av no pino 9 (pwm)
a.analogWrite(9,av)
% fechando a seção
delete(a)
[/sourcecode]
Segue abaixo imagens de outro código executado no command do MATLAB junto com o hardware.
Para mais informações segue um PDF feito pelo Giampiero Campa mostrando mais detalhadamente com usar essa ferramenta: http://www.mathworks.cn/matlabcentral/fileexchange/27843-arduino-io-package-slides-and-examples
Segue também um target para utilizar junto com o SIMULINK: http://www.mathworks.com/academia/arduino-software/arduino-simulink.html