el 12-03-2013 11:01 AM
Hola,
Analiza tus lineas verdes (yo soy daltonico de lectura), no había visto donde decías lo de las lineas verdes. Si las analizas ves que tienes un overflow a partir de 31ºC.
Al principio como analogRead devuelve int pues todas las operaciones se hacían en int y finalmente el compilador te hace un casting a float. ¿Qué hicistes? pues cambiar los tipos a float 5 (int)--> 5.0 (float) y ya operas en punto flotante, mas lento.
//antes supongo algo así
pin0=(analogRead(0)*5*100)/1023; //el resultado no hubiese tenido decimales aún cuando no hubiese overflow (creo). Pruebalo con long y verás.
// despues trabajas en float (flotantes de 32 bits) donde este tipo de problemas son muy poco frecuentes. Te pueden jugar malas pasadas pero son casos muy contados de divisiones y diferencias.
pin0=(analogRead(0)*5.0*100.0)/1023.0; //esto trabaja con float, yo personalmente me quedaría mas tranquilo añadiendo un casting al analogRead de float. Lo sustituyo por:
pin0=((float)analogRead(0)*5.0*100.0)/1023.0;
pues nada, solo eso quería comentarte para que fueras viendolo, las reglas en la informática no son seguras.
Saludos Emilio.
el 12-04-2013 08:04 AM
Hola,
Un par de horas despues de escribir la duda encontre el error, sabia que el fallo venia en la variable de luz porque la de luxes los da bien y lo unico que cambiaba era que se multiplicaba por 100 asi que me dio por mirar los tamaños del int y el float y entonces me di cuenta, sobre todo cuando vi que cuando llegaba al limite te marcaba con signo menos como a mi me pasaba asi que los hice long y listo problema solucionado.
T1 y T2 no los e hecho long ya que el float que me va a aparacer no va a llegar nunca a 100.00ºC, ya que si no estariamos todos fritos, asi que al multiplicarlo por 100 el int en ningun caso va a llegar a 10000. En cambio la irradiancia si me puede llegar a unos 1500.00W/m^2 y al multiplicarlo por 100 el int se me desborda, otra de las cosas que me salto al ojo cuando vi lo de -32,768 a 32,768 fue que a mi se me aturullaba justo cuando la irradiancia llegaba sobre los 315.00 o 320.00 W/m^2.
Asi que nada, a acabar el documento y todo finiquitado. Gracias.
el 12-04-2013 08:19 AM
Hola,
me alegro que todo haya termado bien y que fuese ese el problema, a veces basta con contarle las cosas a alguien para darte cuenta del problema.
Saludos.
el 10-15-2014 11:30 AM
puede encontrar un tutorial acerca de comunicacion serie en el siguiente documento https://decibel.ni.com/content/docs/DOC-30528
el 10-15-2014 11:31 AM
el 10-16-2014 04:13 AM
Buen aporte Atom,
hay gente que se molesta de documentar lo importante.
Como digo al principio del hilo, también puedes mandar los datos en binario, más rapido y compacto.
Eso si esta forma hay que definir la estructura de los datos, se envía un mensaje, con un id de cabecera, longitud de mensaje y un CRC al final.
No sé si de ésto hay alguna documentación por ahí. Esta es la forma que uso para comunicarme normalmente entre los microcontroladores y el pc.
Saludos
Emilio.