蓝牙彩灯

来自Microduino Wikipedia
853387039@qq.com讨论 | 贡献2015年6月5日 (五) 11:01的版本 (Created page with "{{Language| 蓝牙彩灯}} {| style="width: 800px;" |- | ==目的== 通过Android手机结合Microduino-BT与Microduino-CoreUSB进行蓝牙通讯,从而控制彩灯的颜色...")
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
Language English

目的

通过Android手机结合Microduino-BT与Microduino-CoreUSB进行蓝牙通讯,从而控制彩灯的颜色。

原理

设备

模块 数量 功能
Microduino-CoreUSB/zh 1 核心板
Microduino-Sensorhub/zh 1 传感器转接板
Microduino-BT/zh 1 蓝牙模块
Microduino-Lantern/zh 1 彩灯

文档

Android客户端: 注意:新版BT是蓝牙4.0,需要Android 4.3以上的系统才能支持。这里只提供Android的APP。

APP下载:'文件:Microduino-LAMP-APP.zip

搭建硬件

  • Setup 1:将CoreUSB、BT与Sensorhub叠堆。
  • Setup 2:将彩灯接到Sensorhub的A0引脚上。
Microduino-sensorhub rule.JPG

软件调试

  • Setup 1:开始编程。搭建开发环境,下载程序代码。
  • Setup 2:下载Android客户端。解压安装并打开,如果没有打开蓝牙,会提示用户需要打开蓝牙设备。
  • Setup 3:点击右上角SCAN搜索设备,设备名为Microduino,点击进行连接。
  • 步骤七:初始情况在右上角出现Serial Present,等待变成Serial ready,此时就能正常通讯了。
  • APP说明:
    • 可通过上端来选择颜色是否是单一颜色:Single Color,LAMP上六个灯的颜色一致,还是多种颜色:Multi Color,LAMP上每个灯的颜色都不一样。
    • 可通过圆环来调节等的亮度。
    • 可通过底下的开关来切换开启或关闭灯光。
  • 代码说明,一部分接收蓝牙信息,另一部分根据模拟值的大小控制灯的颜色组合。
    • 蓝牙信息读取

CoreUSB与蓝牙的通讯串口:Serial1

#define my_Serial Serial1
void ble()
{
  while (my_Serial.available())
  {
    char c = my_Serial.read();
    delay(2);

    if (c == 'C')
      buffer_sta = true;
    if (c == '\n')
    {
      color_en = true;
      safe_ms = millis();
    }
    if (buffer_sta)
    {
      buffer[buffer_num] = c;
      buffer_num++;
    }
    //  Serial.println(c);
    //Serial.println(color_en);
  }

  if (buffer_sta)
  {
    buffer_sta = false;

    sscanf((char *)strstr((char *)buffer, "C:"), "C:%d,%d,%d,%d", &sta[0], &sta[1], &sta[2], &sta[3]);

    for (int a = 0; a < buffer_num; a++)
      buffer[a] = NULL;
    buffer_num = 0;

    for (int i = 0; i < 4; i++)
    {
      Serial.print(sta[i]);
      Serial.print(",");
    }
    Serial.println(" ");

    if (-1 == sta[3]) {
      colorSet(strip.Color(sta[0], sta[1], sta[2]));
    }
    else if ((0 <= sta[3]) && (sta[3] < PIXEL_COUNT)) {
      colorSet(strip.Color(sta[0], sta[1], sta[2]), sta[3]);
    }
  }

  if (millis() - safe_ms > 3000)
  {
    safe_ms = millis();
    color_en = false;
  }
}
    • 灯颜色变换

当有蓝牙连接时,蓝牙控制灯的颜色

     if (-1 == sta[3]) {
      colorSet(strip.Color(sta[0], sta[1], sta[2]));
    }
    else if ((0 <= sta[3]) && (sta[3] < PIXEL_COUNT)) {
      colorSet(strip.Color(sta[0], sta[1], sta[2]), sta[3]);
    }

否则自动控制颜色

  if (!color_en)
  {
    rainbowCycle(10, 255, 0, 0, 0);
    rainbowCycle(10, 255, 0, 0, 1);

    rainbowCycle(10, 0, 255, 0, 0);
    rainbowCycle(10, 0, 255, 0, 1);

    rainbowCycle(10, 0, 0, 255, 0);
    rainbowCycle(10, 0, 0, 255, 1);

    rainbowCycle(10, 255, 0, 225, 0);
    rainbowCycle(10, 255, 0, 225, 1);

    rainbowCycle(10, 247, 139, 5, 0);
    rainbowCycle(10, 247, 139, 5, 1);

    rainbowCycle(10, 255, 255, 0, 0);
    rainbowCycle(10, 255, 255, 0, 1);

    rainbowCycle(10, 0, 255, 255, 0);
    rainbowCycle(10, 0, 255, 255, 1);

    for (int i = 0; i < 3; i++)
      rainbow(30);
  }

结果

通过Microduino可以成功实现用手机控制彩灯,得到你想要的任意颜色。你也可以通过乐高搭建一个漂亮的外观。

视频