HispaLUG

El foro LUGnático => Technic & Mindstorms => Mensaje iniciado por: Dearbast en 17 de Julio de 2008, 19:06:26 PM

Título: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 17 de Julio de 2008, 19:06:26 PM
Hola a todos...como están...
Necesito hacerles una consulta. Arme el candy sorter que viene con el programa RIS y traté de bajarle el programa que ya viene de muestra y que permite que funcione colocando bolitas verdes y rojas en cajoncitos diferentes. Pero resulta que en el programa falta colocar los valores necesarios para que sepa si es verde o si es rojo. Por favor, ¿podría alguno de Uds. indicarme cuales son esos valores, o como los obtengo y en que bloques del programa los tengo que colocar?
Mil gracias por vuestra generosidad.
Dearbast :)







Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 17 de Julio de 2008, 19:25:41 PM
Los valores no son fijos ya que dependen de la luz ambiental que haya.

Para ver el valor que corresponde a cada color tienes que hacer lo siguiente:

- carga el programa en el RCX
- ejecútalo sin conectar los motores (más que nada por comodidad)
- en el RCX pulsa el botón negro (view) tantas veces como sea necesario para que en la pantalla aparezca una flecha debajo del número de sensor donde está colocado el sensor de luz.
- mueve el sensor sobre los ladrillos cuyos colores quieres averiguar y anota dichos valores

Ya tienes los valores de referencia. No recuerdo muy bien si el software RIS te permite marcar un margen de valores o solamente un valor específico. Un rango (56-58 en vez de 57) siempre te dará un poco más de margen de error por la variación en la luz ambiental.

Finalmente, lo mejor sería que al iniciar el programa hicieras una rutina para calibrar el sensor. (pulsa sensor de contacto -> lee valor verde, pulsa otra vez-> lee valor rojo -> pulsa otra vez, espera 2 segundos e inicia el resto del programa)  De ese modo siempre tendrías los valores adecuados a las condiciones lumínicas.
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 17 de Julio de 2008, 20:08:36 PM
Estimado Jetro...gracias por responderme:
Por favor, en que módulos del programa debo configurar los datos de mi sensor de luz?

Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 17 de Julio de 2008, 20:23:40 PM
En "Set CandyColor 1" y "Set CandyColor 2"

Puedes elegir un valor exacto o asignar na variable (como puedes ver en la imagen que adjunto) Si previamente lees los valores de los colores y colocas cada uno en una variable tienes un programa que calibra los sensores al inicio.
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 17 de Julio de 2008, 20:34:47 PM
Jetro: Nuevamente mil gracias por tu sapienza y tu generosidad.  :)
Que tengas un hermoso día. Un saludo muy agradecido. Dearbast
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 18 de Julio de 2008, 00:24:26 AM
Ya nos contarás como vas avanzando. La verdad es que nunca llegué a construir ese modelo (ni mas de la mitad de los otros) del paquete RIS, pero hay que decir que son modelos y ejemplos de programación bastante interesantes. Igual me animo e intento 'traducir' el programa a NQC.
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 10 de Agosto de 2008, 23:44:17 PM
Hola Jetro, como estás: Nuevamente te estoy molestando por el tema de mi sensor de colores. Por favor podrías decirme si es correcta la forma en que establecí las variables en el programa? porque tengo problemas para su funcionamiento. Debe reconocer si la gragea es roja o verde y en base a eso girar hacia un lado o hacia el otro a la vez que deposita la gragea en un cajoncito usando la cinta transportadora. Mil gracias por tu dedicación y tu tiempo, pero la verdad es que tengo que recurrir a vos porque este proyecto me está superando.
Nuevamente gracias, Dearbast (bien dicho novato en apuros!!!!!!!!!)
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 10 de Agosto de 2008, 23:55:03 PM
Para eso estamos :D

Por desgracia la imagen que has puesto tiene muy poca definición y no puedo leer casi nada.
Para subsanar ese problemilla puedes:

- colgar la foto en la galería del foro: admite imágenes de más tamaño
- usar cualquier otro sitio para subir la imagen (BrickShelf, imageshack, ...) y colocar un link aquí
- hacer disponible el programa mismo para poder verlo directamente dentro del RIS
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 11 de Agosto de 2008, 00:48:48 AM
Jetro: quisiera enviarte el archivo pero me rebota el formato. Cómo hago para enviarte el archivo para que lo puedas ver directamente en el RIS. es un .lsc
Saludos cordiales, Dearbast
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 11 de Agosto de 2008, 09:23:44 AM
fallo del foro... añade .txt al nombre del archivo (nombre.lsc.txt) y prueba otra vez.
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 11 de Agosto de 2008, 11:59:27 AM
Aquí va Jetro...ojalá llegue bien...saludos
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 11 de Agosto de 2008, 15:41:12 PM
No me acordaba que no tengo RIS instalado en este ordenador... y el portátil está en el servicio técnico  :'(

