Ayuda Explicación de código de termómetro

Hola buenas tardes :smiley: , 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);
}

Este es el segundo:

Código Termómetro simple
// termometro múltiple fácil de calibrar
float termometro1= 0;// entrada A0

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 :smiley: !!

encontraras la respuesta en cualquier manual basico de programacion arduino que encontraras en documentacion,por ejemplo:

la variable cnt se declara pero no veo que se use en ningun sitio ,por lo que en ese codigo no sirve para nada.

jose:
encontraras la respuesta en cualquier manual basico de programacion arduino que encontraras en documentacion,por ejemplo:
http://www.zonamaker.com/descargas/Manual-Arduino.pdf

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 :stuck_out_tongue:

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*.

Muchísimas gracias a ambos :smiley: !!

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.