Unir distintos codigos para un mismo proyecto (estacion meteo)

Buenas tardes a todos. Escribo por aquí mi primer post para ver si alguien me echa un cablecillo.

Os pongo en antecedente: quiero construir una estacion meteorologica basada en arduino. Ahora mismo estoy usando un anemometro INSPEED, el cual leo y muestro en el LCD (sparkfun serie 16x2). Aparte estoy usando un sensor de presion y temperatura BMP-085, tambien mostrando los datos de presion y temperatura en dicho LCD. Y aparte paara finalizar, un sensor LM335A, que idem, leo sin problemas tanto en serie como en el LCD.

Ahora viene mi inutilidad como novato en esto de la electronica y arduino: soy capaz de leer cada sensor con su codigo por separado, y quiero unir en el mismo codigo el del anemometro, el sensor de presion y el LM335A (en un futuro sustituirlo por un SHT15), y aqui ya me pierdo. He sido capaz de modificar los codigos uno a uno, para mostrar en la pantalla lo que quiero, poner el tiempo de refresco que quiera, factor de calibración.....
¿hay alguna posibilidad (no se si existe lo que pretendo), de poder FUSIONAR los tres códigos en uno, para mostrarlos en el mismo LCD al mismo tiempo? es decir, un codigo que lea anemometro y los otros dos sensores.....

A ver si alguien me remite alguna idea, o a algun sitio que haya información, y teniendo en cuenta mi corto conocimiento en electronica.

si alguien necesita los codigos, me lo decís y los pongo por aqui.

GRACIAS GRACIAS GRACIAS

Ummmh, creo que nuestro colega Nayma es la persona mas indicada por echarte un cable. Es el creador de la ardumeteo, para ir abriendo boca puedes googelearlo mientras Nayma contesta.

gracias paisano malagueño!

ya he googleado y encontré, como digo, los codigos para muestrear los sensores, y parapoder mostrarlos en el LcD, pero solamente uno a uno. a ver si se pasa el compañero y me comenta como ha hecho el con ardumeteo (que tambien le eche un buen vistazo cuando me puse con el tema)

de nuevo, gracias por contestar.

por lo que veo, no es copiar los tres códigos y pegarlos en uno solo jajja :stuck_out_tongue:

Hola, soy Nayma y para la VirtualCamp hice con ayuda de Madepablo el código. Ahora esta madurando, probando nuevas cosas y por reyes gracias a Papa Noel creo que tendré algun sensor más.
Mi idea es poner un data loger, barómetro, reloj, usar I2C,..... posiblemente con algo que me llega la próxima semana para poner el LCD y ahorrar pines. fm :wink:

Si te fijas bien, en una de las páginas esta todo el código junto, yo lo representaba por pantalla,para ver si por lo tanto no tenía la parte de lcd que tu necesitas. Tendrás que modificar tu código para que te vaya enseñando tus medidas uno por uno. Los tres a la vez me tendré que mirar la libreria de fm para ver si es posible. Pero me imagino que si debe de ser posible si juntas todas las variables en un string.

Pues la respuesta es si, copiar i pegar. Pero claro que tendras que tener varias cosas en cuenta:
Un set up y un loop solo.
Te animo a que le pongas un pluviómetro y todo lo que puedas...
Nayma

Ya sabía yo que Nayma iba a contestar a este post.

Por cierto, nayma, creo que Papá Noel ha añadido algo en algún sitio, muy en línea con tu arduMeteo :wink:

Mi consejo para chinchu es crear funciones a las que llamas dentro de tu loop. Estas funciones harán el trabajo que tuviesen que hacer por separado. El setup lo puedes hacer de forma similar.

Hola,
Si has conseguido que funcione cada sensor en un loop, lo que puedes hacer es renombrar cada loop de esos y convertirlo en una función como te dice fm,

el loop() del anemómetro lo renombras como anenometro(),
el loop() de presión-tempertatura lo guardas como presion_temperatura() ...
y creas un nuevo loop() desde el que llamas a todas esas funciones.
En el nuevo setup juntas todo el contenido de los setup que tenías anteriormente.
Puedes usar variables globales que te devuelvan el resultado de las funciones.

Hola Chinchu,

Como bien te han dicho por este foro, si ya tienes funcionando los sensores por separado, con su código, juntarlo en un único programa es sencillo. Como ya te han dicho, puedes crear funciones que llamen a la toma de datos por cada uno de los sensores, y luego un función general que muestre los resultados de todos ellos. Yo no uso LCD en mi proyecto, pero mira como he empalmado yo la toma de datos en mi dispositivo, y como he junto luego los resultados finales para mostrarlos en pantalla del ordenador, y grabarlos en una SD... tu solo tienes que cambiar esto un poco para que los muestre por tu LCD.
http://ardudrop.jottit.com/6_-_firmware

Espero que te de pistas al respecto.
Ánimo!
M.A. de Pablo

Gracias a todos con las respuestas, a ver si mañana tengomalgomde tiempo y me pongo a la tarea, y os voy contando.
Gracias, que pena ser tan novato y cualquier cosa te suene a chino....

Chinchu, en el playground español encontrarás tutoriales en castellano que te iran bien.

Si has visto el ardumeteo, verás que hay una parte que te costará más que es la del pluviómetro por que usamos interrupciones. De momento pasa del pluviómetro que es lo más complicado para empezar. Una vez tengas los primeros sensores temp,etc puedes poner una veleta, y/o anemómetro.

NAYMA

Hola Nayma!!

