el 04-01-2008 02:27 PM
- Cuando esté en digamos en 0 grados la inclinación, si se le da bajar no lo haga y se mantenga la secuencia del boton "detener", y si está a 43 grados se le da subir que no suba y se mantenga la secuencia del boton "detener", es decir el programa debe de mover el motor entre 0 y 43 grados a voluntad osea de arriba a abajo en este rango.
- Cuando el plano se le de subir (esté a cualquier altura) y al llegar a 43 grados, se desea que se detenga sólo osea que se vaya al botón "detener" y así mismo cuando se le dé bajar y en el momento que llegue a 0 grados se detenga sólo osea se vaya al botón "detener".
- Cuando haya un desplazamiento mayor a 1 centímetro se detenga el plano
Sé que es muy fácil lo que se quiere pero no tengo idea y el proyecto se tiene que entrega ya, y se me hace muy dificil el coordinar la parte de adquisición con la parte digital del programa. Es posible que me puedan ayudar a realizar unas modificaciones al programa??
Espero me puedan ayudar
Gracias
el 04-01-2008 05:55 PM
Hola Alan, viendo tu código creo que tu problema es que tu sistema no reacciona rápidamente a los cambios de inclinacion pero si de los botones. Aquí lo que está pasando es que cuando no hay eventos en tu panel frontal tu ciclo de abajo no va a trabajar hasta que haya un cambio en el panel (así es como trabaja la estructura de eventos).
Aquí lo que podemos hacer para lograr un mejor funcionamiento es separar tu parte de escritura del puerto del el ciclo que controla los botones. Esta colócala en un ciclo aparte que va a estar encargado de estar escribiendo a tus salidas digitales constantemente. En este escribe la lógica de lo que debe o no salir dependiendo de qué botones estén apretados.
Ahora no deseches tu estructura de eventos porque aquí vamos a aprovechar el filtro de eventos. Si quieres que por ejemplo no te permita apretar el botón de abajo si estas a 45 grados lo que haces es agrega el evento mouse down? del botón de abajo. Este filtra el evento lo lee antes de que sucede, aquí tu puedes comparar el valor de tu pendiente que lo podrías leer de una variable local. Si no está en rango que le escriba true a la terminal de discard.
Te anexe uno que no te permite apretar un botón si la perilla tiene un valor menor a 5 lo que evita que cambie el estado.
Saludos