Diferencia entre revisiones de «Taller-skybot:Sesión4:Programación Skybot:Ejemplos»
(→<font color="#0000FF">Activar los motores para que el robot avance</font>) |
(→<font color="#0000FF">Activar los motores para que el robot avance</font>) |
||
Línea 86: | Línea 86: | ||
=== <font color="#0000FF">Activar los motores para que el robot avance</font> === | === <font color="#0000FF">Activar los motores para que el robot avance</font> === | ||
* '''Fichero''': [http://svn.iearobotics.com/taller_skybot/trunk/prog/ejemplos/motor-on.c motor-on.c] | * '''Fichero''': [http://svn.iearobotics.com/taller_skybot/trunk/prog/ejemplos/motor-on.c motor-on.c] | ||
− | * '''Descripción''': | + | * '''Descripción''': Activar los motores del Skybot para que avance |
* '''Explicación''': | * '''Explicación''': | ||
+ | |||
+ | Ejemplo de cómo activar los motores para que el Skybot se desplace hacia adelante. Esto se consigue enviando valores por el puerto B | ||
+ | |||
+ | Para hacer la programación más sencilla, se ha definido la '''constante SKYBOT''': | ||
+ | |||
+ | #define SKYBOT PORTB | ||
+ | |||
+ | y las siguientes constantes contienen los valores necesarios para que el robot realice el resto de movimiento: Adelante, atrás, izquierda y derecha. Están definidos en hexadecimal por comodidad | ||
+ | |||
+ | #define AVANZA 0x1C | ||
+ | #define ATRAS 0x16 | ||
+ | #define IZQUIERDA 0x1E | ||
+ | #define DERECHA 0x14 | ||
+ | #define STOP 0x00 | ||
=== <font color="#0000FF">Parar los motores</font> === | === <font color="#0000FF">Parar los motores</font> === |
Revisión del 23:43 24 jun 2010
Contenido
Introducción
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!
Descargas
Todos los ejemplos |
Ejemplos sueltos
ledon.c | ledon.hex | Encender el led de la Skypic |
ledp.c | ledp.hex | Hacer que el led de la Skypic parpadee |
pulsador-led.c | pulsador-led.hex | Mostrar por el led el valor negado del pulsador de pruebas |
Repositorio
- Repositorio SVN: http://svn.iearobotics.com/taller_skybot/trunk/prog/ejemplos
Ejemplos básicos
Encender el led de la Skypic
- Fichero: ledon.c
- Descripción: Encender el led de la Skypic
- Explicación:
Este es el ejemplo "hola mundo" pero con modificaciones para hacerlo más legible.
La directiva #define nos permite definir constantes. En este ejemplo se definen las constantes ENTRADA, LED y ON:
#define ENTRADA 1 #define LED RB1 #define ON 1
Esto nos permite poder usar estas nuevas constantes en vez de sus valores. Ahora ya no nos tenemos que acordar de que el led de la skypic está en el bit RB1 ni de que para encenderlo hay que escribir un 1. Ahora simplemente haciendo:
LED = ON;
Se encenderá el led de la Skypic
Led parpadeante
- Fichero: ledp.c
- Descripción: Este ejemplo hace parpadear el led de la Skypic
- Explicación:
En la función main() nos encontramos con:
LED=LED^1;
Esta línea cambia de estado el LED. Si estaba encendido lo apaga y vice-versa. El símbolo ^ es el operador XOR (O exclusivo).
pausa(RETRASO); //-- Pausa
A continuación se llama a la función pausa() que la hemos definido nosotros para hacer una pausa. El microcontrolador ejecuta instrucciones muy rápido. Si cambiamos de estado el led muy rápidamente, nuestro ojo no lo apreciará y dará la impresión de que el led está siempre encendido. Por ello hay que introducir una pausa. En la función de pausa se decrementa una variable hasta llegar a 0. Cambiando el parámetro que se le paso conseguimos una pausa mayor o menor.
- Ejercicios para practicar:
EJERCICIO 1: | Modificar el valor de la constante RETRASO. Poniendo diferentes valores. Por ejemplo 0x8000, 0x4000... ¿Qué sucede? |
EJERCICIO 2: | Eliminar la llamada a la función pausa(). ¿Qué sucede? |
Leyendo el pulsador de pruebas
- Fichero: pulsador-led.c
- Descripción: Mostrar por el LED de la skypic el estado del pulsador de pruebas
- Explicación:
El pulsador de pruebas de la Skypic se encuentra en el bit RB1. Para hacer el programa más legible se define la constante PULSADOR:
#define PULSADOR RB0
El bucle principal simplemente lee el valor del PULSADOR y saca por el led el estado contrario: si esta apretado se enciende y se apaga en caso contrario:
LED = PULSADOR^1;
Ejemplos de motores y sensores
Activar los motores para que el robot avance
- Fichero: motor-on.c
- Descripción: Activar los motores del Skybot para que avance
- Explicación:
Ejemplo de cómo activar los motores para que el Skybot se desplace hacia adelante. Esto se consigue enviando valores por el puerto B
Para hacer la programación más sencilla, se ha definido la constante SKYBOT:
#define SKYBOT PORTB
y las siguientes constantes contienen los valores necesarios para que el robot realice el resto de movimiento: Adelante, atrás, izquierda y derecha. Están definidos en hexadecimal por comodidad
#define AVANZA 0x1C #define ATRAS 0x16 #define IZQUIERDA 0x1E #define DERECHA 0x14 #define STOP 0x00
Parar los motores
- Fichero: [ ]
- Descripción:
- Explicación:
- Fichero: [ ]
- Descripción:
- Explicación:
Temporización
Puerto serie en el PIC
Mezclando de todo un poco
Ejemplos de comportamientos sencillos
Enlaces
- Taller Skybot. Página principal
- Taller Skybot:Sesión 4
Noticias
- 23/Junio/2010: Comenzada esta página. Migración de la documentación en HTML.