%% Skript pro výpočet převodní tabulky
clear all;close all;clc;
Port = 'COM2';
BaudeRate = 9600;
off_voltage = 3; % nastavení off_voltage možno nastavit v libovlném rozsahu 4,2-2,5V
R2 =  280000;  % V ohmech!!
R1 =  100000;  % V ohmech!!
%% Inicializace
s = serial(Port);
set(s,'BaudRate', BaudeRate);
fopen(s);
c = 1; 
rec = [];
 while (1)
    a = sscanf((fscanf(s)),'%s');
     switch a
       case 'Wait'
       fwrite(s,1,'int8');
            break
        end
 end
    %% Nahrávání hodnot
while (1)
        y = str2num(fscanf(s));
  

    rec(c) = y; % zaznam hodnot
    if c > 80
        if mean(rec(c-80:end)) > y  % Vypnutí akvizice
            break
        end
    end
   c = c+1;
end
%% Výpočet křivky
for i = 1:length(rec)-80
    baterie(i) = mean(rec(i:i+80)); % průměr 80 vzorků kvůli šumu
end
maxi = max(baterie)  % Maximální napětí nabité baterie
mini = mini(baterie)  % Vypínací napětí baterie
plot(baterie)
%% výpočet děliče
U2 = mini*(R2/(R1+R2));
%% Přepočet napětí pro referenční napětí 3V
vektor = linspace(3,U2); % (reference[V], přepočet minimálního napětí vhodné dosadit 2.22 => 3V   
vektor = round(vektor,2);
%% Výpočet procent
for i = 2:79
    aktualni = vektor(i);
    predchozi = vektor(i-1);
    if predchozi==aktualni
        vektor(i)=[];
    end
end
procent = 1:length(vektor);
procent = (procent-mini(procent))/(max(procent)-mini(procent))*100;
procent = round(procent);
vektor = vektor';
procent = fliplr(procent);
procent = procent';
krivka = [vektor procent];
save('look_up_table.mat','krivka')
fclose(s) 
clear ('s')
delete('s')    