Te quisiera comentar sobre el tema. Veras, el tema es que un grupo de 4 personas como proyecto debemos de construir una estación meteorologica, que contenga: sensor humedad, temperatura, dirección viento, velocidad viento, lluvia coda 10, 20minutos, 1, 24horas... presión atmosférica. La pregunta que te quería realizar es que en la estación meteorologica que tu has realizado, me he fijado, pero a nosotros nos han pedido, que la veleta(dirección viento), tenga un filtro para la turbulencias del aire. No sabemos exactamente como hacerla, nos podrías ayudar?? Espero tu respuesta

Si alguien que este realizando algún proyecto del estilo y quisiera ayuda, por favor comunicaros conmigo, y os ayudaria en lo que pudiera!! Claro, mientras pudiera :wink:

No se bien a que te refieres con un filtro. En cuanto a la programación o físico. Si estas midiendo la lluvia, me imagino que cada cierto tiempo pararás un instante para tomar el resto de medidas. Si te fijas en las estaciones compradas, la veleta suele moverse mucho y me imagino que hacen una media. Si buscas datos reales en windfinder verás que dan una dirección, no los diferentes rumbos de vientos.

Poner alguna foto de vuestra estación :slight_smile:
no importa que no esté acabada, a si veremos vuestros avances....

Para el viento, lo que tienes que haces es medir (como tu dices), cada 10 minutos. Y luego, una vez a la hora realizas los cálculo (suma) para ver cual ha sido la lluvia a los 20, 40, y 60 minutos... y al final del día, la suma de la lluvia de todas las medidas... es teóricamente fácil.

Ánimo con el proyecto

Si, el unico problema es que tenemos muy poco tiempo para realizarlo todo, ya que en febrero debe estar todo finalizado, y aun debemos de hacer el programa para la pagina de internet donde contendra todas las medidas!! :stuck_out_tongue: jeje
Y el problema de realizar lo de la lluvia mas o menos lo tengo solucionado, me queda hacer un pequeño cambio para acabarlo de hacer mas o menos bien. Solo que ahora el problema que tenemos es la resolucion de las medidas del pluviometro, debido a que el que el programa echo ahora de momento, cada vez que pasan los 10 minutos, el contador de cantidad de lluvia caida en 10 minutos vuelve a comenzar de cero, y lo quiero realizar de que siempre coga los 10 ultimos minutos(creo que con hacer un array lo tendre solucionado, tengo que mirarmelo, que no me acuerdo mucho de los array). Ahora me voy a poner con el programa de la veleta, y despues a mejorar el resto de sensores!! Si ha alguien se le ocurre alguna idea, que responda, se agradece mucho la ayuda!! :wink:

Con el programa del pluviómetro, me parece que el array es la mejor solución para una hora. Mides cada 10 minutos y cada posición del array representa unos minutos concretos (ej. La primera posición para los y 10 munitos, la segunda, para los y 20 minutos, ...) Si luego quieres mostrar la lluvia en los últimos 10 minutos, solo tienes que mostrar la última positición del array. Si quieres la lluvia en los últimos 20, la suma de las dos últimas posiciones,... y así. Cuando hallas rellenado las 6 posiciones del array, querrá decir que ha pasado una hora. Puedes sumar todas las posiciones y tienes la lluvia en la última hora. Ese valor lo copias a un nuevo array para guardar las precipitaciones cada hora, y borras el array original, listo para almacenar la medida de la lluvia cada 1o minutos de nuevo. Cuando se llenen las 24 posiciones del segundo array habrá pasado un día y sumando todas las posiciones tendrás la lluvia diaria...

Es un poc laborioso, pero es lo que se me ha ocurrido ahora mismo...

En cuanto al de la veleta, ¿qué sensor vas a usar? ¿necesitas ayuda?
Ya me dirás,
M.A. de Pablo

Si quieres un filtro digital, rápido, que puedas configurar dependiendo de lo que se considere como viento huracanado, busca en internet: "lowpass filter". Lo que vas a conseguir con este filtro es eliminar las lecturas que provocará el viento rancheado sobre la veleta y eliminar errores de lectura analógico.

Hola M.A. de Pablo!

Sobre lo que me has dicho si, lo intentare hacer tipo a como me lo has explicado, y sobre la veleta, casi tengo el programa finalizado(exceptuando un problema con el return de una rutina, que no se porque no me lo realiza. Sobre el sensor, no tenemos el datasheet, pero se que te da una tensión dependiendo en que sentido apunta(con 16 direcciones), tipo a como si fuera un potenciometro. Solo me queda finalizar ese detalle del return, y lo tendre acabado :wink: Muchas gracias.

Hola fm!

Sobre el filtro, eso se trataría para el anemómetro, no?? ese tema es el que parece que si que esta acabado, esperando a que me llege el material el próximo martes, y poderlo comprobar!! muchas gracias, os mantendré informados.

Y sobretodo gracias a Nayma por la ayuda!! :slight_smile:

por aquí voy a ir poniendo los códigos y las conexiones http://meteo-almargen.blogspot.com/2011/12/est-meteo-con-arduino-el-barometro.html

Pero el problema mio viene en unir los tres códigos en uno solo...
no se por donde meterle mano, me tiene súper perdido....

pon el TROZO de codigo donde tienes el problema del return.

perdona, pero no te entiendo con lo del return. ayer estuve intentando unir códigos, pero me es imposible (dado lo limitado de mis conocimientos). siento mi ignorancia en este tema.
gracias por la respuesta

Hola chichu!

No entiendo lo que quieres decir con unir códigos, pero lo que veo es que si quieres realizar una estación meteorologica con arduino(por lo que me e dado cuenta haciéndola), no debe de haber ningún "delay" ya que si nos retrasas todo lo que debe de hacer la estación. A que te refieres entre unir los 3 lenguajes??