Microsegundos)
unsigned long int tempo=0;
int amostraR; //declaracao da vari�vel do LED vermelho do ADC, em bits
int amostraIR; //declaracao da vari�vel do LED infravermelho do ADC, em bits
float amostraRvolts[1000]; //array com os valores do LED vermelho, em volts
float amostraIRvolts[1000]; //array com os valores do LED infravermelho, em volts
float maxR, maxIR, minR, minIR, medR, medIR; //declaracao das variaveis dos valores
m�ximos, minimos e m�dios nos comprimentos de onda correspondentes a luz vermelha,
660 nm, e a luz infravermelha, 940 nm;
float valorAtual; //declaracao da variavel para percorrer os arrays
float R; //declaracao da vari�vel do valor R, correspondente ao ratio-to-ratio
float ganho = 20.74; //declaracao da variavel correspondente ao ganho do filtro
passa-baixo da montagem implementada
float IACR, IACIR; //variaveis das componentes AC para o LED vermelho e
infravermelho
float atenuacaoHbR = 0.81; //coeficiente de atenua��o do comprimento de onda de 660
nm para a hemoglobina desoxigenada
float atenuacaoHbO2R = 0.08; //coeficiente de atenua��o do comprimento de onda de
660 nm para a hemoglobina oxigenada
float atenuacaoHbIR= 0.18;//coeficiente de atenua��o do comprimento de onda de 940
nm para a hemoglobina desoxigenada
float atenuacaoHbO2IR = 0.29; //coeficiente de atenua��o do comprimento de onda de
940 nm para a hemoglobina oxigenada
float SaO2; //declaracao da vari�vel correspondente ao valor da satura��o de
oxig�nio no sangue arterial
for (int i=0; i<1000; i++){ //para os valores m�ximo, m�nimo e m�dio obtidos pelo
LED infravermelho
valorAtual = amostraIRvolts[i];
if(valorAtual > maxR){ //obtencao do valor m�ximo
maxIR = valorAtual;
}
if(valorAtual < minIR){ //obtencao do valor m�nimo
minIR = valorAtual;
}
medIR = medIR + valorAtual; //soma todos os valores do array e guarda na
vari�vel medIR
}
medIR = medIR/1000; //obtencao do valor m�dio
IACR =(maxR-minR)/ganho; //c�lculo da componente AC para o LED vermelho
IACIR =(maxIR-minIR)/ganho;//c�lculo da componente AC para o LED infravermelho
R=(IACR/medR)/(IACIR/medIR); //c�lculo do fator R
SaO2=(((atenuacaoHbR-(atenuacaoHbIR*R))/(atenuacaoHbR-atenuacaoHbO2R+
((atenuacaoHbO2IR-atenuacaoHbIR)*R))))*100; //c�lculo da satura��o de oxigenio no
sangue arterial
Serial.println (SaO2); //imprime o valor da satura�ao de oxig�nio arterial
}