帮我写一个esp8266 连接网络使用OLED显示时间的代码 arduino
时间: 2024-03-12 21:49:37 浏览: 112
ESP8266获取网络时间显示到OLED
好的,以下是一个基本的示例代码,它使用ESP8266连接到WiFi网络并使用OLED显示当前时间。请确保您已经安装了ESP8266WiFi库和Adafruit_SSD1306库。
```arduino
#include <ESP8266WiFi.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <TimeLib.h>
// Replace with your network credentials
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
// Initialize OLED display
#define OLED_RESET LED_BUILTIN
Adafruit_SSD1306 display(OLED_RESET);
// Set your timezone offset
const int timeZoneOffset = 8; // GMT+8
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize OLED display
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C for 128x32
// Connect to Wi-Fi network
WiFi.begin(ssid, password);
Serial.print("Connecting to ");
Serial.print(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println();
Serial.print("Connected to ");
Serial.println(ssid);
// Set time using NTP
configTime(timeZoneOffset * 3600, 0, "pool.ntp.org", "time.nist.gov");
while (!time(nullptr)) {
Serial.print(".");
delay(1000);
}
Serial.println();
Serial.print("Time synchronized: ");
Serial.println(getFormattedTime());
}
void loop() {
// Clear OLED display
display.clearDisplay();
// Get current time
time_t now = time(nullptr);
// Display time on OLED
display.setCursor(0, 0);
display.setTextSize(1);
display.setTextColor(WHITE);
display.print(getFormattedTime(now));
display.display();
// Wait for 1 second
delay(1000);
}
String getFormattedTime() {
return getFormattedTime(time(nullptr));
}
String getFormattedTime(time_t time) {
char buffer[20];
sprintf(buffer, "%02d:%02d:%02d", hour(time), minute(time), second(time));
return String(buffer);
}
```
这段代码连接到您的WiFi网络,使用NTP设置时间,并在OLED上显示当前时间。您可以根据需要调整时区偏移量。
阅读全文