esp12f+OLED
时间: 2024-01-02 19:01:48 浏览: 27
ESP8266-12F是一款常用的WiFi模块,而OLED是一种有机发光二极管显示屏。结合使用这两个设备可以实现一些有趣的项目,比如获取天气信息并在OLED屏幕上显示。
下面是一个简单的示例代码,演示了如何使用ESP8266-12F和OLED来获取天气信息并显示在屏幕上:
```python
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h>
#define OLED_RESET 0
Adafruit_SSD1306 display(OLED_RESET);
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
void setup() {
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.println("Connecting to WiFi...");
display.display();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
display.clearDisplay();
display.setCursor(0,0);
display.println("Connected to WiFi");
display.display();
delay(2000);
display.clearDisplay();
display.setCursor(0,0);
display.println("Getting weather...");
display.display();
HTTPClient http;
http.begin("http://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=YOUR_LOCATION");
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
DynamicJsonDocument doc(1024);
deserializeJson(doc, payload);
JsonObject weather = doc["current"];
String temp = weather["temp_c"];
String condition = weather["condition"]["text"];
display.clearDisplay();
display.setCursor(0,0);
display.println("Temperature: " + temp + "°C");
display.println("Condition: " + condition);
display.display();
}
else {
Serial.println("Error on HTTP request");
}
http.end();
}
void loop() {
}
```
这段代码使用了Adafruit_SSD1306库来控制OLED屏幕,ESP8266WiFi库来连接WiFi,ESP8266HTTPClient库来发送HTTP请求,ArduinoJson库来解析JSON数据。
在代码中,你需要将`your_SSID`和`your_PASSWORD`替换为你的WiFi网络的名称和密码。还需要将`YOUR_API_KEY`替换为你的天气API密钥,`YOUR_LOCATION`替换为你要获取天气信息的地点。
代码首先连接到WiFi网络,然后发送HTTP请求获取天气信息。接着解析返回的JSON数据,提取温度和天气状况,并将它们显示在OLED屏幕上。
请注意,这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。