const float R0 = 100.0;
const float A = 3.9083E-3;
const float B = -5.775E-7;
const float C = -4.183E-12;
float tm;
float LUT[4096];
//void setup() {
// Serial.begin(115200);
//}
void setup() {
Serial.begin(115200);
Serial.println ("\nCompletando la LUT (entre 0 y 1023)\n");
for (int N = 0; N < 4096; N++){
float V = (N/4096.0)*3.3; //Modelo inverso del ADC
float R = V/0.008; //Como le vamos a poner una corriente de 10 mA, se hace lo siguiente
if (R<100.0){
tm = -242.02 + 2.228*R + 2.589E-3*pow(R,2) - 4.826E-6*pow(R,3) - 2.818310E-8* pow(R,4) + 1.5243E-10*pow(R,5);
}
else{
tm = (-A + sqrt(A*A-4*B*(1-R/R0)))/(2*B);
}
LUT[N] = tm;
}
Serial.print(".");
//Código para configurar la identificación de cada conjunto que se fabrique con unos interruptores externos.
//Tenemos en el aula el esquema físico de cómo quedaría con dichos interruptores conectados a estas entradas digitales.
if digitalRead(D5, HIGH){
int D5 = 1;
}
else{
D5 = 0;
}
if digitalRead(D6, HIGH){
int D6 = 2;
}
else{
D6 = 0;
}
if digitalRead(D7, HIGH){
int D7 = 4;
}
else{
D7 = 0;
}
if digitalRead(D8, HIGH){
int D8 = 8;
}
else{
D8 = 0;
}
int ID = D5 + D6 + D7 + D8;
}
void loop() {
delay(10);
int N = analogRead(36);
float t = LUT [N];
Serial.println("N= " + String(N) + "; t= " + String(t));
}