segunda-feira, 9 de novembro de 2015

Tutorial 4: Arduino e Matlab - Trabalhando com PWM e entrada analógica


    A placa Arduino suporta cinco funções do matlab para controle I/O analógico. 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:

  1. Controle do LED RGB
  2. Controle de luminosidade
  3. Leitura analógica de um potenciômetro

LET's GO!

CONTROLE DO 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.




 Portas PWM do arduino MEGA 2560











Portas PWM do arduino UNO.














Antes de continuarmos deveremos nos familiarizar com o LED RGB:


    Note que o LED RGB possui mais terminais que um led comum, esse terminais a mais são responsáveis por cada cor, a disposição desses terminais são:

  • Terminal 1: Vermelho
  • Terminal 2: Pino comum (anodo/catodo)
  • Terminal 3: Verde
  • Terminal 4: Azul

    Para realizar essa experiencia monte o seguinte circuito:




    Agora 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  
 % testing for Arduino Uno  
 function write_rgb(board,r,g,b)  
 writePWMDutyCycle(board,2,r);  
 writePWMDutyCycle(board,3,g);  
 writePWMDutyCycle(board,4,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.

LUMINOSIDADE DOS LEDs:


    Nesse experimento iremos controlar o brilho de três leds 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


   Esse ultimo projeto, você irá aprender a realizar uma leitura analógica entre o Arduino e o Matlab. Iremos usar um potenciômetro de 10K ohms.

    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á meche 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.
   
    Feita as ligações copie a programação abaixo. Lembre-se de salva o programa no 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  

   Por agora é isso pessoal, Proximo tutorial será sobre I²C. 


Nenhum comentário:

Postar um comentário