注意!案例是参考这个视频制作的Blinker远程控制,视频简单讲解了三色LED的原理和接线,并没有讲解远程控制
所需硬件
- ESP32开发板(参考价25元)
- RGB_LED模块(参考价1元)
功能
- 手机点击色盘控制三色灯的颜色
手机APP界面
实物图
完整代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
#define BLINKER_WIFI <em>// 定义连接模式</em> #include <Blinker.h> // 加载头文件 <em>// wifi连接信息</em> char auth[] = ""*********""; char ssid[] = ""***""; char pswd[] = ""*****""; <em>// RGB引脚</em> const int r_led = 16; const int g_led = 17; const int b_led = 18; <em>// 频率和位数,8位表示0-255, 12位表示0-1024</em> const int rate = 1000; const int pipe_bit = 8; <em>// RGB通道</em> const int pipe_r = 1; const int pipe_g = 2; const int pipe_b = 3; <em>// 建立RGB组件</em> #define RGB_1 ""RGBKey"" BlinkerRGB RGB1(RGB_1); void rgb1_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value) { ledcWrite(pipe_r, r_value); <em>// 红色亮度</em> ledcWrite(pipe_g, g_value); <em>// 绿色亮度</em> ledcWrite(pipe_b, b_value); <em>// 蓝色亮度</em> BLINKER_LOG(""R value: "", r_value); BLINKER_LOG(""G value: "", g_value); BLINKER_LOG(""B value: "", b_value); BLINKER_LOG(""Rrightness value: "", bright_value); <em>// 组件发送过来的明度数值,暂时不知道怎么应用</em> } void dataRead(const String & data) { BLINKER_LOG(""Blinker readString: "", data); Blinker.vibrate(); <em>// 发送手机震动指令</em> uint32_t BlinkerTime = millis(); <em>// 程序运行时间</em> Blinker.print(""millis"", BlinkerTime); <em>// 向APP发送数据</em> RGB1.brightness(random(0, 255)); <em>// 随机设置颜色组件的亮度值</em> RGB1.print(random(0, 255), random(0, 255), random(0, 255)); <em>// 随机发颜色值</em> } void setup() { <em>// 设置通道频率和位数</em> ledcSetup(pipe_r, rate, pipe_bit); ledcSetup(pipe_g, rate, pipe_bit); ledcSetup(pipe_b, rate, pipe_bit); <em>// 绑定通道和针脚</em> ledcAttachPin(r_led, pipe_r); ledcAttachPin(g_led, pipe_g); ledcAttachPin(b_led, pipe_b); <em>// 运行blinker</em> Blinker.begin(auth, ssid, pswd); <em>// 没有回调函数执行</em> Blinker.attachData(dataRead); <em>// RGB1组件回调函数</em> RGB1.attach(rgb1_callback); } void loop() { Blinker.run(); <em>// 运行、保持网络畅通、解析数据</em> } |
近期评论