Noticias:

¡Bienvenido a la HispaLUG! - Asociación para aficionados a LEGO®

Menú Principal

Leer sensor de luz en colores verde y rojo

Iniciado por Dearbast, 17 de Julio de 2008, 19:06:26 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Jetro

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.

Dearbast

Gracias, Jetro. Primero lo primero.
Te espero todo el tiempo necesario. Un beso a tu nena.
Dearbast

Jetro

Antes que siga explicando ¿entiendes exactamente cómo funciona el programa que tienes ahora?

Dearbast

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.

Jetro

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.

Dearbast

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

Jetro

perfecto!

No olvides adjuntar también el archivo lsc del programa.

Dearbast

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!!!!!

Jetro

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...

Dearbast