/*****************************************************************************/ /* sci-menu.c Julio-2005 */ /*---------------------------------------------------------------------------*/ /* Ejemplo para el skybot */ /*---------------------------------------------------------------------------*/ /* Mover el robot desde un terminal serie. Utilizar las teclas o,p,q y a */ /* en minusculas. Configurarlo a 9600 baudios, 8,n,1 */ /*---------------------------------------------------------------------------*/ /* Juan Gonzalez <juan@iearobotics.com> */ /* Modificado por: Javier Valiente <jvaliente@ifara.com> */ /*---------------------------------------------------------------------------*/ /* LICENCIA GPL */ /*****************************************************************************/ //-- Especificar el pic a emplear #include <pic16f876a.h> //-- Se usa la libreria de comunicaciones serie #include "sci.h" //-- Definiciones para los motores. Estos valores define //-- los movimientos del robot #define AVANZA 0x1C #define ATRAS 0x16 #define IZQUIERDA 0x1E #define DERECHA 0x14 #define STOP 0x00 /******************************/ /* Sacar el menu de opciones */ /******************************/ void menu(void) { sci_cad("Menu\n\r"); sci_cad("----\n\r"); sci_cad("q.- adelante\n\r"); sci_cad("a.- atras\n\r"); sci_cad("o.- izquierda\n\r"); sci_cad("p.- derecha\n\r"); sci_cad("ESPACIO.- Parar\n\r"); } /*********************************/ /* Programa principal */ /*********************************/ void main(void) { unsigned char c; //-- Configurar el puerto B //-- RB0, RB5, RB6 y RB7 como entradas //-- RB1, RB2, RB3 y RB4 como salidas //-- Todos los sensores de entrada, pero el RB1 de salida, que es //-- donde esta el led TRISB=0xE1; //-- Configurar las comunicaciones serie sci_conf(); //-- Parar los motores del robot PORTB=STOP; //-- Sacar el menu menu(); //-- Bucle infinito for (;;) { //-- Esperar a que llegue opcion del usuario c=sci_read(); //-- Segun la tecla pulsada... switch(c) { case 'q': //-- Adelante PORTB=0x1C; break; case 'a': PORTB=ATRAS; //-- Atras break; case 'o': PORTB=IZQUIERDA; //-- Izquierda break; case 'p': PORTB=DERECHA; //-- Derecha break; case ' ': //-- stop PORTB=STOP; break; } } }