esp8266天气时钟arduino代码
时间: 2023-06-14 22:08:13 浏览: 151
以下是一个简单的 ESP8266 天气时钟的 Arduino 代码示例。代码需要连接到 WiFi 并使用开放天气 API 获取天气信息。
```arduino
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h>
#define SCREEN_WIDTH 128 // OLED 显示器宽度
#define SCREEN_HEIGHT 64 // OLED 显示器高度
// OLED 显示器连接
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// WiFi 连接信息
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
// 开放天气 API 信息
const char* serverName = "http://api.openweathermap.org/data/2.5/weather?q=YOUR_CITY&appid=YOUR_API_KEY&units=metric";
const char* apiKey = "YOUR_API_KEY";
void setup() {
Serial.begin(9600);
delay(1000);
// OLED 显示器初始化
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay();
// WiFi 连接
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// 获取天气信息
getWeatherData();
}
void loop() {
display.clearDisplay();
// 显示天气信息
display.setTextSize(2);
display.setCursor(0, 0);
display.println("Weather in YOUR_CITY:");
display.setTextSize(3);
display.setCursor(0, 20);
display.print(weatherMain);
display.setCursor(0, 50);
display.print(weatherTemp);
display.print("C");
display.display();
delay(10000);
}
String weatherMain;
String weatherTemp;
void getWeatherData() {
if(WiFi.status() == WL_CONNECTED) {
HTTPClient httpClient;
httpClient.begin(serverName);
int httpResponseCode = httpClient.GET();
if(httpResponseCode == 200) {
String payload = httpClient.getString();
DynamicJsonDocument doc(1024);
deserializeJson(doc, payload);
weatherMain = doc["weather"][0]["main"].as<String>();
weatherTemp = doc["main"]["temp"].as<String>();
}
else {
Serial.println("Error getting weather data");
}
httpClient.end();
}
else {
Serial.println("WiFi not connected");
}
}
```
请注意,这个示例代码是仅供参考。您需要将 `YOUR_SSID`,`YOUR_PASSWORD`,`YOUR_CITY` 和 `YOUR_API_KEY` 替换为您自己的信息。此外,您可能需要更改 OLED 显示器的连接方式和引脚。
阅读全文