Go Down

Topic: Buscar valor a partir de una variable (Read 725 times) previous topic - next topic

VicenteCarlos

Buenas tardes a todos. No se si el título es acertado o no, pero paso a exponeros mi problema por si me podéis echar un cable.
Tengo un sensor que me da valores en un rango de 155 a -155. De estos 310 valores, que suponen 310 posiciones, me interesan únicamente 100. Serán el valor correspondiente a la posición 1, el de la 2, ….

Posición    Valor
1              155
2              147
3              125
.
.
.

El valor lo tengo asignado a la variable A.
Evidentemente, podría decirle mediante if que si a=155 posición=1 y así sucesivamente, pero quiero avanzar un paso.
Se me había ocurrido utilizar una SD con la tabla creada, pero por más que he leído los tutoriales que encuentro en internet sobre sd, todos ellos hablan de escritura y lectura, pero no de búsqueda de valor en determinada posición o línea y utilizarla como variable.

Disculpar si no me he expresado con la suficiente claridad.
Muchas gracias a todos.

Kike_GL

Quote from: VicenteCarlos
Tengo un sensor que me da valores en un rango de 155 a -155. De estos 310 valores, que suponen 310 posiciones, me interesan únicamente 100.
Que tipo de sensor es ? imagino que algún tipo de sensor con salida digital, digo por los valores negativos...


En realidad podrías hacer:

Code: [Select]

const byte t = 3;                       //Cantidad de constantes
const int x[t] = {155,147,125}; //Tus constantes
int a = 100;                              //Sensor
for (byte i=0; i<t; i++){
   if (x(i) == a){
      Serial.println(i);                  //Imprime posición
      break;                               //Salir del for
   }
}


PD: Tener en cuenta que al ser los valores de tu sensor entre -155 y 155, no puedes usar el tipo char (-128 a 127) porque excedes su rango, por lo que estas obligado a usar int (-32,768 a 32,767).
Saludos, Kike_GL

VicenteCarlos

Muchas gracias por tu ayuda Kike.
Te explico un poco más … Se trata de crear un indicador remoto de nivel de un depósito de glp. El nivel que lleva el propio depósito es un dial circular con una aguja que se mueve en función de un imán que gira en la misma vertical y en el interior del depósito, según el nivel varía.
Al crearse ese campo magnético cambiante, he utilizado el sensor HMC5883L, tomo los datos X e Y y calculo el arcotangente para crear una función con representación grafica lineal. Si tomo exclusivamente X o Y la representación en una gráfica es una campana, con lo que un valor será igual para dos posiciones.

He probado con un transistor 49E, pero evidentemente no sirve porque no hay modificación de distancia y por lo tanto tampoco modificación del campo magnético.

A lo mejor me he metido en un proyecto demasiado ambicioso, siendo una persona con conocimientos básicos en electrónica e informática, pero me van los retos y mantener el cerebro activo.


cescbit

esta idea me interesa... sería posible interpolar entre dos valores si el valor buscado no existe? por ejemplo , valor buscado 125, y en la tabla tuvieramos el 121 y 126.?
121---5
126---10

valor buscado 125, resultado->9

es posible?

surbyte

Quote
He probado con un transistor 49E, pero evidentemente no sirve porque no hay modificación de distancia y por lo tanto tampoco modificación del campo magnético.
No entiendo nada de esto, que tiene que ver el transistor y como lo has conectado ?

Kike_GL

Quote from: VicenteCarlos
Se trata de crear un indicador remoto de nivel de un depósito de glp. El nivel que lleva el propio depósito es un dial circular con una aguja que se mueve en función de un imán que gira en la misma vertical y en el interior del depósito, según el nivel varía.
Te estas refiriendo a esto ?
Saludos, Kike_GL

VicenteCarlos

Hola Kike. Muchas gracias por tu ayuda.

VicenteCarlos

Buenas tardes a todos.

Tengo un imán que gira horizontalmente (y sobre un eje central) 360º a izquierda y/o derecha. Necesito monitorizar la posición. He probado con el 49E, pero como la distancia del campo magnético al sensor no varía, tampoco varía la información que facilita.

Sabe alguien qué sensor necesitaría utilizar?

Muchas gracias.

surbyte

Puedes poner un enlace al sensor 49E que mencionas? Usa etiquetas por favor!!


surbyte

Tienes dos hilos del mismo tema, a esto se le conoce como cross post o doble posteo.

Go Up