PathFinder, evolución
Después de mucho tiempo sin actualizar, vuelvo… Esta vez con una evolución del Pathfinder: se ha añadido la posibilidad de dirigir al robot dando palmas.
El modelo sigue siendo el anterior, mismo robot con las mismas piezas. También hereda toda la funcionalidad del modelo anterior, por eso de “evolución”
Video:
Programación:
A partir de ahora, ya abandono el IDE gráfico de Lego, para centrarme en el entorno de desarrollo de NXC. Como ya hablé, NXC es un entorno de desarrollo modo texto, programación a pelo, sin IDE, con toda la aspereza que esto lleva, pero que permite desarrollar cosas mucho más complejas.
Bueno, al lio: Pathfinder.nxc Este es el código fuente para que se lo baje quien quiera y haga con el lo que le plazca.
Se ha añadido a la programación antenrior la tarea check_sonido, que se encarga de esperar a que se produzca un sonido “fuerte” para pararse.
En caso de que se produzca un segundo sonido “fuerte”, en caso de que no se produzca ningún sonido más, gira a la izquierda. Si después de la segunda palmada, se produce una tercera, girará a la derecha.
Después de girar, seguirá su camino (la tarea que comprueba que no haya nada delante sigue activa en todo momento)
En caso de que solo se haya producido un sonido “fuerte”, se quedará parado hasta que se produzca otro sonido fuerte.
¿Como se sabe si se ha producido otro sonido “fuerte” dentro de un rango de sonido?
start esperar; start wait_for_mic; until((time_out)||(mic));
Este trozo de código realiza tres acciones:
La primera es iniciar la tarea “esperar”:
task esperar(){
time_out=0;
Wait(1000);
time_out=1;
}
Que se encarga de poner un flag global a 1 pasado un segundo.
La segunda acción es iniciar la tarea “wait_for_mic”:
task wait_for_mic(){
mic=0;
until((MIC > THRESHOLD)||(time_out));
if(!time_out)
mic=1;
}
Esta tarea se encarga de esperar a un sonido “fuerte” o a que se la variable “time_out” sea puesta a 1 por la tarea “esperar”. En el caso de que se produzca un sonido antes del tiempo establecido, el flag global “mic” se pondrá a 1.
La tercera acción es esperar a que se active alguna de las dos flag globales. Las siguientes acciones que se llevarán a cabo serán en función del estado de las flags, si el flag “mic” está activo significa que se ha producido un sonido, por lo que habrá que esperar a otro sonido, o si es el tercero, girar…
Si ha sido el flag “time_out” es que está activo, entonces no se ha producido ningún otro sonido y habrá que parase, o girar a la izquierda…
Conclusión.
En fin, es una nueva aportación… esperemos que lleguen más. De hecho, estoy trabajando en una idea que consiste en aplicar todo el tema de giro asistido y control de tracción de los coches. La idea es hacer un coche de cuatro ruedas,con tracción trasera, con un motor por rueda tractora, ponerle solo las llantas para que no agarre, y ver que tal gira…
1 Comment »
RSS feed for comments on this post. TrackBack URL
Por fin actualicé…