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

【花雕学编程】Arduino动手做(233)---ESP32-S3 UNO根据ADXL345的XY轴动态改变64位WS2812灯屏的颜色 简单

头像 驴友花雕 2024.10.06 17 0

00-4.jpg

ESP32-S3 UNO 开发板是基于 ESP32-S3-WROOM-1-N16R8 微控制器的扩展板,基于 Arduino 开发板架构。凭借 2.4GHz Wi-Fi 和集成蓝牙 5.0 等高级功能,它为开发各种项目提供了一个强大的平台。ESP32-S3 UNO 配备 16MB 闪存和 8MB RAM,特别适用于物联网 (IoT)、机器人和其他工程项目的复杂应用。该开发板支持 Python 和 C 等流行的编程语言,可以在 Arduino IDE 开发环境中轻松编程和使用。该板的高级功能,包括对多种通信协议的支持和高处理能力,使其成为专业工程师和开发人员的理想工具。

 

00.jpg

78-.jpg
79.jpg

安装必要的库:
1、在Arduino IDE中安装Adafruit_Sensor和Adafruit_ADXL345_U库,用于ADXL345加速度计。
2、安装Adafruit_NeoPixel库,用于控制WS2812 LED灯带。

 

58.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
 实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+Wi-Fi+蓝牙5.0+45个GPIO
 {花雕动手做}项目之十五:ESP32-S3 UNO根据ADXL345的XY轴动态改变
 64位WS2812灯屏的颜色

实验开源代码

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十三:ESP32-S3 UNO开发板 双核16M+8M+Wi-Fi+蓝牙5.0+45个GPIO
  {花雕动手做}项目之十五:ESP32-S3 UNO根据ADXL345的XY轴动态改变
  64位WS2812灯屏的颜色
*/

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
#include <Adafruit_NeoPixel.h>

// 创建ADXL345对象
Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);

// 定义LED灯带
#define LED_PIN    2
#define LED_COUNT  64
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

// 定义固定亮度值
#define BRIGHTNESS 20  // 亮度范围为0-255

void setup() {
  Serial.begin(115200);  // 初始化串口通信,波特率为115200
  Wire.begin(4, 5);  // 初始化I2C总线,设置SDA为GPIO4,SCL为GPIO5
  Serial.println(" ");
  Serial.println("ESP32-S3 UNO准备就绪");
  if (!accel.begin()) {
    Serial.println("无法找到ADXL345传感器");
    while (1);
  }
  Serial.println("ADXL345传感器初始化成功");
  // 设置测量范围
  accel.setRange(ADXL345_RANGE_16_G);
  // 初始化LED灯带
  strip.begin();
  strip.setBrightness(BRIGHTNESS);  // 设置固定亮度
  strip.show(); // 初始化所有像素为'关'
}

void loop() {
  sensors_event_t event;
  accel.getEvent(&event);

  // 根据加速度数据设置LED颜色
  uint32_t color;
  if (event.acceleration.x > 0) {
    color = strip.Color(255, 0, 0); // 红色
  } else {
    color = strip.Color(0, 0, 255); // 蓝色
  }

  if (event.acceleration.y > 0) {
    color = strip.Color(0, 255, 0); // 绿色
  } else {
    color = strip.Color(128, 0, 128); // 紫色
  }

  // 设置所有LED颜色
  for (int i = 0; i < LED_COUNT; i++) {
    strip.setPixelColor(i, color);
  }
  strip.show();

  // 串口输出加速度和颜色信息
  Serial.print("X: ");
  Serial.print(event.acceleration.x);
  Serial.print(" Y: ");
  Serial.print(event.acceleration.y);
  Serial.print(" 颜色: ");
  Serial.println(color, HEX);

  delay(500); // 延迟500毫秒
}

实验串口返回情况

 

79-9.jpg

实验场景图

 

79-10.jpg
79-11.jpg

评论

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