A placa Arduino suporta cinco funções do MATLAB para controle de sinais analógicos. As funções são:
- configurePin(): Usada para definir qual pino sera entrada/saída;
- writePWMVoltage(): Usada paara escrever a tensão PWM no pino digital;
- writePWMDutyCycle(): Usada para setar o ciclo PWM no pino digital;
- readVoltage(): Usada para leitura analógica do pino referente.
Munidos dessas informações, iremos agora começar nosso tutorial. Teremos três experiências para fazer, que serão:
- Controle do LED RGB;
- Controle de luminosidade;
- Leitura analógica de um potenciômetro.
LET’s GO!
Controle de LED RGB
O objetivo desse experimento é realizar o controle de um LED RGB através das portas PWM. Se você possuir um Arduino MEGA 2560, as portas PWM serão da 2 a 13, mas se você estiver utilizando um Arduino UNO, cuidado! Pois as portas PWM serão: 3, 5, 6, 9, 10 e 11.
Antes de continuarmos, deveremos nos familiarizar com o LED RGB:
Note que o LED RGB possui mais terminais que um LED comum. Esses terminais a mais são responsáveis por cada cor. A disposição desses terminais é:
- Terminal 1: Vermelho;
- Terminal 2: Pino comum (anodo/catodo);
- Terminal 3: Verde;
- Terminal 4: Azul.
Para realizar essa experiência monte o seguinte circuito:
Comece um novo script e digite seguinte código:
function [] = led_rgb()
board = arduino;
while 1
disp('vermelho');
write_rgb(board,1,1,0); % vermelho
pause(1);
disp('verde');
write_rgb(board,1,0,1); % verde
pause(1);
disp('azul');
write_rgb(board,0,1,1); % azul
pause(1);
disp('amarelo');
write_rgb(board,0,0,1); % amarelo
pause(1);
disp('roxo');
write_rgb(board,0.3,1,0.3); % roxo
pause(1);
disp('aqua');
write_rgb(board,1,0,0); % aqua
pause(1);
end
end
% teste arduino Uno
function write_rgb(board,r,g,b)
writePWMDutyCycle(board,3,r);
writePWMDutyCycle(board,5,g);
writePWMDutyCycle(board,6,b);
end
function exitprogram(b)
clear b;
disp('exit');
end
Lembre-se de salvar com o mesmo nome da função, ou seja, led_rgb. Execute o programa no command window do MATLAB com o nome que você salvou.
Luminosidade dos LEDs
Nesse experimento iremos controlar o brilho de um led através da tensão de cada. O suporte para MATLAB usando Arduino possui a função writePWMVoltage(), a qual seta a tensão nos pinos PWM. Antes de continuar faça o seguinte circuito:
Digite o seguinte código:
function [] = led_brightness()
board = arduino();
finishup = onCleanup(@() exitprogram(board));
disp('Aperte C para sair');
while 1
for k = 0:.1:5
writePWMVoltage(board, 13,k);
pause(.1);
end
for k = 5:-.1:0
writePWMVoltage(board,13,k);
pause(.1);
end
end
end
function exitprogram(b)
clear b;
disp('exit');
end
Você perceberá que o LED fará o efeito de fade.
Leitura analógica
Este último projeto, você irá aprender a realizar uma leitura analógica entre o Arduino e o MATLAB. Iremos usar um potenciômetro de 10 kOhms.
Bom, pra começar, o que é um potenciômetro? Nada mais é do que um resistor que varia sua resistência. Apenas isso. Se você já possui alguma experiência com Arduino há algum tempo, com certeza já fez algum experimento usando um potenciômetro.
Você deverá ligar o potenciômetro no Arduino da seguinte maneira. Um terminal extremo no 5V, o terminal do meio no pino analógico A0 e o outro terminal extremo no GND.
Feitas as ligações, copie a programação abaixo. Lembre-se de salvar o programa com o mesmo nome da função.
function [] = potentiometer()
board = arduino();
finishup = onCleanup(@() exitprogram(board));
disp('aperte Ctr-C para sair');
while 1
analog = readVoltage(board,0);
disp(['analog= ',num2str(analog)]);
pause(1);
end
end
function exitprogram(b)
clear b;
disp('Programa finalizado');
end
Salve o programa com o nome de potentiometer logo depois execute o programa no “command window”.
Uma leitura parecida com essa deve aparecer na tela do computador quando você girar o potenciômetro.
Referências
KURNIAWAN, Agus, Arduino Programming using MATLAB 1st Edition, 2015










