#include "mbed.h" AnalogIn LM35(PA_0); AnalogIn POT(PA_1); DigitalOut dir_1(PB_10); DigitalOut dir_2(PB_4); PwmOut led(PB_6); DigitalOut rele(PC_7); PwmOut fan(PA_8); Ticker tick; Serial PC(USBTX, USBRX); int aux = 0; //variável global void interrup(){ aux = 1; } int main(){ float T = 0.2, Temp=0.0, Erro = 0.0, Ref = 0.0, Acao=0.0, Kp; dir_1=1; dir_2=0; //Direção da ponte H fan=0.0; fan.period(0.0001); led=0; rele=1; Kp = 0.5; //Controle P tick.attach(&interrup, T); //prepara timer de T seg. while(1) { if (aux==1) { aux = 0; Ref = 15*POT+35; //Referencia varia de 35oC a 50oC ao variar o POT Temp=LM35*330.0; //Converte leitura para oC Erro = -(Ref - Temp); //Ação direta - refrigeração Acao = Kp*Erro; // offset e limitação na Ação de Controle. if (Acao > 0.8) { Acao = 0.8; } else if (Acao < 0) { Acao = 0; } fan = Acao+0.20; led = fan; PC.printf("%.2f \t %2.1f \t %2.1f\r\n", Acao, Ref, Temp); } } }