%% Expérience préliminaire pour connaitre le pas à prendre pour la vériatble expérience
% Le pas doit etre choisi de facon à respecter le théorème de Shannon

close all; clc;
try
    fclose(s);
catch
    warning('s ne peut pas être fermé');
end

s = serial('COM7');
set(s,'BaudRate',9600,'Parity','none')
set(s,'DataBits',8)
set(s,'StopBits',1)

fopen(s);
pause(2);

%periode d'echantillonnage
deltaT_sec = 0.6; 
deltaT_minute= deltaT_sec/60; % exprimee en minutes 


%duree de la manip
TotalTime_min = 20;
TotalTime_sec = TotalTime_min*60;
coups = round(TotalTime_sec/deltaT_sec);
T1 = zeros(1,coups);
T2 = zeros(1,coups);
u1 = zeros(1,coups);
u2 = zeros(1,coups);

figure(1);
subplot(2,1,1);
axis([0 TotalTime_min 0 150]); 
ani1=animatedline('Color','r');
xlabel('temps (min)')
ylabel('température (°C)')
title('capteur 1') 
subplot(2,1,2);
axis([0 TotalTime_min 0 150]);
ani2=animatedline('Color','b');
xlabel('temps (min)')
ylabel('température (°C)')
title('capteur 2') 

figure(2);
subplot(2,1,1);
axis([0 TotalTime_min 0 255]); 
ani3=animatedline('Color','r');
xlabel('temps (min)')
ylabel('valeur de la commande')
title('U1') 
subplot(2,1,2);
axis([0 TotalTime_min 0 255]);
ani4=animatedline('Color','b');
xlabel('temps (min)')
ylabel('valeur de la commande')
title('U2')

x = 0:deltaT_minute:TotalTime_min;
U1 = check_u(100);
U2 = check_u(100);
w = strcat('0',num2str(U1,'%03d'),num2str(U2,'%03d'));
%%%------ Experience ----------------------
TSTART = tic;
eTime = 0;
delta_u = 60;

for k = 1:coups
    while(eTime<k*deltaT_sec)
        eTime = toc(TSTART);
    end
    U1 = check_u(127);
    U2 = check_u(127);
    w = strcat('0',num2str(U1,'%03d'),num2str(U2,'%03d'));   
    
    % Ecriture de w sur aduino + Lecture de T1/T2 de l'arduino
    fwrite(s,w,'uint8');
    temp = fscanf(s,'%s', 9);
    T1(k) = str2num(temp(:,1:4))/10;
    T2(k) = str2num(temp(:,6:9))/10;
    
    % affichage dynamique (tt les deltaT)
    addpoints(ani1,x(k),T1(k));    
    addpoints(ani2,x(k),T2(k));
    drawnow
    addpoints(ani3,x(k),U1);
    addpoints(ani4,x(k),U2);
    drawnow
end

fclose(s);
save('T1_20_min_a_127A.mat','T1');
save('T2_20_min_a_127A.mat','T2');
