Hola buenas tardes , estoy haciendo un termómetro casero en base a este vídeo
Este termómetro utiliza 2 códigos uno para calibrar el termómetro y el otro para programar el arduino con esa función, ambos códigos son muy cortos, pero tengo dudas acerca de ellos y me gustaría que me las despejaran se los agradecería muchísimo.
Este es el primero:
Código calibrador
// Calibrador termometro
int tiempo=0;
int cnt=0;//Me interesa saber por que se usa esta variable
float t1=0;//y por que se usa esta otra también
void setup() {
Serial.begin(9600);
analogReference(INTERNAL);// pone como referencia iterna 1.1V
}
void loop() {
Serial.println (analogRead(0),1); //y como funciona esta linea de código
delay(1000);
}
int tiempo=0;
int cnt=0;//igual que significa esta variable o cual es su uso
float t1=0;// en este caso esta se entiende mas
void setup() {
Serial.begin(9600);
analogReference(INTERNAL);// pone como referencia iterna 1.1V
}
void loop() {
//y no entiendo mucho esta parte del codigo
t1 = map(analogRead(0),472,638,1000,0); // a 0°C la lectrura de analgRead es 140 y a 100°C es 99
termometro1= t1/10; tiempo =millis()/1000;
// para ver en el monitor
Serial.print (tiempo);
Serial.print (" Term 1= ");
Serial.println (termometro1,1);
delay(1000);
}
Muchas gracias de antemano y me estarían ayudando muchísimo !!
Comprendo la lógica de programación,mis únicas dudas son las variables y la formula que vienen en el código,lo publique para que alguien mas experimentado me explicara
Primero: código debe ir entre etiquetas generadas por el botón </>
Segundo: Sobre tus dudas:
// Calibrador termometro
int tiempo=0;
int cnt=0;//Me interesa saber por que se usa esta variable
float t1=0;//y por que se usa esta otra también
Según el código posteado del calibrador, estas variables no tienen ninguna función.
Serial.println (analogRead(0),1); //y como funciona esta linea de código
analogRead se ejecuta; y el valor que devuelva, inmediatamente se imprime en el monitor serie (sin pasar por una variable intermediaria). El segundo argumento es para definir la cantidad de decimales (después del punto) a imprimir.
int cnt=0;//igual que significa esta variable o cual es su uso
Sigue en desuso.
void loop() {
//y no entiendo mucho esta parte del codigo
t1 = map(analogRead(0),472,638,1000,0); // a 0°C la lectrura de analgRead es 140 y a 100°C es 99
termometro1= t1/10; tiempo =millis()/1000;
La división “t1/10” también es parte del procesamiento.
La segunda operación de la última línea, convierte (a segundos) el tiempo de millis.
Lucario448:
Primero: código debe ir entre etiquetas generadas por el botón </>
Segundo: Sobre tus dudas:
// Calibrador termometro
int tiempo=0;
int cnt=0;//Me interesa saber por que se usa esta variable
float t1=0;//y por que se usa esta otra también
Según el código posteado del calibrador, estas variables no tienen ninguna función.
Serial.println (analogRead(0),1); //y como funciona esta linea de código
*analogRead* se ejecuta; y el valor que devuelva, inmediatamente se imprime en el monitor serie (sin pasar por una variable intermediaria). El segundo argumento es para definir la cantidad de decimales (después del punto) a imprimir.
int cnt=0;//igual que significa esta variable o cual es su uso
Sigue en desuso.
void loop() {
//y no entiendo mucho esta parte del codigo
t1 = map(analogRead(0),472,638,1000,0); // a 0°C la lectrura de analgRead es 140 y a 100°C es 99
termometro1= t1/10; tiempo =millis()/1000;
La división "t1/10" también es parte del procesamiento.
La segunda operación de la última línea, convierte (a segundos) el tiempo de *millis*.
Sigues sin editar tu primer post poniendo el código como corresponde.
Ya te lo pidieron varios usuarios y ahora te lo solicito nuevamente.
Esto no cambiará nada pero mejorara la presentación de los datos
unsigned long stiempo;
int cnt=0;//igual que significa esta variable o cual es su uso
float t1=0;// en este caso esta se entiende mas
void setup() {
Serial.begin(9600);
analogReference(INTERNAL);// pone como referencia iterna 1.1V
stiempo = millis();
}
void loop() {
//y no entiendo mucho esta parte del codigo
t1 = map(analogRead(0),472,638,1000,0); // a 0°C la lectrura de analgRead es 140 y a 100°C es 99
termometro1= t1/10;
tiempo = (millis - stiempo)/1000;
// para ver en el monitor
Serial.print (tiempo);
Serial.print (" Term 1= ");
Serial.println (termometro1,1);
delay(1000);
}
Un tema. Saca tus propias números de tu experiencia y no uses ESTOS números porque cada diodo tiene una respuesta diferente.
Tal vez sea apenas diferente o sea mas importante.