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 !!
encontraras la respuesta en cualquier manual basico de programacion arduino que encontraras en documentacion,por ejemplo: http://www.zonamaker.com/descargas/Manual-Arduino.pdf
la variable cnt se declara pero no veo que se use en ningun sitio ,por lo que en ese codigo no sirve para nada.
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.