Go Down

Topic: Misma variable en varias librerías [Solucionado] (Read 1 time) previous topic - next topic

Ixreb

Mar 10, 2012, 02:20 pm Last Edit: Mar 11, 2012, 11:28 am by Ixreb Reason: 1
Hola.

Estoy desarrollando un proyecto que he modularizado en varias librerías para que esté más ordenado y sea más legible y fácil de continuar desarrollando.

El problema es que hay algo que quiero optimizar y no lo consigo.

Tengo un sensor de temperatura típico DS18B20, cuyo valor quiero leer en varias librerías, pero quiero actualizar el valor sólo en una de ellas o en el bucle loop y que las demás simplemente lean el valor actualizado, porque para algo así veo absurdo leer, por ejemplo, 3 veces por segundo el mismo valor (con lo lento que es el leer el DS18B20), prefiero leerlo cada 20-30seg en un único lugar y que los demás se sirvan de ese valor.

Es decir:

librería auxiliar 1 (librería dedicada a temperatura):
- tiene variable float temp;  
- actualiza la variable temp con el valor de DS18B20 por ejemplo cada 20seg

resto de librerías auxiliares:
- crea referencia a la librería dedicada a la temperatura, librería auxiliar 1
- lee el valor de la variable temp mediante un método GET, actualizado o no dependiendo siempre de la librería auxiliar 1, no directamente del sensor

Siento si no me he explicado bien, es que llevo ya un buen rato con esto y empiezo a marearme de no conseguirlo jej.

De momento con variables long sin más tengo que leer el valor del sensor en cada librería para que se actualice la variable "temp" que parece independiente en cada nueva referencia a esa librería auxiliar 1. Es decir, si leo el sensor en la librería 2 y guardo ese valor en la variable "temp", en la librería 3 si leo "temp" no voy a conseguir el valor recién leido, tendría que leer el sensor también ahí.

Estoy tratando de solucionarlo con punteros que imagino que así es como se soluciona, sin embargo, aunque nunca me habían dado problema los punteros, ahora no consigo ninguna solución, supongo que será problema mio.

A ver si me podéis echar una mano antes de que me vuelva loco, sino tendré que leer en cada librería y dejarlo así de poco óptimo.

Un saludo!

JMN

No sé si me he enterado muy bien, no te vale con una variable global para todas?

http://en.wikipedia.org/wiki/External_variable
http://stackoverflow.com/questions/1433204/what-are-extern-variables-in-c
http://crasseux.com/books/ctutorial/External-variables.html

Ixreb

Hola.

Ya probé con eso y no funcionó, pero gracias a que me lo has mencionado he vuelto a mirar y ojear un poco por internet y ahora sí funciona.

El problema es que en el IDE de arduino no es tan directo de usar como puede ser en C++, como en los enlaces que has puesto. Aquí hay que declarar declarar la variable inicializándola en el archivo .cpp, no he conseguido que funcione de ninguna otra forma, si se declara en el .h o no la inicializo me tira error al compilar. Pero lo importante es que ahora funciona.

Gracias JMN, dejo el hilo como solucionado.

curro92

Hola,
Si defines una variable al principio del código de tu programa antes de los includes, creo que tiene que funcionar como global:

Code: [Select]
char datos[33];

#include <libreria1>
#include <libreria2>

setup()

for()




Go Up