原创 用智能手机或自己的声音控制RGB LED灯带实现梦幻效果

2022-7-15 09:15 507 0 分类: MCU/ 嵌入式 文集: 方案

本项目将使用智能手机设置RGB LED灯带的颜色,这些RGB灯带内建蓝牙功能,可接收智能手机上的android应用程序发送的指令。这样,我们就可以通过手机控制RGB LED灯带的颜色了。如果你觉得这还不够酷,文章后部分介绍的是声控RGB LED灯带的制作,同一电路,两种用途!


电路图及BOM表


本项目只有三个关键组件,BOM表如下:
-  Bluetooth模组(HC05)
-  Arduino NANO开发板
-  可寻址RGB LED灯带
-  杜邦线

 

 

RGB LED灯带只有三个接口线:12V、Gnd、Din。其中,Din用于数据输入,连接于Arduino开发板的数字引脚D13;灯带和Arduino NANO开发板使用来自适配器的同一12V电源供电。
HC05具有四个引脚:Vcc、Gnd、TXD、RXD。其中,Vcc引脚从Arduino开发板的5V供电;Gnd连接于公共接地引脚,TXD和RXD分别连接于数字引脚D4、D5。


操作说明


电路从适配器供电后,灯带的所有LED熄灭,只有HC05模组闪烁,表示正在寻找另一个即将配对的蓝牙设备。
如果希望改变灯带颜色,就用智能手机发送配对信息,HC05模组的默认密码为1234。当手机与HC05模组连接后,闪烁速度将会慢下来。
用手机输入并发送字母‘R’,手机就通过蓝牙把‘R’发送给HC05模组。HC05模组收到‘R’后,将通过串口将其发送给 Arduino。
Arduino收到‘R’后,就把数据传递给 RGB 灯带,并设置灯带中所有RGB LED灯珠的颜色为红色(RED),灯带中的所有LED灯珠以红色(RED)方式点亮。 
同样,用android应用程序发送如下字母,将看到预期的灯带颜色。


 

 

最后,如果希望灯带上的所有LED熄灭,那就用android程序发送字母一个‘X’吧。

有趣吧!以下是本项目的Arduino代码:

#include

#include

#define NUM_LEDS 40

#define DATA_PIN1 13

#define Tx_pin 4

#define Rx_pin 5

int i;

char recv_char;

CRGB led_strip1[NUM_LEDS];

SoftwareSerial BT_serial(Rx_pin,Tx_pin);

void setup()

