帮我写一个esp8266 连接网络使用OLED显示南京天气的代码 arduino
时间: 2024-04-23 11:26:54 浏览: 150
8266驱动OLED屏幕显示天气.zip
好的,下面是一个简单的示例代码,它使用 ESP8266 连接到网络并使用 OLED 显示南京的天气信息。请确保你已经安装了 Adafruit_SSD1306 和 Adafruit_GFX 库,并将你的 OLED 屏幕连接到正确的引脚。
```arduino
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266HTTPClient.h>
#include <Adafruit_SSD1306.h>
// OLED屏幕
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// WiFi网络
const char* ssid = "YourSSID"; // 你的WiFi名称
const char* password = "YourPassword"; // 你的WiFi密码
// 天气API
const char* serverName = "http://t.weather.sojson.com/api/weather/city/101190101"; // 南京市的天气API
void setup() {
// 初始化串口和OLED屏幕
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
// 连接WiFi
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// 设置HTTP客户端
HTTPClient http;
http.begin(serverName);
// 发送HTTP请求
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
// 获取响应正文
String payload = http.getString();
// 解析JSON数据
String cityName = payload.substring(payload.indexOf("cityName") + 11, payload.indexOf("shidu") - 3);
String weather = payload.substring(payload.indexOf("type") + 7, payload.indexOf("notice") - 3);
String temperature = payload.substring(payload.indexOf("wendu") + 7, payload.indexOf("ganmao") - 3);
// 显示天气信息
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println(cityName);
display.println("Weather: " + weather);
display.println("Temperature: " + temperature + "C");
display.display();
}
else {
Serial.println("Error on HTTP request");
}
// 关闭HTTP客户端
http.end();
}
void loop() {
// 无需执行任何操作
}
```
这段代码连接到你的WiFi网络,获取南京市的天气信息,并将其显示在 OLED 屏幕上。你可以根据需要修改代码以适应你的具体需求。
阅读全文