¿Exactamente qué problemas observas? Dices que a veces no funciona bien, pero en esos casos ¿qué es lo que falla? ?Cuándo sucede eso? (Puede ser un problema de la iluminación de la zona donde haces las pruebas?

Por lo que veo del programa en modo texto has establecido una variable para >410 y otra para <410
EN principio parece estar bien, pero esas lecturas son muy 'volátiles'. En un día con sol pueden estar alrededor de 500 y en una habitación cerrada tal vez 300...
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 11 de Agosto de 2008, 16:46:13 PM
Que lástima que no tengas el RIS. Justamente no estoy segura:
1 - De que estén bien definidas las variables. Me convendría poner un rango diferente? cual?
2 - De que estén bien ubicados los bloques que definen variables dentro del programa
Todo lo que puedas indicarme te lo voy a agradecer muchísimo. Un saludo afectuoso, Dearbast (re-novato en apuros)
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 12 de Agosto de 2008, 14:10:57 PM
Hola Jetro...coloqué en Imageshack tres imagenes que juntas forman el programa sobre el que estoy consultando. Espero que esten claritas y que puedas ayudarme. Aquí van...
Mil gracias. Dearbast

[img=https://img244.imageshack.us/img244/1428/prog1fm3.gif] (https://imageshack.us)

[img=https://img291.imageshack.us/img291/4808/prog2gh1.gif] (https://imageshack.us)

[img=https://img141.imageshack.us/img141/980/prog3kh1.gif] (https://imageshack.us)
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 12 de Agosto de 2008, 14:47:02 PM
Jetro: Tambien subi las imagenes a la galeria de HISPALUG...  :)


Inicio > Galerías de Lugnáticos > Dearbast

GRACIAS!!!!!
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 12 de Agosto de 2008, 17:43:00 PM
Me ha costado un poco, pero ya tengo el RIS cargado en un portátil viejo que he guardado para estas cosas y he cargado tu programa.

Vamos por partes. Tu pregunta es si esta es la manera correcta de definir una variable. La respuesta corta es NO.
¿Porqué? Has usado una variable de sensor, una especie de condición para que suceda algo pero no has dicho qué tiene que pasar si se cumple la condición. De hecho, una vez que cargas el programa en el RIS verás que debajo de cada uno de los dos bloques azules de la derecha pone un cuadro vacío para que coloques los bloques de la acción a tomar. (no sé por qué no se ve en la imagen que has puesto en la galería.)

¿Cómo hacerlo entonces?
Los primeros dos bloques verdes en la columna de la izquierda son para eso. Si pinchas en la pestaña que tienen en la parte derecha verás un menú donde puedes seleccionar su valor. En el programa que has usado como base para el tuyo el valor de CandyColor1 y CandyColor2 está fijado en 0, por lo que el programa no funciona. La solución sencilla sería poner el valor exacto de cada color, pero eso no es la panacea, ya que varía según las condiciones lumínicas del momento en que ejecutas el programa (puede que sea perfecto hoy, pero mañana falle).

El programa ya incorpora un mecanismo para evitarlo en cierta medida. El truco está en el bloque RANGEMAKER. Lo que hace es establecer dos valores (LowRange1 y Highrange1 que son respectivamente CandyColor1 +1 y -1) para que luego se pueda comprobar si el valor de lectura está entre esos dos valores (ambos inclusive). De ese modo no solo comprueba un valor especifico, sino también una variación (mínima) de +1 y -1.

Pero sigue habiendo ese problemilla para que el valor no se tenga que ajustar cada vez que usas el programa. Para solucionar eso tienes que adoptar una estrategia algo más compleja y que constaría de unos cuantos bloques ANTES de los dos bloques 'set'.

Ahora mismo mi hija reclama mi atención haciendome imposible usar el ordenador (de hecho ya ha conseguido apagar uno  :P, así que la respuesta completa tendrá que esperar un poquito.
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 12 de Agosto de 2008, 18:05:30 PM
Gracias, Jetro. Primero lo primero.
Te espero todo el tiempo necesario. Un beso a tu nena.
Dearbast
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 12 de Agosto de 2008, 18:58:39 PM
Antes que siga explicando ¿entiendes exactamente cómo funciona el programa que tienes ahora?
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 12 de Agosto de 2008, 19:01:13 PM
Si, Jetro, te voy siguiendo en el razonamiento. No se si seria capaz yo de modificar el programa, pero te entiendo todo lo que me decis. Gracias por todo.
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 12 de Agosto de 2008, 19:26:23 PM
Bien, eso facilita las cosas.
Lo que tienes que hacer para que siempre tengas los valores correctos es cambiar el programa para que haga lo siguiente:

- dispensar una bola
- leer el valor y asignarlo a la variable CandyColour1 (por ejemplo Set > CandyColor1 > Light1, si eso es donde está conectado el sensor de luz)
- meter la bola en el receptáculo 1
- dispensar otra bola
- leer el valor y asignarlo a la variable CandyColour2
- meter la bola en el receptáculo 2
- continuar el programa a partir del bloque RANGEMAKER

Al iniciar el programa tendrás que asegurarte de que las primeras dos bolas sean de colores distintos.
Si quieres que puedan ser del color que sea también se puede hacer, pero nuevamente hay que hacer el programa un poco más complicado.
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 12 de Agosto de 2008, 19:35:51 PM
Si te parece bien, hago las modificaciones en el programa y lo vuelvo a subir a mi album para que me lo corrijas.
Mil gracias, Dearbast
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 12 de Agosto de 2008, 19:43:54 PM
perfecto!

No olvides adjuntar también el archivo lsc del programa.
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 12 de Agosto de 2008, 19:47:41 PM
ACA VAAA!!!! espero que este bien...
El sensor de luz está conectado en el puerto 1. No coloqué el bloque display value - lastcolor
Si mal no razono, creo que las dos primeras grageas seran de prueba y que comenzará a funcionar con la tercera que ponga.
Millones de gracias!!!!!
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Jetro en 12 de Agosto de 2008, 21:37:14 PM
Efectivamente, el bloque display value - lastcolor no tiene ninguna función esencial en el programa, aunque puedes adaptarlo para que siempre tengas una idea del valor que se usa para cada color.

¿Qué tal funciona?

Otra cosa: tal como lo has programado las dos primeras bolas no caen en ningún contenedor...
Título: Re: Leer sensor de luz en colores verde y rojo
Publicado por: Dearbast en 13 de Agosto de 2008, 14:36:19 PM
Pruebo todo y te cuento...Saludos...Dearbast