查看: 138|回复: 4

[未解决] 关于蓝牙HC05的主从通讯问题

[复制链接]
  • TA的每日心情
    郁闷
    2020-5-8 22:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-22 14:50 | 显示全部楼层 |阅读模式
    小弟想做一个用按钮控制灯带变化方向的作品,现在蓝牙通讯也已经完成,代码也写好,但最后有一个很奇怪的问题,我改变主板的蓝牙信号时,从板不能跟着接收到改变的信号,必须在电脑上用arduino软件重新打开一下从板的串口监视器才能接收到主板传过来的蓝牙信号,这是为什么啊?是不是因为我蓝牙是用硬串口的原因啊?如果改成软串的话,代码需要怎么改呢?有没有大佬拯救一下?万分感谢。
    按钮电路连接.png
    灯带电路连接.png
  • TA的每日心情
    郁闷
    2020-5-8 22:21
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-5-22 14:51 | 显示全部楼层
    #include "FastLED.h"            // 此示例程序需要使用FastLED库

    #define NUM_LEDS 60             // LED灯珠数量
    #define LED_DT 9                // Arduino输出控制信号引脚
    #define LED_TYPE WS2812         // LED灯带型号
    #define COLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序

    uint8_t max_bright = 2;       // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高
         int state=0;
    CRGB leds[NUM_LEDS];            // 建立光带leds

    void setup() {
      LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER>(leds, NUM_LEDS);  // 初始化光带
      FastLED.setBrightness(max_bright);                            // 设置光带亮度   
      Serial.begin(9600);
    }

    void loop() {
      // put your main code here, to run repeatedly:
      if(Serial.available()>0){
          state=Serial.read();
          Serial.print(state);
        }
       if(state=='1'){
          
       
          leds[29]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[29]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[28]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[28]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[27]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[27]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[26]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[26]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[25]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[25]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[24]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[24]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[23]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[23]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[22]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[22]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[21]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[21]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[20]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[20]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[19]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[19]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[18]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[18]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[17]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[17]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[16]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[16]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[15]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[15]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[14]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[14]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[13]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[13]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[12]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[12]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[11]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[11]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[10]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[10]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[9]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[9]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[8]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[8]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[7]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[7]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[6]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[6]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[5]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[5]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[4]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[4]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[3]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[3]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[2]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[2]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[1]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[1]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[0]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[0]=CRGB::Black;  
          FastLED.show();   
          delay(1000);   
         state=0;  
        }
        else if(state=='2'){
          leds[0]=CRGB::Black;
          FastLED.show();
          leds[0]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[0]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[1]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[1]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[2]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[2]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[3]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[3]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[4]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[4]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[5]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[5]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[6]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[6]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[7]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[7]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[8]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[8]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[9]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[9]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[10]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[10]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[11]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[11]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[12]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[12]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[13]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[13]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[14]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[14]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[15]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[15]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[16]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[16]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[17]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[17]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[18]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[18]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[19]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[19]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[20]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[20]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[21]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[21]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[22]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[22]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[23]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[23]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[24]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[24]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[25]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[25]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[26]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[26]=CRGB::Black;  
          FastLED.show();   
          delay(1000);
          
          leds[27]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[27]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[28]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[28]=CRGB::Black;  
          FastLED.show();   
          delay(1000);

          leds[29]=CRGB::Red;
          FastLED.show();   
          delay(1000);
          leds[29]=CRGB::Black;  
          FastLED.show();   
          delay(1000);     
       // state=0;
      }
        else
        {
          Serial.println("Wrong Command,Please try again");
          state=0;
          
        }

    }



    这是灯带的代码
  • TA的每日心情
    郁闷
    2020-5-8 22:21
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-5-22 14:52 | 显示全部楼层
    #define LEFT 4      //定义 左按钮
    #define RIGHT 2       //定义 右按钮
    void setup()
    {
      pinMode(LEFT,INPUT);
      pinMode(RIGHT,INPUT);               
      Serial.begin(9600);
    }
    void loop()
    {
       if(digitalRead(LEFT) == HIGH)        //推向左键
      {
          Serial.write('1');//传给从板信号'1'
      }
    }




    #define LEFT 4      //定义 左按钮
    #define RIGHT 2       //定义 右按钮
    void setup()
    {
      pinMode(LEFT,INPUT);
      pinMode(RIGHT,INPUT);               
      Serial.begin(9600);
    }
    void loop()
    {
       if(digitalRead(RIGHT) == HIGH)        //推向右键
      {
          Serial.write('2');//传给从板信号'1'
      }
    }



    #define LEFT 4      //定义 左按钮
    #define RIGHT 2       //定义 右按钮
    void setup()
    {
      pinMode(LEFT,INPUT);
      pinMode(RIGHT,INPUT);               
      Serial.begin(9600);
    }
    void loop()
    {
       if(digitalRead(LEFT) == LOW)        //不推向左键,即在中间和右键处输出0
      {
          Serial.write('0');//传给从板信号'1'
      }
    }




    #define LEFT 4      //定义 左按钮
    #define RIGHT 2       //定义 右按钮
    void setup()
    {
      pinMode(LEFT,INPUT);
      pinMode(RIGHT,INPUT);               
      Serial.begin(9600);
    }
    void loop()
    {
       if(digitalRead(RIGHT) == LOW)        //不推向右键,即在中间和左键处输出0
      {
          Serial.write('0');//传给从板信号'1'
      }
    }


    这是按钮的代码
  • TA的每日心情
    郁闷
    2020-5-8 22:21
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-5-22 14:58 | 显示全部楼层
    上面那个按钮的图片,是我用杜邦线临时做的,如果红线插到2引脚,串口就输出2,如果插到4引脚,串口就输出1.
  • TA的每日心情
    擦汗
    2019-11-1 21:03
  • 签到天数: 101 天

    [LV.6]常住居民II

    发表于 2020-5-22 16:51 | 显示全部楼层
    硬串口已经跟板上USB转成的串口连接,就不能再把蓝牙串口加在它们中间了。  关于软件串口,百度一下吧
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    求大神看看哪里有问题,设备在线,米家也同步正常,就.....
    求大神看看哪里有问题,设
    代码: #define BLINKER_PRINT Serial //用于打开串口 #define BLINKER_WIFI #define
    晒图ESP8266一个框架
    晒图ESP8266一个框架
    好久没发帖了,出来活跃活跃一下。ESP8266免身份登录截图。 最近外研究新的架构M2M或P
    Arduino 求助 串口接收数据不正确,数据丢失问题
    Arduino 求助 串口接收数
    问题整了好久,我自己写的C#程序发送数据,arduino接收数据。 但是发现arduino接收的
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表