{

FastLED.addLeds(led_strip1, NUM_LEDS);

for(i=0;i

FastLED.show();

delay(1000);

for(i=0;i

FastLED.show();

delay(1000);

for(i=0;i

FastLED.show();

delay(1000);

BT_serial.begin(9600);

BT_serial.println("select desire colour"); 
}

void loop()

{

if(BT_serial.available())

{

recv_char = BT_serial.read();

BT_serial.println(recv_char);

switch(recv_char)

{

BT_serial.println(recv_char);

case 'R':

for(i=0;i

FastLED.show();

break;

case 'Y':

for(i=0;i

FastLED.show();

break;

case 'O':

for(i=0;i

FastLED.show();

break;

case 'G':

for(i=0;i

FastLED.show();

break;

case 'L':

for(i=0;i

FastLED.show();

break;

case 'B':

for(i=0;i

FastLED.show();

break;

case 'S':

for(i=0;i

FastLED.show();

break;

case 'C':

for(i=0;i

FastLED.show();

break;

case 'P':

for(i=0;i

FastLED.show();

break;

case 'M':

for(i=0;i

FastLED.show();

break;

case 'x':

for(i=0;i

FastLED.show();

break;

case 'W':

for(i=0;i

FastLED.show();

break;

}

}

}

 

项目升级:声控LED灯带


如果觉得蓝牙还不够方便,那就来个声控的!也就是说,你可以说出想要的LED灯带颜色。例如,你大声说“BLUE”,LED灯带就显示蓝色了!!!!

其实,这无需额外电路,只要从Google商店下载一个“Arduino Bluetooth controller” app即可,这个app会将语音命令转化成text文本,并通过手机的蓝牙功能发送给另一部手机。具体操作步骤如下:
1.下载并安装 Arduino Bluetooth controller 应用程序。
2.打开并安装该,程序会提示你开启手机的蓝牙功能。
3.Turn ON 蓝牙功能。
4.程序将寻找另一台蓝牙设备,点按 “available device”就会发现 HC05模组。
5.最后,连接 HC05 模组。
6.下载如下 Arduino 代码:

#include

#include


#define NUM_LEDS 43

#define DATA_PIN1 4

 

#define Tx_pin 3

#define Rx_pin 2

 

int i,j=0,k;

char recv_color_str[8];

char red[4] = "red";

char green[6] = "green";

char blue[5] = "blue";

char magenta[8] = "Magenta";

char yellow[7] = "yellow";

char orange[7] = "orange";

char white[6] = "white";

char purple[7] = "purple";

char rainbow[8] = "rainbow";

char black[6] = "black";

CRGB led_strip1[NUM_LEDS];

SoftwareSerial BT_serial(Rx_pin,Tx_pin);

 

void setup()

{

FastLED.addLeds(led_strip1, NUM_LEDS);

for(i=0;i

FastLED.show();

delay(1000);

for(i=0;i

FastLED.show();

delay(1000);

for(i=0;i

FastLED.show();

delay(1000);

BT_serial.begin(9600);

// Serial.begin(9600);

//Serial.println("select desire colour");

}

void loop()

{

while(BT_serial.available())

{

if(BT_serial.available()>0)

{

recv_color_str[j] = BT_serial.read();

Serial.print(recv_color_str[j]);

j++;

}

}

if(strcmp(recv_color_str,black)==0)

{

//Serial.println(recv_color_str);

for(i=0;i

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else if(strcmp(recv_color_str,red)==0)

{

//Serial.println(recv_color_str);

for(i=0;i

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else if(strcmp(recv_color_str,purple)==0)

{

// Serial.println(recv_color_str);

for(i=0;i

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else if(strcmp(recv_color_str,white)==0)

{

// Serial.println(recv_color_str);

for(i=0;i

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else if(strcmp(recv_color_str,green)==0)

{

// Serial.println(recv_color_str);

for(i=0;i

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else if(strcmp(recv_color_str,blue)==0)

{

// Serial.println(recv_color_str);

for(i=0;i

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else if(strcmp(recv_color_str,yellow)==0)

{

//Serial.println(recv_color_str);

for(i=0;i

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else if(strcmp(recv_color_str,orange)==0)

{

// Serial.println(recv_color_str);

for(i=0;i

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else if(strcmp(recv_color_str,magenta)==0)

{

//Serial.println(recv_color_str);

for(i=0;i

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else if(strcmp(recv_color_str,rainbow)==0)

{

//Serial.println(recv_color_str);

for(i=0;i<3;i++) {led_strip1 = CRGB::Yellow;}

for(i=3;i<6;i++) {led_strip1 = CRGB::Magenta;}

for(i=6;i<9;i++) {led_strip1 = CRGB::Orange;}

for(i=9;i<12;i++) {led_strip1 = CRGB::Blue;}

for(i=12;i<15;i++) {led_strip1 = CRGB::Green;}

for(i=15;i<18;i++) {led_strip1 = CRGB::Red;}

for(i=18;i<21;i++) {led_strip1 = CRGB::Cyan;}

for(i=21;i<24;i++) {led_strip1 = CRGB::Yellow;}

for(i=24;i<27;i++) {led_strip1 = CRGB::Magenta;}

for(i=27;i<30;i++) {led_strip1 = CRGB::Orange;}

for(i=30;i<33;i++) {led_strip1 = CRGB::Blue;}

for(i=33;i<36;i++) {led_strip1 = CRGB::Green;}

for(i=36;i<39;i++) {led_strip1 = CRGB::Red;}

for(i=39;i<43;i++) {led_strip1 = CRGB::Cyan;}

FastLED.show();

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

else

{

j=0;

for(k=0;k<8;k++) recv_color_str[k] = '\0';

}

}


将这些代码上传到 Arduino IDE后,只要对着手机喊出颜色名称,灯带就会按照你的要求改变颜色了。

作者: 硬之城Allchips, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3975615.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

给作者打赏,鼓励TA抓紧创作!

赞赏支持
点赞 0
赞赏0

文章评论0条评论)

登录后参与讨论
相关推荐阅读
硬之城Allchips 2022-08-29 10:30
霍尔传感器原理、典型应用及与Arduino的接口
霍尔传感器(Hall Effect Sensor)是根据霍尔效应制作的一种磁场传感器,当恒定电流通过内部的霍尔半导体片时,将在垂直方向产生电位差即霍尔电压。这个霍尔电压随磁场强度的变化而变化,磁场越强...
硬之城Allchips 2022-08-26 08:59
传感器到云应用中的超低功耗Sub-1GHz RF收发方案
在ISM和SRD(短距离无线电设备)应用中,高性能和长电池寿命至关重要。本方案采用S2-LP sub-1GHz超低功耗的低数据率,可实现+27dBm(500mW)的输出功率,可使电池寿命从几个月延长为...
硬之城Allchips 2022-08-25 09:58
用IR传感器和Arduino制作一个数字转速计(附代码)
本项目采用IR传感器和Arduino开发板制作了一个数字转速计,以RPM为单位测量马达的转数。项目黑简单,只需将IR传感器和Arduino板子与16*2 LCD连接即可。BOM表及电路图本转速计可连续...
硬之城Allchips 2022-08-24 10:27
基于AP33772的家电及电动工具USB-C PD3.0/PPS接收方案
Type-C PD3.0适配器已经大量上市,这要求Type-C接口设备(TCD)配备灵活、精简且具成本效益的充电解决方案。本设计采用AP33772高效能USB Type-C PD3.0/PPS接收控制...
硬之城Allchips 2022-08-23 09:22
用振动传感器和Arduino监测工业设备的振动状态
通常,振动传感器基于机械或光学原理检测振动,可用来测量、显示和分析线速度、位移和加速度。虽然人类对振动的感知能力非常弱,传感器却能提供这种振动的状态数据。这就为设备维护提供了关键数据,在设备损坏之前及...
硬之城Allchips 2022-08-22 09:27
基于ACS712电流传感器的电流检测方案(电路图+BOM表)
ACS712是一种低噪声、使用方便、性价比高的线性电流传感器,主要应用于电机控制、载荷检测和管理、开关式电源和过电流故障保护等,特别是那些要求电气绝缘却未使用光电绝缘器或其它昂贵绝缘技术的应用中。AC...
我要评论
0
0
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条