回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(234)---WeMos D1R32 绿色快闪点亮75位WS2812B屏 简单

头像 驴友花雕 2024.10.09 20 0

00-4.jpg

Wemos D1 ESP32 开发板是一款紧凑而强大的设备,它集成了天线和射频巴伦、功率放大器、低噪声放大器、滤波器和电源管理模块。整个解决方案占用的印刷电路板面积最少。该板采用台积电 40nm 低功耗技术,搭配 2.4GHz 双模 Wi-Fi 和蓝牙芯片,功率和射频性能最佳,安全可靠,可扩展至各种应用。将 WiFi 和蓝牙连接结合在单个 ESP32 芯片上。Wemos D1 ESP32 开发板是基于乐鑫 ESP32 芯片的开发板。它具有 Wi-Fi 和蓝牙连接,以及一系列用于连接传感器、执行器和其他设备的输入和输出引脚。该板具有高性能处理器和广泛的功能,是物联网和家庭自动化项目的理想选择。此外,该板具有易于使用的界面,采用 Arduino UNO 外形尺寸,并与 Arduino 平台兼容,可以轻松开发项目并与其他设备集成。借助 Wemos D1 ESP32 开发板,您可以轻松地为各种应用创建智能、互联的解决方案。该板的一些规格包括:
- 240 MHz 双核 LX6 芯片
- Wi-Fi 802.11 b/g/n 连接
- 蓝牙 4.2 BLE 连接
- 4 MB 闪存
- 520 KB SRAM
- 30 针输入/输出,包括 GPIO、I2C、SPI、UART 和 ADC
- MicroSD支持
- LiPo电池充电支持
该板与 Arduino 平台兼容,可以使用 Arduino IDE 进行编程。此外,它还支持 MicroPython 平台,该平台允许使用 Python 进行编程。

 

01.jpg

64位屏是一种由WS2812B LED灯珠组成的矩阵屏幕,每个灯珠都可以独立控制颜色和亮度。
1、结构与组成:
该屏幕由8行8列共64个WS2812B LED灯珠组成,每个灯珠都是一个独立的像素点。每个像素点内部集成了控制电路和RGB芯片,能够显示16777216种颜色。

2、控制方式:
WS2812B采用单线串行通信协议,通过一个数据线即可控制所有LED。每个像素点接收到数据后,会将数据传递给下一个像素点,形成级联结构。常用的控制器包括Arduino、ESP32等,配合相应的库文件(如Adafruit_NeoPixel或FastLED)可以轻松实现控制。

3、应用场景:
这种64位屏幕广泛应用于LED显示屏、广告牌、装饰照明、电子产品原型设计等领域。由于其高亮度和丰富的颜色显示能力,非常适合用于动态显示和视觉效果。

4、优点:
WS2812B LED具有低电压驱动、环保节能、亮度高、散射角度大、一致性好、超低功耗和超长寿命等优点。其控制电路集成在LED内部,使得电路设计更加简单,安装更加方便。

5、编程与控制:
使用Arduino或ESP32等微控制器,可以通过编程实现各种动态效果和动画。例如,可以使用setPixelColor函数设置每个像素的颜色,通过循环和延迟函数实现流水灯、彩虹效果等。

 

79.jpg

3D打印,组合了三块屏,规格为8X24

 

09.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32
   Wifi蓝牙无线开发板CH340 4M内存
 {花雕动手做}项目之八:绿色快闪点亮75位WS2812B屏

实验开源代码

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
    实验二百三十四:Wemos D1 迷你Arduino Uno R3 D1 R32 ESP32
    Wifi蓝牙无线开发板CH340 4M内存
  {花雕动手做}项目之八:绿色快闪点亮75位WS2812B屏
*/

#include <Adafruit_NeoPixel.h>

#define PIN 2 // 定义连接LED灯带的引脚
#define MAX_LED 75 // 定义LED灯的数量

int val = 0; // 初始化变量val

// 创建一个Adafruit_NeoPixel对象,用于控制LED灯带
Adafruit_NeoPixel strip = Adafruit_NeoPixel(MAX_LED, PIN, NEO_RGB + NEO_KHZ800);

void setup() {
  strip.setBrightness(66); // 设置LED灯带的亮度
  strip.begin(); // 初始化LED灯带
  strip.show(); // 更新LED灯带状态
}

void loop() {
  uint8_t i, a = 0; // 初始化两个无符号8位变量i和a
  uint32_t color = strip.Color(160, 10, 10); // 设置颜色(红色160, 绿色10, 蓝色10)
  while (a < MAX_LED) // 修改循环条件
  {
    strip.clear(); // 清除LED状态
    for (i = 0; i < MAX_LED; i++)
    {
      if (i == a) strip.setPixelColor(i, color); // 如果i等于a,则设置该像素颜色
    }
    strip.show(); // 更新LED灯带状态
    delay(6); // 延时6毫秒
    a++; // 增加a的值
  }
}

实验场景图

 

09-.jpg

实验场景图  动态图

 

0003.gif

评论

user-avatar
icon 他的勋章
    展开更多