本項(xiàng)目將使用智能手機(jī)設(shè)置RGB LED燈帶的顏色,這些RGB燈帶內(nèi)建藍(lán)牙功能,可接收智能手機(jī)上的android應(yīng)用程序發(fā)送的指令。這樣,我們就可以通過手機(jī)控制RGB LED燈帶的顏色了。如果你覺得這還不夠酷,文章后部分介紹的是聲控RGB LED燈帶的制作,同一電路,兩種用途!
電路圖及BOM表
本項(xiàng)目只有三個(gè)關(guān)鍵組件,BOM表如下:
- Bluetooth模組(HC05)
- Arduino NANO開發(fā)板
- 可尋址RGB LED燈帶
- 杜邦線
RGB LED燈帶只有三個(gè)接口線:12V、Gnd、Din。其中,Din用于數(shù)據(jù)輸入,連接于Arduino開發(fā)板的數(shù)字引腳D13;燈帶和Arduino NANO開發(fā)板使用來自適配器的同一12V電源供電。
HC05具有四個(gè)引腳:Vcc、Gnd、TXD、RXD。其中,Vcc引腳從Arduino開發(fā)板的5V供電;Gnd連接于公共接地引腳,TXD和RXD分別連接于數(shù)字引腳D4、D5。
操作說明
電路從適配器供電后,燈帶的所有LED熄滅,只有HC05模組閃爍,表示正在尋找另一個(gè)即將配對的藍(lán)牙設(shè)備。
如果希望改變燈帶顏色,就用智能手機(jī)發(fā)送配對信息,HC05模組的默認(rèn)密碼為1234。當(dāng)手機(jī)與HC05模組連接后,閃爍速度將會(huì)慢下來。
用手機(jī)輸入并發(fā)送字母‘R’,手機(jī)就通過藍(lán)牙把‘R’發(fā)送給HC05模組。HC05模組收到‘R’后,將通過串口將其發(fā)送給 Arduino。
Arduino收到‘R’后,就把數(shù)據(jù)傳遞給 RGB 燈帶,并設(shè)置燈帶中所有RGB LED燈珠的顏色為紅色(RED),燈帶中的所有LED燈珠以紅色(RED)方式點(diǎn)亮。
同樣,用android應(yīng)用程序發(fā)送如下字母,將看到預(yù)期的燈帶顏色。
最后,如果希望燈帶上的所有LED熄滅,那就用android程序發(fā)送字母一個(gè)‘X’吧。
有趣吧!以下是本項(xiàng)目的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;
}
}
}
項(xiàng)目升級:聲控LED燈帶
如果覺得藍(lán)牙還不夠方便,那就來個(gè)聲控的!也就是說,你可以說出想要的LED燈帶顏色。例如,你大聲說“BLUE”,LED燈帶就顯示藍(lán)色了!!!!
其實(shí),這無需額外電路,只要從Google商店下載一個(gè)“Arduino Bluetooth controller” app即可,這個(gè)app會(huì)將語音命令轉(zhuǎn)化成text文本,并通過手機(jī)的藍(lán)牙功能發(fā)送給另一部手機(jī)。具體操作步驟如下:
1.下載并安裝 Arduino Bluetooth controller 應(yīng)用程序。
2.打開并安裝該,程序會(huì)提示你開啟手機(jī)的藍(lán)牙功能。
3.Turn ON 藍(lán)牙功能。
4.程序?qū)ふ伊硪慌_(tái)藍(lán)牙設(shè)備,點(diǎn)按 “available device”就會(huì)發(fā)現(xiàn) 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后,只要對著手機(jī)喊出顏色名稱,燈帶就會(huì)按照你的要求改變顏色了。
-
led
+關(guān)注
關(guān)注
242文章
23146瀏覽量
658554 -
Android
+關(guān)注
關(guān)注
12文章
3925瀏覽量
127149 -
RGB
+關(guān)注
關(guān)注
4文章
798瀏覽量
58391
發(fā)布評論請先 登錄
相關(guān)推薦
評論