欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 使用 Arduino 和 Wi-Fi 控制 RGB LED

使用 Arduino 和 Wi-Fi 控制 RGB LED

2025/3/18 15:03:34 来源:https://blog.csdn.net/jkh920184196/article/details/146083283  浏览:    关键词:使用 Arduino 和 Wi-Fi 控制 RGB LED

 

通过 WiFi 的 Arduino RGb LED 控制器

,在本文中,我们将介绍下一个基于 IOT 的项目 - 使用 Wi-Fi 的 RGB LED 闪光灯。在这里,我们使用 Arduino 和 ESP8266 Wi-Fi 模块通过 Android 手机通过 Wi-Fi 控制 RGB LED 的颜色。

在这个 RGB Flasher LED 中,我们使用了一个名为“Blynk”的 Android 移动应用程序。Blynk 是一个与 Arduino 非常兼容的应用程序,用于制作基于 IoT 的项目。此应用程序可以从 Google Play 商店下载,并且可以轻松配置。

配置 Blynk 应用程序的步骤:

1. 首先从 Google Play 商店下载并安装在 Android 手机上。

2. 在此之后,需要创建一个帐户。您可以使用您当前的 Gmail 帐户。

3. 现在选择 Arduino Board 并为您的项目命名。

 

4. 记下 Auth Token 代码,或者直接将其邮寄到您的电子邮件帐户,然后复制并粘贴 Arduino sketch(程序代码)。

 

5. 在 Arduino sketch 中输入此 Auth Token 代码。

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a20b235cfa794f07981d050950fb4429";

6. 然后点击 Blynk 应用程序中的创建按钮。

7. 现在选择 大滑块 和两个按钮,配置它们(见最后的视频)并点击后退按钮。

 

 

 

 

 

 

8. 之后按屏幕右上角的 Play 按钮。

所有这些使用 Blynk 应用程序的过程,都在视频中清楚地解释了,最后给出了。

所需组件:

  • Arduino UNO
  • ESP8266 Wi-Fi 模块
  • USB 数据线
  • 连接电线
  • RGB 指示灯
  • Android 手机
  • Blynk 应用程序

电路及工作说明:

RGB LED Flasher 的电路图如下所示。我们主要需要一个 Arduino、ESP8266 Wi-Fi 模块和 RGB LED。ESP8266 的 Vcc 和 GND 引脚直接连接到 Arduino 的 3.3V 和 GND,CH_PD也连接到 3.3V。ESP8266 的 Tx 和 Rx 引脚直接连接到 Arduino 的引脚 2 和 3。软件串行库用于允许在 Arduino 的引脚 2 和 3 上进行串行通信。我们已经详细介绍了 ESP8266 Wi-Fi 模块与 Arduino 的接口。

这里我们使用了共阳极 RGB LED。这个 RGB LED 引脚,即 R、G、B 和阳极,以 11、10、9 和 +5 伏 Vcc 连接。公共阳极引脚有一个 +5 伏的 1K 电阻器,用于保护 LED 免受损坏。

 

RGB LED 的工作原理很简单,我们使用 Blynk 应用程序创建了三个滑块,用于控制 RGB LED 三种颜色的强度,即红色、绿色和蓝色。以及一个按钮,用于根据程序代码以不同的模式闪烁 RGB LED。

编程说明:

首先,我们需要下载并安装 Arduino 的 Blynk 库。

我们已经包含了在 Arduino IDE 中运行此代码所需的所有库,然后在身份验证字符串中输入 Blynk 应用程序中的 Auth Token。在这里,我们将 Wi-Fi 串行引脚与 Arduino 的软件串行连接起来。选择引脚 2 作为 RX,选择引脚 3 作为 TX。

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_SoftSer.h>
#include <BlynkSimpleShieldEsp8266_SoftSer.h>// Set ESP8266 Serial object
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TXESP8266 wifi(EspSerial);// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a20b235cfa794f07981d050950fb4429";

之后,我们定义了 RGB LED 的输出引脚

#define red 11
#define green 10
#define blue 9 

在此之后,在设置功能中,我们初始化所有需要的设备,开始串行通信,提供 Wi-Fi 用户名和密码。

void setup()
{// Set console baud rateSerial.begin(9600);delay(10);// Set ESP8266 baud rate// 9600 is recommended for Software SerialEspSerial.begin(9600);delay(10);Blynk.begin(auth, wifi, "username", "password");  // wifi username and password
}

然后我们检查了 Button (Virtual Pin 1) 的条件。在这里,我们选择了虚拟引脚 1 (V1) 来获取来自 Blynk 应用程序的输入以闪烁 RGB LED。

