domingo, 10 de mayo de 2009

Máquina anti-aérea (programa)

En la entrada anterior puse las instrucciones de montaje parauna máquina antiaérea, pues bien, aquí dejo dos programas, manual y automático, para que probéis en vuestros robots:

1º)Manual:
http://www.megaupload.com/?d=29M1F97O

Bien, pues empecemos, este programa está compuesto por tres ramas, cada una de ellas activará un motor, así que vamos con la primera:

---Esta rama controlará el movimiento del motor A, que es el que hacer rotar nuestra base, se subdivide en dos bifurcaciones, que sólo se activarán si se pulsan los sensores de contacto, el del puerto 1 para girar a la derecha y el del puerto 2 para girar a la izquierda.
Si os dáis cuanta, todo esto está dentro de un bucle, que lo repetirá en "busca" de que alguien pulse los sensores, entonces moverá el motor hasta que se deje de pulsar el botón, y lo parará.

---La segunda rama controla el disparo, cuando el botón intro se pulse por primera vez tirará fuerte hacia atrás, activando los disparadores, y cuando se pulse por segunda vez, irá despacio hacia delante para que lo paremos cuando ya no pueda girar más.

---La tercera rama controla el motor B, encargado de subir o bajar el ángulo del motor C, que es el que dispara. Funciona igual que la primera rama, solo que con los botones derecho e izquierdo del ladrillo y con la diferenca de activar el motor B en lugar del A.

Finalmente, solo queda comentar que los motores A y B se mueven con mucha potencia, debido a que el uso de tornillos sin fin baja las revoluciones de salida en unas 150 veces en el A y en unas 100 en el B.

2º)Automático
http://www.megaupload.com/?d=IBJWQFCB
Bien, empezamos con el difícil, el automático.
Este programa está hecho para la versión tiragomas, ya que la otra es más difícil de conseguir.
Comienza con dos ramas, la primera es un simple visor de la distancia detectada por el sensor ultrasónico en la pantalla, la segunda ya es la que tiene el grueso:
Lo primero es poner algunas variables con sus valores iniciales.

Comenzamos con un primer bucle que será el encargado de decidir la distancia máxima para disparar, esto está aquí porque no siempre se usará el robot en el mismo sitio, y así podremos
ajustar la distancia al gusto.
El bucle comienza mostrando las instrucciones en pantalla, con tres visores, y después está el selector de distancia, que sólo se activará si pulsamos el sensor de contacto, una vez hecho esto, leerá la variable "ultrasonic_cm" y le sumará 10, hasta un máximo de 150, cuando volverá a ser 10, que es el valor inicial. Este valor será la distancia máxima a la que disparará el robot, es decir, que cualquier objeto por encima de esa distancia no será detectado.
Finalmente, dentro del bucle, iremos mostrando continuamente el valor de "ultrasonic_cm" en pantalla.

Después del bucle, sonará un sonido, indicando que el robot va a empezar sus maniobras, y después no encontramos de nuevo con dos ramas:

  1. La rama baja moverá nuestro robot, hacia la izquierda e ilimitadamente, hata que la variable "Disparando" sea verdadera, en cuyo caso deberá pararse, para no desviar el disparo. Volverá a moverse al transformarse en falsa.
  2. La segunda rama será la encargada de disparar. Empieza poniendo a 0 variables que se usarán dentro de esta rama, y después comienza un bucle. Dentro del bucle hay una gran bifurcación. Esta no tiene acciones en la parte falsa, y la parte verdadera solo se cumplira cuando los cm del ultrasónico sean menores a los ajustados en la variable "ultrasonic_cm". Una vez sea esto cierto, lo primero que encontramos es una espera de 4 segundos. Esto es para dejar que el motor A siga girando hasta tener centrado el objetivo. Una vez hecho esto, la variable "disparando" se hace verdadera, con lo que la base deja de girar. Una vez quieta, Guardaremos los grados de inicio del sensor de rotación del motor B en una variable, pues luego los necesitaremos. Hecho esto, los motores B y C comenzarán a girar, disparando y aumentando el ángulo a la vez, esto hará que disparen de dos a tres gomas en distintos ángulos. Una vez que el senso r de rotación del B sea mayor que 600 grados, los motores se pararán, y el motor B retrocederá los grados previamente recorridos. Una vez hecho esto, sed leerá la variable "reload" que es la encargado de ver si hace falta recargar la munición, esto sólo se hará cuando hayamos disparado tres veces, por lo que comienzo explicando la rama veradadera de la bifurcación que sigue a la variable: Debido a que la variable sería veradera cuando debe ser falsa, hay un cambio de lógica al inicio de la bifurcación, así que la parte verdadera en realidad sería la falsa. En esta parte verdadera, El motor A se moverá hasta que no se detecte ningún obstáculo, y continuará después durante 1 segundo para estar seguros de que ya se ha pasado de largo y no disparará de nuevo al mismo sitio. Luego, emitirá un sonido y la variable "disparando" se volverá falso para que vuelva a rotar la base. En la segunda parte, la falsa, El robot comienza pidiendo una recarga, y una vez hecha se deberá pulsar intro, entonces dará las gracias y hará lo mismo que en la anterior rama, con la diferencia de añadir una puesta a 0 de la variable "reload".

Y esto es todo, este programa no es muy difícil, así que os animo a probarlo y, si queréis, mejorarlo añadiendo funciones.

Saludos

No hay comentarios:

Publicar un comentario