当前位置: 首页 > news >正文

Arduino IDE ESP8266连接0.96寸SSD1306 IIC单色屏显示北京时间

概括

通过wifi连接网络获取北京时间,在显示屏上显示。
软件:Arduino IDE
硬件:ESP8266板、0.96寸显示屏、杜邦线、下载线(安卓充电线)

接线

LED有4个引脚,分别是GND、VCC、SCL、SDA

GND接地,VCC接3.3V的供电

SCL接D2,SDA接D3

下载库

打开Arduino IDE,找到左侧列表那沓书,点一下,搜索下面的库名字,挨个安装

Adafruit_GFX、Adafruit_SSD1306、ESP8266WiFi

WiFiUdp、NTPClient、TimeLib

安装完成创建项目,把下面代码改一下wifi账号密码(2.4gWIFI),写入就行

代码:

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <NTPClient.h>
#include <TimeLib.h>// 定义I2C引脚(ESP8266的D3=GPIO0, D2=GPIO4)
#define SDA_PIN 0
#define SCL_PIN 4// WiFi 配置
const char* ssid = "IOT";             // WiFi名称
const char* password = "8888888";  // WiFi密码// 初始化OLED对象,定义OLED参数128*64像素
Adafruit_SSD1306 display(128, 64, &Wire, -1);// NTP 客户端配置
WiFiUDP udp;
NTPClient timeClient(udp, "pool.ntp.org", 28800, 60000);  // UTC +8小时(时区调整)28800秒为8小时/*** Arduino程序初始化函数*/
void setup() {Serial.begin(9600);            //串口波特率Wire.begin(SDA_PIN, SCL_PIN);  // 初始化I2CinitializeOLED();              // 初始化OLEDconnectToWifi();               // 连接WiFitimeClient.begin();            // 启动 NTP 客户端
}/*** Arduino主循环函数* @details 系统初始化完成后进入此循环,会无限重复执行*/
void loop() {// 更新 NTPtimeClient.update();// 获取时间String formattedTime = timeClient.getFormattedTime();//获取日期long epochTime = timeClient.getEpochTime();  //时间戳//把时间戳加入setTime,就可以随时提出来了setTime(epochTime);//整合String forDate = String(year()) + "-" + (month() < 10 ? "0" : "") + month() + "-" + (day() < 10 ? "0" : "") + day();display.clearDisplay();                         // 清空显示CommonDisplayComponent(7, 5, forDate);          //日期-调用公共显示组件CommonDisplayComponent(15, 30, formattedTime);  //时间-调用公共显示组件display.display();                              // 刷新显示屏,确保内容显示出来delay(1000);                                    // 延迟1秒
}/*** 初始化SSD1306 OLED显示屏* * @details 使用I2C接口初始化OLED屏幕,默认地址为0x3C*          若初始化失败,将通过串口输出错误信息并进入无限循环* * @note 依赖Adafruit_SSD1306库* @note 需提前定义全局对象:Adafruit_SSD1306 display(OLED_RESET);* * @warning 初始化失败会导致程序阻塞,需检查:*          1. OLED硬件连接是否正确*          2. I2C地址是否匹配(0x3C或0x3D)*          3. 电源供应是否稳定*/
void initializeOLED() {if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {Serial.println("OLED 初始化失败!");// 卡住不动while (1);  } else {Serial.println("OLED 初始化成功!");}
}/*** 连接到指定的WiFi网络* * @note 需要提前定义全局变量:*       - const char* ssid     // WiFi名称*       - const char* password // WiFi密码* * @note 连接过程中会在OLED屏幕显示连接状态* @note 连接成功后会在串口输出成功信息* * @warning 若WiFi信号弱或密码错误,可能导致长时间阻塞*/
void connectToWifi() {WiFi.begin(ssid, password);display.clearDisplay();  // 清空显示while (WiFi.status() != WL_CONNECTED) {Serial.println("正在连接WIFI");CommonDisplayComponent(15, 30, "WIFI Loca");  //时间-调用公共显示组件display.display();                            // 刷新显示屏,确保内容显示出来delay(1000);}Serial.println("WIFI连接成功");
}/*** 在OLED屏幕上显示文本的公共组件函数* * @param x 文本起始位置的X坐标 (像素)* @param y 文本起始位置的Y坐标 (像素)* @param displayText 要显示的字符串内容* * @note 依赖SSD1306库,需提前初始化display对象* @note 文本大小固定为2,颜色为白色*/
void CommonDisplayComponent(int x, int y, String displayText) {display.setTextSize(2);               // 文字大小display.setTextColor(SSD1306_WHITE);  // 白色字体display.setCursor(x, y);              // 设置光标位置display.println(displayText);
}

http://www.lqws.cn/news/582247.html

相关文章:

  • 2025年AI学习所感
  • 链表题解——两两交换链表中的节点【LeetCode】
  • 《Redis可扩展:轻松应对数据增长与流量高峰》
  • uni-app的生命周期
  • 云原生微服务架构搭建与部署全流程及样例
  • Spring Cloud Bus 和 Spring Cloud Stream
  • C语言main函数的原理:程序入口的奥秘
  • SpringCloud微服务 Eureka服务注册与发现
  • 从DeepMimic到带物理约束的MaskMimic——人形机器人全身运控的通用控制器:自此打通人类-动画-人形的训练路径
  • week1
  • WPF学习笔记(14)列表视图控件ListView与数据模板
  • demo01:基于 SpringMVC 的用户管理系统
  • Linux习题
  • 设计模式-观察者模式(发布订阅模式)
  • Redis 安装使用教程
  • RWKV-8 系列之 DeepEmbedAttention:精简 KV 缓存,尤其适合混合模型(RWKV-7s)
  • 使用pyflink进行kafka实时数据消费
  • 在 Vue3 + Element Plus 中实现 el-table 拖拽排序功能
  • mysql 小版本升级实战分享
  • 基于librdkafka开发的C++客户端,生产者生产发送数据失败问题处理
  • 百度文心大模型4.5系列正式开源,开源会给百度带来什么?
  • 网络安全2023—新安全新发展
  • MySQL (四):连接查询和索引
  • macos 安装 xcode
  • 【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
  • 基于C#的OPCServer应用开发,引用WtOPCSvr.dll
  • python | numpy小记(五):理解 NumPy 中的 `np.arccos`:反余弦函数
  • 卡片跳转到应用页面(router事件)
  • 一文详解Modbus协议原理、技术细节及软件辅助调试
  • 华为云Flexus+DeepSeek征文|​​华为云ModelArts Studio大模型 + WPS:AI智能PPT生成解决方案​