ESP32 +SSD1306写一个简单的烟花动画
时间: 2023-08-12 18:05:42 浏览: 189
好的,下面是ESP32+SSD1306实现简单烟花动画的代码,你可以参考一下:
首先,你需要准备好ESP32和SSD1306 OLED屏幕,并在Arduino IDE中安装ESP32和SSD1306的库。
然后,打开Arduino IDE,新建一个空白文件,命名为firework.ino,将以下代码复制粘贴到文件中:
```C++
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED屏幕宽度
#define SCREEN_HEIGHT 64 // OLED屏幕高度
#define OLED_RESET -1 // OLED屏幕复位引脚
#define SCREEN_ADDRESS 0x3C // OLED屏幕I2C地址
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS); // 初始化OLED屏幕
display.clearDisplay(); // 清空屏幕
display.display();
}
void loop() {
firework(10, 10, 5); // 在(10,10)位置绘制半径为5的烟花
delay(1000); // 等待1秒
}
void firework(int x, int y, int r) {
int colors[6][3] = { // 定义颜色数组,用于绘制烟花
{255, 255, 255}, // 白色
{255, 0, 0}, // 红色
{0, 255, 0}, // 绿色
{0, 0, 255}, // 蓝色
{255, 255, 0}, // 黄色
{255, 0, 255} // 紫色
};
for(int i=0; i<6; i++) { // 循环绘制6个小圆点
display.fillCircle(x, y, r, SSD1306_WHITE); // 绘制白色小圆点
display.fillCircle(x, y, r-1, colors[i][0]<<16 | colors[i][1]<<8 | colors[i][2]); // 绘制彩色小圆点
display.display(); // 更新屏幕显示
delay(100); // 等待100毫秒
}
}
```
代码中,我们使用Adafruit_SSD1306库实现了OLED屏幕的控制,通过firework函数绘制烟花动画。在loop函数中,我们调用firework函数在屏幕上绘制一个半径为5的烟花,然后等待1秒。
firework函数中,我们使用一个颜色数组来绘制彩色烟花,循环绘制6个小圆点,并依次填充不同的颜色,最后更新屏幕显示。
完成代码编写后,将ESP32连接到电脑上,选择正确的开发板和端口,编译并上传代码。屏幕上将会显示一个简单的烟花动画。
阅读全文