Recojer valor enviado a Led

Buenas.

He montado una simulación de alarma montanto un sensor de IR. http://www.instructables.com/id/How_to_make_an_arduino_IR_link/

El programa en sí funciona OK.

Le envia un valor de voltaje al led (variable), segun la señal de IR que tiene. Mejor señal implica mas luz.
Necesito que haga exactamente lo contrario. Me gustaria poder recojer el valor que le llega de voltaje al led, porque segun si le llega señal(led apagado) o si no le llega señal (led encendido) tendrá que actuar.

Es posible recojer ese valor? :-?

No entiendo muy bien, a que valor te refieres, pero si es analógico, el arduino tiene entradas analógicas, y si es un valor digital, pues también tiene entradas digitales.

No soy un experto, pero no acabo de ver dónde está tu problema

Saludos

/BlueIcaro

Yo tampoco consigo entender bien la pregunta. Intenta precisar lo que deseas.

El Led rojo se enciende según la señal que recibe el sensor de IR. Esta conectado con un emisor-receptor de IR, que segun la señal que reciben entre ellos el led se enciende mas o menos (se supone que le llega mas o menos voltaje).
Es digital.

Yo necesitaria recojer el valor del voltaje que recibe el LED para encenderse, saber si le llegan 3V, 2,1V, 0V…

Se ha entendido mejor mi duda?

Buenas,

Haber, si lo he entendido bien, lo que quieres es que cuando el sensor envie una senyal de 3V se encienda una luz, de 2 otra etc...O bien que se encienda cuando valga 3, 2 o otra Tension que escojas.

Bueno, si es este su funcionamiento, debes conectarlo a una entrada analogica. Piensa que una entrada dgital es una entrada tipo booleano, es decir 1 o 0, por lo que no puedes leer valores de tension.

Las entradas analogicas pueden leer valors de tension, entre 0 y 1024. Asi puedes captar la tension deseada.

Para ajustar la escala puedes utlizar la formula tipica de una regla de 3. o la isntruccion map(). asi puedes captar exactamente cuando es una tension o otra.

Si es esto lo que preguntavas, y tienes alguna duda mas, dimelo i te puede explciar las intrucciones que te he descrito. No lo hago ahora pk es un ya llebo un buen rollo y no se si es esto lo que pedias. jeje

Ya diras algo!

Exactamente es eso lo que necesito.

Necesito que si me llega una tension mayor a 0 que no se encienda el LED, en cambio, si la tension es 0 (que no recibe señal, vamos) se ha de encender el LED.

El emisor-receptor que tengo es como el del primer link que he colgado. Se podrá poner de forma analógica?

Vale ya lo he entendido. Y ya lo hacias bien, para ese tipo de funcion, tuliza entradas digitales, que son boolenas. No obstante yo pondira una pata del sensor a el pin de lectura digital y la otra a masa. Lo que intento hacer es un divisor de tension. de esta manera quando el led no recibe valor es 0, y quando si da tension seria un 1 en la puerta digital. Podriamos interpretar el led como un pulsador. (si es asi te recomiendo que mires en los tutorials de arduino el tutoral "switch")

No obstante debemos tenenr en cuenta que la tension que te da el led varia, es decir k no siempre es linealmente 0 o 5V. asi que puede que entegas problemas por ese motivo, ya que la puerta digital lee un 0 cuando no hay tension i un 1 cuando la hay.

Para solucionar este problema, desde mi punto de vista (k no soy un gran esperto aviso:P) teines 2 opciones:

1- Utilizar la puerta analogica, y configuralra para cuando el valor del led supere Xvalor de tension, encienda el Led

//Codigo ejemplo de esta funcion:

//Variables int ledPin = 13; //Aki decidimos que pin utilizaremos para la connectar el led que queremos que se encienda. int Val = 0; // esta servirar para inicializar la variable donde guardaremos el valor de tension del detector byte=0;

void setup() {

pinMode(ledPin, OUTPUT);

}

void loop() {

val = analogRead(0); //El num entre parentesis corresponde al numero de pin analogico que vamos a usar

/******************************************************* Recuerdo que el valor analogico lee valores entre 0 i 1024, por lo tanto alomejor te interesa escalarlo. teines 2 opciones.

1)Regla de tres:

1024----------- 5V Val leido ----- X

Per tant: X=((Val leido)*5)/1024

2)instrucion map()

val=map(0, 1024, 0, 5) ********************************************************/

val=map(0, 1024, 0, 5) if (val >= Valor 'val' esogido) digitalWrite(ledPin,HIGH) else digitalWrite(ledPin,LOW)

}

Una manera seria esa.

La otra es montarte un ciruitiyo con un operacional funcionando como comparador, donde para X tension que de 5V o 0V.

No se si me he explicado bien, qualquier duda ya diras.

PD: tampoco se si es la mejor solucion, xo es lo k se me ocurre. Yo personalmente escogeria la ocpion de codigo antes le la opcion Hardware.

No entiendo una cosilla.

Si miras el ejemplo del primer post eso ya lo hago. Conecto el sensor en el pin digital 13 y al GND.

No entiendo lo del AnalogRead, se supone que deberia conectar "algo" en un puerto analógico, no? Si has dicho que lo conecte en digital y GND, no leerá nada desde AnalogRead y la variable val estará en blanco no?

