电子说
本项目将使用智能手机设置RGB LED灯带的颜色,这些RGB灯带内建蓝牙功能,可接收智能手机上的android应用程序发送的指令。这样,我们就可以通过手机控制RGB LED灯带的颜色了。如果你觉得这还不够酷,文章后部分介绍的是声控RGB LED灯带的制作,同一电路,两种用途!
本项目只有三个关键组件,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;i++)>
FastLED.show();
delay(1000);
for(i=0;i;i++)>
FastLED.show();
delay(1000);
for(i=0;i;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;i++)>
FastLED.show();
break;
case 'Y':
for(i=0;i;i++)>
FastLED.show();
break;
case 'O':
for(i=0;i;i++)>
FastLED.show();
break;
case 'G':
for(i=0;i;i++)>
FastLED.show();
break;
case 'L':
for(i=0;i;i++)>
FastLED.show();
break;
case 'B':
for(i=0;i;i++)>
FastLED.show();
break;
case 'S':
for(i=0;i;i++)>
FastLED.show();
break;
case 'C':
for(i=0;i;i++)>
FastLED.show();
break;
case 'P':
for(i=0;i;i++)>
FastLED.show();
break;
case 'M':
for(i=0;i;i++)>
FastLED.show();
break;
case 'x':
for(i=0;i;i++)>
FastLED.show();
break;
case 'W':
for(i=0;i;i++)>
FastLED.show();
break;
}
}
}
如果觉得蓝牙还不够方便,那就来个声控的!也就是说,你可以说出想要的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;i++)>
FastLED.show();
delay(1000);
for(i=0;i;i++)>
FastLED.show();
delay(1000);
for(i=0;i;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;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;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;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;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;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;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;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;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;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[i] = CRGB::Yellow;}
for(i=3;i<6;i++) {led_strip1[i] = CRGB::Magenta;}
for(i=6;i<9;i++) {led_strip1[i] = CRGB::Orange;}
for(i=9;i<12;i++) {led_strip1[i] = CRGB::Blue;}
for(i=12;i<15;i++) {led_strip1[i] = CRGB::Green;}
for(i=15;i<18;i++) {led_strip1[i] = CRGB::Red;}
for(i=18;i<21;i++) {led_strip1[i] = CRGB::Cyan;}
for(i=21;i<24;i++) {led_strip1[i] = CRGB::Yellow;}
for(i=24;i<27;i++) {led_strip1[i] = CRGB::Magenta;}
for(i=27;i<30;i++) {led_strip1[i] = CRGB::Orange;}
for(i=30;i<33;i++) {led_strip1[i] = CRGB::Blue;}
for(i=33;i<36;i++) {led_strip1[i] = CRGB::Green;}
for(i=36;i<39;i++) {led_strip1[i] = CRGB::Red;}
for(i=39;i<43;i++) {led_strip1[i] = 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后,只要对着手机喊出颜色名称,灯带就会按照你的要求改变颜色了。
全部0条评论
快来发表一下你的评论吧 !