单片机/MCUwilliam hill官网
直播中

我口袋里有熊抓冰棍

7年用户 7经验值
私信 关注

蓝牙小车程序出错请大神帮忙看看

没事学习单片机做了一台蓝牙小车,蓝牙控制不了车运动。检测了手机和蓝牙的链接。正常,用单片机控制电机一个一个检测,也正常,就是连接手机蓝牙以后控制失败。我自己加数码管看手机发送2,数码管能正常显示2,但是小车就是没反应,感觉case语句哪里出现问题,但是自己搞不明白,请懂得大神帮忙看看。PS:这段程序是没加数码管的。
#include
#define uchar unsigned char
#define uint unsigned int
uint a;
  ***it LED1=P1^0;//左后轮      
  ***it LED2=P1^1;
   ***it LED3=P1^2;//右后轮
   ***it LED4=P1^3;
   ***it LED5=P1^4;//左前轮
   ***it LED6=P1^5;
   ***it LED7=P1^6;//右前轮
   ***it LED8=P1^7;
void init()      //
   {
    TMOD=0X20;  
    TH1=0xfd;     
    TL1=0xfd ;  
    TR1=1;      
    REN=1;      
    SM0=0;
    SM1=1;      
    EA=1;      
    ES=1;      
   }
    void main()  
  {  
               init();
        while(1);
   }
  void ser() interrupt 4   
  {      
          ES=0;
          RI=0;  
         a=SBUF;
         switch(a)
       {
                                          case 2: go();  break;   //前进
                                          case4:  left();  break;  //左转
                                          case6:  right();  break;  //右转
                                          case8:  back();  break;  //后退
                                          case5:  stop();  break;  //停止
                                          default:break;
       }
           ES=1;
    }
        //···········------------小车运行子程序-------*/
void go()
       {
              LED1= 1;
              LED2= 0;
              LED3= 1;
              LED4= 0;
              LED5= 1;
              LED6= 0;
              LED7= 0;
              LED8= 1;
       }

void back()
       {
              LED1= 0;
              LED2= 1;
              LED3= 0;
              LED4= 1;
              LED5= 0;
              LED6= 1;
              LED7= 1;
              LED8= 0;
       }

void left()
       {
              LED1= 1;
              LED2= 0;
              LED3= 0;
              LED4= 1;
              LED5= 0;
              LED6= 1;
              LED7= 0;
              LED8= 1;
       }

void right()
       {
              LED1= 0;
              LED2= 1;
              LED3= 1;
              LED4= 0;
              LED5= 1;
              LED6= 0;
              LED7= 1;
              LED8= 0;
       }
void stop()
       {
              LED1= 0;
              LED2= 0;
              LED3= 0;
              LED4= 0;
              LED5= 0;
              LED6= 0;
              LED7= 0;
              LED8= 0;
       }

回帖(8)

icepoint11

2017-6-13 08:06:51
动力不足,没有用h桥吧?
举报

icepoint11

2017-6-13 08:08:35
看你的意思好像是单独用高低电平控制的,负载可能不够,尤其四驱
举报

人中狼

2017-6-13 08:20:04
最好上一下威廉希尔官方网站 ,光看程序,很难判断问题原因,可以用单片机控制小车行走试试,先确定小车能够行走。
另外这是你程序go里的一部分, LED5= 1; LED6= 0; LED7= 0; LED8= 1;,最后两个引脚的驱动电平和其他的不一样,所以需要贴一下相应的威廉希尔官方网站 图
举报

houjue

2017-6-13 11:46:12
这样写一下试试:
{
default:break;
}
举报

人中狼

2017-6-13 12:11:18
case4:  left();  break;  //左转
case6:  right();  break;  //右转
case8:  back();  break;  //后退
这几个case是手误,还是粘贴的问题,为什么case和数字之间没有空格
举报

我口袋里有熊抓冰棍

2017-6-16 22:57:43
引用: 人中狼 发表于 2017-6-13 12:11
case4:  left();  break;  //左转
case6:  right();  break;  //右转
case8:  back();  break;  //后退

这里粘贴的问题,我加了空格了。
举报

我口袋里有熊抓冰棍

2017-6-16 22:59:35
引用: icepoint11 发表于 2017-6-13 08:06
动力不足,没有用h桥吧?

用了h桥,问题好像是蓝牙的问题,我用苹果的lightblue可以控制,安卓的连接上控制不了。
举报

我口袋里有熊抓冰棍

2017-6-17 00:26:09
我用苹果的lightblue调试 控制都正常,但是安卓手机就不行。我用电脑端口的串口助手看安卓手机收发的信号,也正常,安卓的就是控制不了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分