Valeee! he hecho lo que en un principio devia de hacer…leerme el post que colgaste. jejeje

Haber por lo que he entendido el fotresitor funciona como “interrupotr”.
Es decir, que si recipe senyal deja pasar corriente encendiendo el led con la intesidad proporcional a la corriente que deje circular.

Lo que mi imagino que quieres es leer el valor de voltage exacto. Para ello, necesitas leer el valro de tension mediante las entradas analogicas.
Asi que deveras connectar una pata del fotoresistor a la entrada analogica, i la otra a masa, haciendo el divisor de tension que te habia explicado antes.

luego con el codigo que te puesto es lo que haria.

El Led azul es el que da luz, asi que ese tiene que estar connectado al pin 13 i GND, con ese, variando el valor de tension que envies, variara su luminosidad. Esa luminosidad la recivirar el fotoresitor, que se traducirar en tension que deje circular. Esa es la tension que deveras leer con la entrada analogica. sigiendo el esquema del post que colgaste, el conector que va al led que se enciende iria a la entrada analogica.

Una vez leido el voltage (como te explicava en mi anterior aportacion) podras escoger a que nivel de voltage debes encender o no el led que idique que se a superado ese voltage o lo como lo interpretes tu.

Entonces, ese led que quieres enceder lo deveras connectar el pin + a una salida digital, i el - a GND.

Ejemplo practico de funcionamiento (Dime si he entendiod bien lo que pedias con este ejemplo que te pongo, y si te he respondido correctamente o tienes mas dudas):

  1. con el led emisor de luz, vas subiendo la intesidad luminica.
  2. de tal modo que el sensor va augmentado la tension
  3. se llega a la tension que hemos escogido para que se encienda el led
    4)entonces procedemos a encender el led de “alarma”

seria mas o menos eso?

Bien hecho por leerte el post jajajaja

Mas o menos. Lo que pasa que yo lo que quiero hacer es que si no llega señal es cuando se encienda el led(que puede estar conectado en el pin que sea, independientemente del "fototransistor". Podria aprovechar el que se enciende como "calidad de señal" o dejarlo oculto. Pero hacer eso de que cuando la señal que reciba sea 0 encienda otro led conectado a otro pin.

Entonces... Si el led azul es el que da la luz, debo conectar el "transparente" a la entrada analógica para que me lea los valores de éste? Entonces cuando reciba la señal, hacer la transformacion con el código que has colgado antes y aplicarle que si el valor que recibe es 0 que se encienda el led conectado al pin 4(por ejemplo) y que si recibe mas de 0 que esté apagado ese led. Al estar con el loop lo hará en todo momento igual que una temporizacion de temperatura que tengo. Lo he entendido bien?

Mañana lo probaré que ahora es un poco tarde y mañana toca madrugar. :-[

Gracias por todo ;)

Buenas!

buenu, haber si lo unico que quieres es que el led se encienda cuando el no reciba nada de luz el fotoresitor pro lo tando el valor de V sea 0. Lo unico que tienes que hacer es, manteniendo el montage del eskema del psot, canviar el codigo. Concretamente en la condicion de los “if”.

Cambiando el If(“luz”==HIGH) por LOW. y ya te deveria xutar.

Ese último post tuyo no lo entiendo, a que codigo te refieres que debo cambiar, el tuyo?

Otra cosa: Ayer conecte emisor y receptor a analogico (una vez cada uno) e intenté recojer los valores que recibia. La variable se quedaba en blanco, asi que eso no sirve.

Poniendolo como mi primer post, con LOW, no llega a encenderse en ningun momento porque no le llega señal, entonces... se podria hacer algo asi?

___________LED_________ | | | | | | | | | + FOTORESISTOR -

y que siempre tenga voltaje, y segun lo que reciba del fotoresistor lo apague con un LOW? O este esquema es imposible de implementar? No se me ocurre otra cosa sinó :-[

Holap,

Mira como no nos estamos comprendiendo mu bien, te voy a dibujar un eskema de como lo haria y te lo mando al email que tienes puesto en el foro. ok?

Lo k e te lo enviare mañana que ahora es un poco tarde y vengo de estudiar...y no puedo mas.. jejeej.

ta luegs

Perfecto! Muchas gracias.

No vendrá de un día, asi que si te viene mal hacerlo para mañana hazlo para cuando puedas. Yo tambien estoy de examenes y entiendo lo que es ;D

Lo único malo es que lo expongo despues de exámenes :P

Merci! ;)

Hola... recuerdas que espero el mail? :-[

buenas!

Perdona por el retraso! ya te he enviao el mail!

Leído está! Aunque no he entendido la idea.

Te he contestado a ese mail :D

Hola! a todo el mundo.

Espero no llegar muy tarde a la cuestión que planteas en tu primer 'post' la solución la tienes en tu misma pregunta.

Sólo tienes que pensar un poco en lo que estás haciendo, concretamente al alimentar al LED. Por lo que se desprende de tu pregunta (es una cuestión de escritura, cuando uno escribe, tiene que describir y no liar la cuestión).

Si aún y así, necesitas la solución, sólo debes indicarlo y te disiparé las dudas

(Utilicen las comas, puntos y acentos, son muy importantes al escribir en español), les entenderán mucho más fácilmente.

Gracias por seguir este consejo.

Saludos a todo el mundo.