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

2022-7-15 09:15 1705 10 10 分类: 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

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

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条