现打算做个用蓝牙控制的智能小车,蓝牙模块?
把指令先弄清楚
嗯, 谢谢
蓝牙发数据跟串口通信很像
蓝牙模块本身并不难,从机也可以没有什么指令,默认都可以使用。就当做一条无线串口,直接往里塞数据就可以。难得是上位机程序编程,是用手机控制呢,还是一样使用蓝牙模块做主机。如果是前者,那么你就要会手机蓝牙编程,如果是后者,就需要在主机端配对一下从机,使用AT指令,都非常简单!
就用HC-06就可以了,用那种透传的
#include<at89x51.H> #define Left_1_led P3_4 //P3_2接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1 #define Left_2_led P3_5 //P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2 #define Right_1_led P3_6 //P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3 #define Right_2_led P3_7 //P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4 #define Left_moto_go {P1_0=1,P1_2=0;} //左边1个电机向前走 #define Left_moto_back {P1_0=0,P1_2=1;} //左边一个电机向后转 #define Left_moto_Stop {P1_0=0,P1_1=0;} //左边一个电机停转 #define Right_moto_go {P1_4=1,P1_6 =0;} //右边一个电机向前走 #define Right_moto_back {P1_4=0,P1_6=1;} //右边一个电机向后走 #define Right_moto_Stop {P1_4=0,P1_6=0;} //右边一个电机停转 #define left 'C' #define right 'D' #define up 'A' #define down 'B' #define stop 'F' bit flag_REC=0; bit flag =0; unsigned char i=0; unsigned char dat=0; unsigned char buff[5]=0; //接收缓冲字节 /************************************************************************/ //延时函数 void delay(unsigned int k) { unsigned int x,y; for(x=0;x<k;x++) for(y=0;y<2000;y++); } / /************************************************************************/ //前速前进 void run(void) { Left_moto_go ; //左电机往前走 Right_moto_go ; //右电机往前走 } //前速后退 void backrun(void) { Left_moto_back ; //左电机往前走 Right_moto_back ; //右电机往前走 } //左转 void leftrun(void) { Left_moto_back ; //左电机往前走 Right_moto_go ; //右电机往前走 } //右转 void rightrun(void) { Left_moto_go ; //左电机往前走 Right_moto_back ; //右电机往前走 } //STOP void stoprun(void) { Left_moto_Stop ; //左电机往前走 Right_moto_Stop ; //右电机往前走 } /************************************************************************/ void sint() interrupt 4 //中断接收3个字节 { if(RI) //是否接收中断 { RI=0; dat=SBUF; if(dat=='O'&&(i==0)) //接收数据第一帧 { buff[i]=dat; flag=1; //开始接收数据 } else if(flag==1) { i++; buff[i]=dat; if(i>=2) {i=0;flag=0;flag_REC=1 ;} // 停止接收 } } } /*********************************************************************/ /*--主函数--*/ void main(void) { P1=0x00; TMOD=0x20; TH1=0xFd; //11.0592M晶振,9600波特率 TL1=0xFd; SCON=0x50; PCON=0x00; TR1=1; ES=1; EA=1; while(1) /*无限循环*/ { if(flag_REC==1) // { flag_REC=0; if(buff[0]=='O'&&buff[1]=='N') //第一个字节为O,第二个字节为N,第三个字节为控制码 switch(buff[2]) { case up : // 前进 run(); break; case down: // 后退 backrun(); break; case left: // 左转 leftrun(); break; case right: // 右转 rightrun(); break; case stop: // 停止 stoprun(); break; } } } }
还在用HC-06,建议选择有人物联网的蓝牙模块,主从一体、mesh组网、ibeacon功能,还可以支持微信控制 官网 usr.cn
刚开始可以学arduino学
顶起,值得好好学习!感谢小编