/*----------------------------------------------------------------------------*/ /** * Testing HC06 bluetooth module , TowerPro MG996R servo & Text LCD * - note: servo pin (1|orange:PWM)(2|red:vcc)(3|brown:ground) **/ /*----------------------------------------------------------------------------*/ #define BTNAME "nmk322bt" #define BTPASS "0000" #include "hc06.h" #include "uart.h" #include "timer.h" #include "utils.h" /*----------------------------------------------------------------------------*/ /** interface as defined in nmk322 lab module */ #define _LCD_8BIT_INTERFACE_ #define _LCD_PINS_DEFINED_ MY1SFR(LCD_DATA,0xA0); MY1SBIT(LCD_BUSY,0xA7); MY1SBIT(LCD_DNC,0x87); MY1SBIT(LCD_RNW,0x86); MY1SBIT(LCD_ENB,0x85); /*----------------------------------------------------------------------------*/ #include "textlcd.h" /*----------------------------------------------------------------------------*/ #define SERVO_PIN P1_0 #include "servo.h" /*----------------------------------------------------------------------------*/ MY1SBIT(GO000,PIN15); MY1SBIT(GO1MS,PIN16); MY1SBIT(GO2MS,PIN17); /*----------------------------------------------------------------------------*/ #define BUFFSIZE 128 /*----------------------------------------------------------------------------*/ __xdata char buff[BUFFSIZE]; /*----------------------------------------------------------------------------*/ void main(void) { unsigned char curr, test; GO000 = 1; GO1MS = 1; GO2MS = 1; timer_init(); servo_init(); lcd_init(); lcd_goto_line1(); lcd_puts("NMK322 SV/LCD/BT"); uart_init(); uart_puts("NMK322 SV/LCD/BT\r\n\r\n"); hc06_init(); curr = 3; do { uart_puts("-- Sending AT... "); hc06_find(); if (hc06_wait_ok()==HC06_OK) { uart_puts("OK.\r\n"); uart_puts("\r\nSet default name & pin\r\n"); uart_puts("-- Set Name ("); uart_puts(BTNAME); uart_puts("): "); hc06_setname(buff,BUFFSIZE); uart_puts(buff); uart_puts("\r\n"); timer_delay1s(test,1); /* set pass */ uart_puts("-- Set Pin ("); uart_puts(BTPASS); uart_puts("): "); hc06_setpin(buff,BUFFSIZE); uart_puts(buff); uart_puts("\r\n"); timer_delay1s(test,1); break; } uart_puts("timeout.\n"); timer_delay1s(test,1); } while (--curr); while (1) { if (hc06_peek()) { if (hc06_wait(buff,BUFFSIZE)>1) { if (buff[0]=='#') { curr = (unsigned char) str2uint(&buff[1]); if (curr>=5&&curr<=25) { uart_puts("## Turning to ("); uart_puts(&buff[1]); uart_puts(")\r\n"); servo_turn(curr); } else { uart_puts("** Invalid angle ("); uart_puts(&buff[1]); uart_puts(")\r\n"); } } else { uart_puts(">> "); uart_puts(buff); uart_puts("\r\n"); } } } if (GO000==0) { lcd_goto_line2(); lcd_puts("ServoTurn CENTER"); servo_turn(15); while (!GO000); lcd_goto_line2(); lcd_puts(" "); } if (GO1MS==0) { lcd_goto_line2(); lcd_puts("ServoTurn PWM1ms"); servo_turn(10); // 1ms pwm while (!GO1MS); lcd_goto_line2(); lcd_puts(" "); } if (GO2MS==0) { lcd_goto_line2(); lcd_puts("ServoTurn PWM2ms"); servo_turn(20); // 2ms pwm while (!GO2MS); lcd_goto_line2(); lcd_puts(" "); } } } /*----------------------------------------------------------------------------*/