使用 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, TX

ESP8266 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 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
}

然后我们检查了 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();
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/982466.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# 开发工具Visual Studio下载和安装

开发环境与工具 C#的主要开发环境是Visual Studio&#xff0c;这是一个功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;集成了代码编辑、调试、项目管理、版本控制等功能。此外&#xff0c;Visual Studio Code也是一个轻量级的跨平台代码编辑器&#xff0c;支…

HTML + CSS 题目

1.说说你对盒子模型的理解? 一、是什么 对一个文档进行布局的时候&#xff0c;浏览器渲染引擎会根据标准之一的css基础盒模型&#xff0c;将所有元素表示为一个个矩形的盒子。 一个盒子由四个部分组成: content&#xff0c;padding&#xff0c;border&#xff0c;margin 下…

数据结构–栈

数据结构–栈 什么是栈&#xff1f; 首先先给大家讲一下栈是什么&#xff1a;栈是一种特殊的线性表。特殊之处就在于对栈的操作的特殊。对于栈&#xff0c;只允许其在固定的一端进行插入和删除元素操作。不像普通的顺序表&#xff0c;链表&#xff0c;可以在任意位置进行删除插…

通过Docker搭个游戏——疯狂大陆(Pkland)

最近在研究我的服务器&#xff0c;在服务器上搭了很多docker的项目&#xff0c;然后找着找着发现一个能用Docker配置环境的游戏叫Pkland。 项目地址&#xff1a;GitHub - popkarthb/pkland: 疯狂大陆是一款多人在线的战略游戏。 游戏操作简捷,您仅需要使用浏览器就可以在任何时…

03.06 QT

一、使用QSlider设计一个进度条&#xff0c;并让其通过线程自己动起来 程序代码&#xff1a; <1> Widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QThread> #include "mythread.h"QT_BEGIN_NAMESPACE namespace Ui {…

【LeetCode 热题 100】3. 无重复字符的最长子串 | python 【中等】

美美超过管解 题目&#xff1a; 3. 无重复字符的最长子串 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 注…

微服务拆分-拆分商品服务

复制hm-service模块pom.xml文件里面的依赖到item-service模块pom.xml文件。 需要准备的依赖 <dependencies><!--common--><dependency><groupId>com.heima</groupId><artifactId>hm-common</artifactId><version>1.0.0</v…

父进程和子进程

思维导图&#xff1a; 1.使用父子进程实现一个图片的拷贝 要求父进程拷贝前一部分 子进程拷贝后一部分 使用diff查看两个文件是否相同 #include <head.h> int main(int argc, const char *argv[]) {int fd1open("/home/ubuntu/3.6/xiaoxin.bmp",O_RDONLY);…

3.2、对称加密算法

目录 对称加密算法总结国产加密算法 - SM系列 对称加密算法总结 首先看一下第一个它的全称叫数据加密标准&#xff0c;英文单词是DES&#xff0c;它是一种分组加密算法&#xff0c;就是比如说&#xff0c;我有10t的数据&#xff0c;我先给你做一下分组&#xff0c;比如说就是64…

let、const和var的区别是什么?

文章目录 一、概述二、var 的特点2.1、作用域2.2、提升&#xff08;Hoisting&#xff09;2.3、全局变量2.4、重复声明‌ 三、let 的特点3.1、作用域3.2、提升&#xff08;Hoisting&#xff09;3.3、不允许重复声明 四、const 的特点4.1、作用域4.2、不可变性4.3、提升&#xff…

数一考研复习之拉格朗日中值定理在求解函数极限中的应用,

最近在复习考研数学,只是简单做题过于乏味,因此便总结了一些笔记,后续若有空,也会将自己的复习笔记分享出来。本篇&#xff0c;我们将重点讲解拉格朗日中值定理在求解函数极限中的应用。同时,作者本人作为python领域创作者&#xff0c;还将在本文分享使用sympy求解高数中函数极…

Devart dbForge Studio for MySQL Enterprise 9.0.338高效数据库管理工具

Devart dbForge Studio for MySQL Enterprise 9.0.338 是一款功能强大的 MySQL 数据库管理工具&#xff0c;专为数据库开发人员和管理员设计。它提供了丰富的功能&#xff0c;帮助用户更高效地管理、开发和维护 MySQL 数据库 Devart dbForge Studio for MySQL Enterprise 9.0.…

Android15使用FFmpeg解码并播放MP4视频完整示例

效果: 1.编译FFmpeg库: 下载FFmpeg-kit的源码并编译生成安装平台库 2.复制生成的FFmpeg库so文件与包含目录到自己的Android下 如果没有prebuiltLibs目录,创建一个,然后复制 包含目录只复制arm64-v8a下

DeepSeek大模型 —— 全维度技术解析

DeepSeek大模型 —— 全维度技术解析 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;点我试试&#xff01;&#xff01; 文章目录 DeepSeek大模型 —— 全维度技术解析一、模型架构全景解析1.1…

Spring Boot 与 MyBatis 版本兼容性

初接触Spring Boot&#xff0c;本次使用Spring Boot版本为3.4.3&#xff0c;mybatis的起步依赖版本为3.0.0&#xff0c;在启动时报错&#xff0c;报错代码如下 org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name userMapper…

JavaWeb6、Servlet

6.1Servlet简介 Servlet就是sun公司开发动态web的一门技术 sun公司在这些API中提供一个接口叫做Servlet&#xff0c;如果想开发一个Servlet程序&#xff0c;只需要完成两个小步骤&#xff1a; 编写一个类&#xff0c;实现Servlet接口 把开发好的Java类部署到web服务器中 把…

论文粗读——Isometric 3D Adversarial Examples in the Physical World

论文地址:Isometric 3D Adversarial Examples in the Physical World 动机 现有的3D点云攻击方法远远不够隐蔽,并且在物理世界中性能严重下降。 已有方法及其不足 基于梯度的攻击->仅限于数字世界攻击;KNN攻击和GeoA3攻击->点云重建引入了较大的噪声和错误,导致攻…

AI视频领域的DeepSeek—阿里万相2.1图生视频

让我们一同深入探索万相 2.1 &#xff0c;本文不仅介绍其文生图和文生视频的使用秘籍&#xff0c;还将手把手教你如何利用它实现图生视频。 如下为生成的视频效果&#xff08;我录制的GIF动图&#xff09; 如下为输入的图片 目录 1.阿里巴巴全面开源旗下视频生成模型万相2.1模…

微电网协调控制器ACCU-100 分布式光伏 光储充一本化

安科瑞 华楠 18706163979 应用范围&#xff1a; 分布式光伏、微型风力发电、工商业储能、光储充一体化电站、微电网等领域。 主要功能&#xff1a; 数据采集&#xff1a;支持串口、以太网等多通道实时运行&#xff0c;满足各类风电与光伏逆变器、储能等 设备接入&#xff…

Android MVC、MVP、MVVM三种架构的介绍和使用。

写在前面&#xff1a;现在随便出去面试Android APP相关的工作&#xff0c;面试官基本上都会提问APP架构相关的问题&#xff0c;用Java、kotlin写APP的话&#xff0c;其实就三种架构MVC、MVP、MVVM&#xff0c;MVC和MVP高度相似&#xff0c;区别不大&#xff0c;MVVM则不同&…