这里我们应该注意,我们在下面的代码部分附加了两个代码,第一个仅用于控制 RGB LED 中三种颜色的强度而不闪烁,第二个用于闪烁 LED 以及控制 RGB LED 的三种颜色。我们只需要在第二个程序中定义 RGB Led 引脚,即 Flashing LED 程序,因为 LED 的 Flashing 是由 Arduino 控制的。另一方面,在第一个程序中,LED 的颜色由 Android 手机中的 Blynk 应用程序控制,因此我们不需要定义 RGB LED 引脚。

我们可以说,如果我们只想通过 Sliders 更改颜色,而不想使用 Button 作为 flasher,那么我们不需要定义 RGB 引脚。

给定的功能用于在 Blynk 应用程序中按下按钮时闪烁 RGB LED。

BLYNK_WRITE(V1) 
{int x = param[0].asInt();while(x==1){x = param.asInt();int i=0,j=0,k=0;analogWrite(red, 255);analogWrite(green, 255);... ......... .....

最后我们需要在循环中运行 blynk 函数,以运行系统。

void loop()
{Blynk.run();
}

注意:下面给出了两个代码。一个用于在没有闪光灯的情况下更改 RGB LED 的颜色,第二个用于使用 Flasher 更改颜色。查看 视频 以获得更多清晰度。

 

完成项目代码

Code 1: Change the colors of RGB LED without Flasher
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_SoftSer.h>
#include <BlynkSimpleShieldEsp8266_SoftSer.h>
// Set ESP8266 Serial object
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX
ESP8266 wifi(EspSerial);
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a20b235cfa794f07981d050950fb4429";
void setup()
{
  // Set console baud rate
  Serial.begin(9600);
  delay(10);
  // Set ESP8266 baud rate
  // 9600 is recommended for Software Serial
  EspSerial.begin(9600);
  delay(10);
  Blynk.begin(auth, wifi, "1st floor", "muda1884");
}
void loop()
{
  Blynk.run();
}
Code 2: Change the colors of RGB LED with Flasher
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266_SoftSer.h>
#include <BlynkSimpleShieldEsp8266_SoftSer.h>
// Set ESP8266 Serial object
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX
ESP8266 wifi(EspSerial);
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "a20b235cfa794f07981d050950fb4429";
#define red 11
#define green 10
#define blue 9 
void setup()
{
  // Set console baud rate
  Serial.begin(9600);
  delay(10);
  // Set ESP8266 baud rate
  // 9600 is recommended for Software Serial
  EspSerial.begin(9600);
  delay(10);
  Blynk.begin(auth, wifi, "username", "password");  // wifi username and password
}
BLYNK_WRITE(V1) 
{
  int x = param[0].asInt();
    while(x==1)
   {
    x = param.asInt();
    int i=0,j=0,k=0;
    analogWrite(red, 255);
    analogWrite(green, 255);
    analogWrite(blue, 255);
      for(int j=0;j<20;j++)
      {
       analogWrite(red, 0);
       analogWrite(green, 255);
       analogWrite(blue, 255);
       delay(100);
       analogWrite(red, 255);
       analogWrite(green, 0);
       analogWrite(blue, 255);
       delay(100);
       analogWrite(red, 255);
       analogWrite(green, 255);
       analogWrite(blue, 0);
       delay(100);
        x = param.asInt();
        if(x==0)
        break;
      }
    analogWrite(red, 255);
    analogWrite(green, 255);
    analogWrite(blue, 255);
    for(int z=0;z<10;z++)
    {
    for(i=0;i<=180;i++)
    {
            analogWrite(red, 180-i);
            delay(2);
    }
    analogWrite(red, 255);
    for(j=0;j<255;j++)
    {
            analogWrite(green, 255-j);
             delay(2);
    }
    analogWrite(green, 255);
    for(k=0;k<255;k++)
    {
            analogWrite(blue, 255-k);
             delay(2);
    }
    analogWrite(blue, 255);
     x = param.asInt();
     if(x==0)
     break;
    }
    analogWrite(red, 255);
    analogWrite(green, 255);
    analogWrite(blue, 255);
        for(int z=0;z<5;z++)
    {
    for(j=0;j<255;j++)
    {
            analogWrite(green, 255-j);
             delay(20);
    }
    for(k=0;k<255;k++)
    {
            analogWrite(blue, 255-k);
             delay(20);
    }
        for(i=0;i<=180;i++)
    {
            analogWrite(red, 180-i);
            delay(20);
    }
    analogWrite(red,180);
     x = param.asInt();
     if(x==0)
     break;
    }
   if(x==0)
   break;
  }
    analogWrite(red, 255);
    analogWrite(green, 255);
    analogWrite(blue, 255);
}
void loop()
{
  Blynk.run();
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词