Taller de Robótica Básico - Skybot v1.4. - SESION 3 - Ejemplos de programación del Skybot |
El objetivo de este capítulo es mostrar ejemplos de programas en C para manejar diferentes recursos del robot. Editando, compilando, probando y modificando los ejemplos se aprenderá muy rápidamente a manejar el robot y en poco tiempo se podrá dar rienda suelta a la imaginación para hacer otras cosas... ¡Qué comience la fiesta!
Para los siguientes ejemplos desconectar el cable que une la Skypic con la CT293.
[ejemplo1] Led encendido/apagado. Hacer que el led de la Skypic se encienda cada vez que se acccione el pulsador de la skypic. |
En la función main() nos encontramos con:
if (Pulsador_esta_pulsado() == VERDADERO) { |
Esta línea comprueba si la funcion Pulsador_esta_pulsado() devuelve VERDADERO. Según esta condición se cumpla o no, se llamará a la función EncenderLed() o ApagarLed().
Y envolviendo a este código de comprobación, encontramos lo siguiente:
for (;;) |
La instrucción "for(;;)", equivale a decir que se repita continuamente todo aquello que se encuentre entre sus corchetes. De este modo, nos aseguramos de que nuestro programa compruebe sin parar si el pulsador esta accionado o no (y de encender/apagar el led de la skypic).
EXPERIMENTO: Modificar la condición del if para modificar el comportamiento del skybot
[ejemplo2] Activar los motores para que el robot vaya hacia adelante durante 2 segundos |
Este programa simplemente hace que el robot avance durante 2 segundos exactamente.
Lo primero que se hace es configurar el Skybot para que use los motores.
// Configuramos el PIC16f876a
para |
y después se detalla la acción exacta que queremos que realice:
Avanzar(); |
Con estas instrucciones, le decimos que los motores se pongan a avanzar, que lo hagan durante 2 segundos, y luego ya cambiamos la configuración de los motores para que se detengan. Este será el procedimiento habitual cuando queramos decirle a nuestro skybot que realice una operación determinada durante X segundos.
[ejemplo3] Mover el robot en diferentes direcciones |
Este ejemplo es igual que el ejemplo2, pero en vez de enviar la orden Avanzar(), se envían distintas ordenes, para que el robot baile un poco.
// adaptarse al Robot Skybot |
EXPERIMENTO: Modificar las ordenes para que el skybot realice el trazado de un cuadrado imaginario.
[ejemplo4] Prueba del sensor 1. Leer su estado y mostrarlo por el led |
Este ejemplo es muy útil para comprobar si los sensores funcionan correctamente. El programa sólo lee el sensor infrarrojo 1 pero cambiando la llamada a la función SensorIR_Izq_Lee_Negro() por su homónima para el derecho, podemos leer el otro sensor, reflejando su estado por el led.
for (;;) |
EXPERIMENTO: Cambiar el valor de la condición del if para que sea el derecho, y que se apague cuando lea blanco.
[ejemplo5] Prueba de motores y sensores. El robot avanza mientras el sensor 3 lee blanco. Se para si lee negro. |
Ejemplo de un comportamiento muy sencillo del robot. Mientras el sensor 3 lee blanco, el robot está avanzando. Pero si lee negro se detiene. Cambiando el valor de la condición del if, podemos hacer la misma prueba con cualquiera de los otros tres sensores.
EXPERIMENTO: Colocar el robot sobre una superficie negra ú opaca (por ejemplo, el suelo). Colocar un trozo de cinta aislante blanca a unos centímetros de la cabeza del robot. El robot avanzará hasta alcanzar la "meta". En este ejemplo sólo se moverá en línea recta. ¡¡Prueba a programar un movimiento más complejo!!
Ejemplos para el skybot |
Fichero C |
Ejecutable |
HTML |
Descripción |
Al apretar el Pulsador el LED se enciende |
|||
Hacemos que el Skybot avance durante 2 segundos |
|||
Hacemos que el robot se mueva en diferentes direcciones |
|||
Si el sensor 1 detecta negro apago el LED |
|||
Mientras el Sensor3 lea blanco avanza el robot |
|||
Al apretar el Bumper Derecho el LED se enciende |
|||
Al apretar el Bumper Izquierdo el robot se para |
|||
El Led parpadea |
|||
Lectura de la LDR y huida hacia delante (huye de la luz) (BETA) |
|||
-------------- |
TEMPORIZADOR 0: Rutina de pausa que usa el temporizador 0 (sin interrupciones). Para ser incluido en la misma carpeta que libreria_skybot.h |
||
-------------- |
TEMPORIZADOR 0: Codigo de las funciones de pausa que usa el temporizador 0 (sin interrupciones).Para ser incluido en la misma carpeta que libreria_skybot.h |
||
-------------- |
LIBRERIA SKYBOT: Conjunto de funciones que facilitan el acceso a los sensores y motores del skybot.Para ser incluido en la misma carpeta que el fichero de codigo C principal |
||
-------------- |
LIBRERIA SKYBOT: Conjunto de funciones que facilitan el acceso a los sensores y motores del skybot.Para ser incluido en la misma carpeta que el fichero de codigo C principal |
||
mogollon.hex |
MOGOLLON: Codigo basico que permite participar en el concurso del mogollon en caso de urgencia. |
||
SIGUE_LINEA: Programa que hace que el Skybot siga una linea |
|||
-------------- |
Ejemplo de Makefile para Linux |
||
BORRAR_CODIGO: Elimina todos los ficheros creados durante el proceso de compilacion |
|||
|
CREAR_EJECUTABLE: Para entornos windows, compila el fichero pasado como argumento, situado en la ruta pasada como segundo argumento (Ver fichero y leer instrucciones en la cabecera). |
||
.......... |
.......... |
TODOS LOS EJEMPLOS para Linux. Con Makefile |
|
.......... |
.......... |
TODOS LOS EJEMPLOS con ficheros de proceso por lotes para Windows (.bat) |