// Ejemplo de uso del multiplexor analógico a la medida de 8 temperaturas utilizando como sensor
// un termistor NTC ubicado en un divisor de tensión.
#include <math.h>
const uint8_t controlPins[] = { 2, 3, 4, 5 };
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
void loop() {
for(int canal = 0; canal < 8; ++canal){
SeleccionaCanal(canal);
double N = analogRead(A0);
String S = "Canal " + String(canal) + "; N = " + String(N) + "; temperatura = " + String(temperatura(N));
Serial.println (S);
delay(1000);
}
}
void SeleccionaCanal(byte canal){
for(int i = 0; i < 4; i ++)
{
digitalWrite(controlPins[i], canal >> i & 1);
}
delay(10);
}
double temperatura(double N){
double v = N/1024.0*5.0;
double RT = 10000.0/(5.0/v - 1.0);
double t = 1/(1.0/3950.0*log(RT/10000.0) + 1/298.15) - 273.15;
return t;
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
mux1:I15
mux1:I14
mux1:I13
mux1:I12
mux1:I11
mux1:I10
mux1:I9
mux1:I8
mux1:I7
mux1:I6
mux1:I5
mux1:I4
mux1:I3
mux1:I2
mux1:I1
mux1:I0
mux1:COM
mux1:S3
mux1:S2
mux1:S1
mux1:S0
mux1:EN
mux1:VCC
mux1:GND
ntc1:GND
ntc1:VCC
ntc1:OUT
ntc2:GND
ntc2:VCC
ntc2:OUT
ntc3:GND
ntc3:VCC
ntc3:OUT
ntc4:GND
ntc4:VCC
ntc4:OUT
ntc5:GND
ntc5:VCC
ntc5:OUT
ntc6:GND
ntc6:VCC
ntc6:OUT
ntc7:GND
ntc7:VCC
ntc7:OUT
ntc8:GND
ntc8:VCC
ntc8:OUT