热度 10
2022-7-15 09:15
1700 次阅读|
0 个评论
本项目将使用智能手机设置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 ; 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 ; char red = "red"; char green = "green"; char blue = "blue"; char magenta = "Magenta"; char yellow = "yellow"; char orange = "orange"; char white = "white"; char purple = "purple"; char rainbow = "rainbow"; char black = "black"; CRGB led_strip1 ; 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()) { 0) { recv_color_str = BT_serial.read(); Serial.print(recv_color_str ); 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 = '\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 = '\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 = '\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 = '\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 = '\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 = '\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 = '\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 = '\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 = '\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 = '\0'; } else { j=0; for(k=0;k<8;k++) recv_color_str = '\0'; } } 将这些代码上传到 Arduino IDE后,只要对着手机喊出颜色名称,灯带就会按照你的要求改变颜色了。