- 适用于Arduino的Adafruit 5X8 NeoPixel Shield
- 了解Blynk App和Arduino之间的通信过程
- 所需组件
- Adafruit RGB LED护罩和Arduino-硬件连接
- 配置Blynk应用程序
- Arduino代码控制Adafruit WS2812B RGB LED屏蔽
- 将代码上传到Arduino开发板
在过去的几年中,RGB LED由于其美丽的色彩,亮度和诱人的照明效果而日益流行。这就是为什么它在许多地方用作装饰物品的原因,例如房屋或办公空间。另外,我们可以在厨房和游戏机中使用RGB灯。就情绪照明而言,它们在儿童游戏室或卧室中也很棒。以前,我们使用WS2812B NeoPixel LED和ARM微控制器来构建Music Spectrum Visualizer,因此请检查一下是否对您感兴趣。
这就是为什么在此项目中,我们将使用基于Neopixel的RGB LED矩阵屏蔽,Arduino和Blynk应用程序来生成许多迷人的动画效果和颜色的方法,我们可以使用Blynk应用程序进行控制。因此,让我们开始吧!!!
适用于Arduino的Adafruit 5X8 NeoPixel Shield
兼容Arduino的NeoPixel Shield包含40个可单独寻址的RGB LED,每个LED都内置有WS2812b驱动器,该驱动器以5×8矩阵排列以形成此NeoPixel Shield。如果需要,还可以连接多个NeoPixel Shields以形成更大的Shield。要控制RGB LED,需要一个Arduino引脚,因此在本教程中,我们决定使用Arduino的引脚6来实现。
在我们的案例中,LED由Arduino的内置5V引脚供电,这足以在全亮度下为大约“三分之一的LED”供电。如果需要为更多的LED供电,则可以切割内置走线并使用外部5V电源通过外部5V端子为屏蔽供电。
了解Blynk App和Arduino之间的通信过程
这里使用的8 * 5 RGB LED矩阵具有基于WS2812B驱动器的40个可单独寻址的RGB LED。它具有24位色彩控制,每个像素1680万种色彩。可以使用“单线控制”方法进行控制。这意味着我们可以使用单个控制引脚控制整个LED像素。在使用这些LED时,我浏览了这些LED的数据表,发现屏蔽的工作电压范围是4 V至6 V,发现在5 V时每个LED的电流消耗为50 mA,红色,绿色,和蓝色全亮。它在外部电源引脚上具有反向电压保护,并在Shield上具有Reset按钮以重置Arduino。如果内部电路无法提供足够的功率,则它还具有用于LED的外部电源输入引脚。
如上面的示意图所示,我们需要下载并安装Blynk应用程序在我们的智能手机上,可以控制颜色,亮度等参数。设置完参数后,如果应用程序发生任何更改,它将存储在Blynk云中,我们的PC也已连接到该云,并准备接收更新的数据。 Arduino Uno通过USB电缆连接到我们的PC,并打开了通信端口,并且该通信端口(COM端口)可以在Blynk云和Arduino UNO之间交换数据。 PC正在以固定的时间间隔从Blynk云请求数据,并且当接收到更新的数据时,PC会将其传输到Arduino并做出用户定义的决定,例如控制RGB led亮度和颜色。 RGB LED防护罩放置在Arduino LED上,并通过单个数据引脚连接以进行通信,默认情况下,它是通过Arduino的D6引脚连接的。从Arduino UNO发送的串行数据发送到Neopixel shied,然后将其反映在LED矩阵上。
所需组件
- Arduino UNO
- 8 * 5 RGB LED矩阵屏蔽
- Arduino UNO的USB A / B电缆
- 笔记本电脑/电脑
Adafruit RGB LED护罩和Arduino-硬件连接
WS2812B Neopixel LED具有三个引脚,一个用于数据,另外两个用于电源,但是这种特定的Arduino屏蔽使硬件连接非常简单,我们要做的就是将Neopixel LED矩阵放置在Arduino UNO的顶部。在我们的情况下,LED由默认的Arduino 5V导轨供电。放置Neopixel Shield后,设置如下所示:
配置Blynk应用程序
Blynk是一款可以在Android和IOS设备上运行的应用程序,可以使用我们的智能手机控制任何IoT设备和设备。首先,需要创建一个图形用户界面(GUI)来控制RGB LED矩阵。该应用程序会将所有选定的参数从GUI发送到Blynk Cloud。在接收器部分,我们已将Arduino通过串行通信电缆连接到PC。因此,PC从Blynk云请求数据,并将这些数据发送到Arduino进行必要的处理。因此,让我们开始使用Blynk应用程序设置。
设置之前,请从Google Play商店下载Blynk应用程序(IOS用户可以从App Store下载)。安装后,使用您的电子邮件ID和密码注册。
创建一个新项目:
成功安装后,打开应用程序,然后将出现一个带有“ New Project ”选项的屏幕。单击它,将弹出一个新屏幕,我们需要在其中设置诸如项目名称,电路板和连接类型之类的参数。在我们的项目中,将设备选择为“ Arduino UNO ”,将连接类型选择为“ USB ”,然后单击“创建”。
成功创建项目后,我们将在我们的注册邮件中获得一个身份验证ID。保存身份验证ID,以备将来参考。
创建图形用户界面(GUI):
在Blynk中打开项目,单击“ +”号,我们将在其中获得可在项目中使用的小部件。在我们的情况下,我们需要一个RGB拾色器,其显示为“ zeRGBa”,如下所示。
设置小部件:
将小部件拖到我们的项目后,现在我们必须设置其参数,这些参数用于将RGB颜色值发送到Arduino UNO。
单击ZeRGBa,然后将得到一个名为ZeRGBa设置的屏幕。然后将“输出”选项设置为“合并”,并将引脚设置为“ V2”,如下图所示。
Arduino代码控制Adafruit WS2812B RGB LED屏蔽
硬件连接完成后,需要将代码上传到Arduino。代码的逐步说明如下所示。
首先,包括所有必需的库。打开Arduino IDE,然后转到Sketch选项卡,然后单击 Include Library-> Manage Libraries 选项。然后在搜索框中搜索Blynk,然后下载并安装Arduino UNO的Blynk软件包。
在这里,“ Adafruit_NeoPixel.h ”库用于控制RGB LED矩阵。要包含它,您可以从给定的链接下载 Adafruit_NeoPixel 库。一旦知道了这一点,就可以将其包含在“包括ZIP库”选项中。
#define BLYNK_PRINT DebugSerial #include #include
然后,我们定义了LED矩阵所需的LED数量,还定义了用于控制LED参数的引脚号。
#define PIN 6 #define NUM_PIXELS 40
然后,我们需要将闪烁身份验证ID放入之前保存的 auth 数组中。
char auth =“ HoLYSq-SGJAafQUQXXXXXXXX”;
在这里,软件串行引脚用作调试控制台。因此,以下将Arduino引脚定义为调试串行。
#包括
在设置过程中,使用函数 Serial.begin 初始化串行通信,使用 Blynk.begin 和 pixel.begin() 连接 blynk , 初始化LED矩阵。
void setup() { DebugSerial.begin(9600); pixel.begin(); Serial.begin(9600); Blynk.begin(Serial,auth); }
在 loop() 内部,我们使用了 Blynk.run() ,它检查来自blynk GUI的传入命令并相应地执行操作。
void loop() { Blynk.run(); }
在最后阶段,需要接收和处理从Blynk应用程序发送的参数。在这种情况下,如前面在设置部分中所述,将参数分配给虚拟引脚“ V2”。 BLYNK_WRITE 函数是一个内置函数,只要关联的虚拟引脚的状态/值发生变化,就会调用该函数。我们可以像其他Arduino函数一样在此函数内运行代码。
此处写入了 BLYNK_WRITE 函数,以检查虚拟引脚V2处的传入数据。如“闪烁设置”部分所示,彩色像素数据已合并并分配给V2引脚。因此,我们还必须在解码后再次取消合并。因为要控制LED像素矩阵,我们需要所有3种单独的彩色像素数据,例如红色,绿色和蓝色。如下代码所示,读取了矩阵的三个索引,如 param.asInt()一样 ,获得了红色的值。同样,所有其他两个值也被接收并存储在3个单独的变量中。然后,使用 pixel.setPixelColor 函数将这些值分配给Pixel矩阵,如下面的代码所示。
在这里, pixels.setBrightness() 函数用于控制亮度,而 pixels.show() 函数用于在矩阵中显示设置的颜色。
BLYNK_WRITE(V2) { int r = param.asInt(); int g = param.asInt(); int b = param.asInt(); pixel.clear(); pixel.setBrightness(20); 对于(int i = 0; i <= NUM_PIXELS; i ++) { pixel.setPixelColor(i,pixel.Color(r,g,b)); } pixel.show(); }
将代码上传到Arduino开发板
首先,我们需要在Arduino IDE中选择Arduino的PORT,然后将代码上传到Arduino UNO。成功上传后,记下将用于我们的串行通信设置的端口号。
之后,在PC上找到Blynk库的脚本文件夹。它是在您安装库时安装的,属于我的,
“ C:\ Users \ PC_Name \ Documents \ Arduino \ libraries \ Blynk \ scripts”
在脚本文件夹中,应该有一个名为“ blynk-ser.bat”的文件,这是一个用于串行通信的批处理文件,我们需要使用记事本进行编辑。使用记事本打开文件,然后将端口号更改为您在上一步中记下的Arduino端口号。
编辑后,保存文件并通过双击运行批处理文件。然后,您必须看到如下所示的窗口:
注意: 如果看不到上面显示的该窗口,并提示您重新连接,则可能是由于PC与Arduino屏蔽板连接错误。在这种情况下,请检查您的Arduino与PC的连接。之后,检查COM端口号是否在Arduino IDE中显示。如果显示有效的COM端口,则可以继续进行操作。您应该再次运行该批处理文件。
最后示范:
现在,该测试电路及其功能了。打开Blynk应用程序并打开GUI,然后单击“播放”按钮。之后,您可以选择要在LED矩阵上反射的任何所需颜色。如下所示,在我的情况下,我选择了红色和蓝色,该颜色将显示在矩阵上。
同样,您也可以尝试通过自定义编码来使用这些LED矩阵制作不同的动画。