?Arduino + ESP32-C3 + TFT(1.8‘ ST7735S)基础平台_姜戈12的博客-CSDN博客https://blog.csdn.net/jiangge12/article/details/123971499
?按上文插上TFT,先来点测试文字:
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#define TFT_SCLK 2 // Clock out
#define TFT_MOSI 3 // Data out
#define TFT_RST 10
#define TFT_DC 6
#define TFT_CS 7
//______TFT_BL 不接
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
void setup(void) {
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(3);
tft.print("Hello!");
}
void loop(void) {
}
接下来,连上 Wifi?
#include <WiFi.h>
void setup()
{
Serial.begin(115200);
Serial.print("Connecting WiFi: ");
WiFi.begin("xxxxxx", "xxxxxx"); // ssid, password
while (WiFi.status() != WL_CONNECTED) {delay(1000); Serial.print("."); }
Serial.print("\nWiFi connected! IP:");Serial.println(WiFi.localIP());
delay(1000);
}
void loop()
{
}
有了 TFT 又有了 Wifi ,那么按之前 micropython 测试过的,可以获得天气预报数据。
移植到 Arduino+C3 平台,看起来简单,也折腾好久,主要是细节,直接copy一堆错。仔细对比语法终于调试通过。
注意:需要替换三处 xxxxxx
网站数据返回后需要JSON处理,参考之前写的 Python,看看?ArduinoJson.h 例程顺利移植。
Python / Micropython 获取天气数据_姜戈12的博客-CSDN博客话题很大,先来个例子快速建立信心,下面是获得实时天气的代码:import requestsimport jsonurl = "http://api.openweathermap.org/data/2.5/forecast?q=Chengdu,CN&APPID=xxxxxxxxxxxxxx" # openweathermap.org 免费注册一个账号,获得 APPIDr = requests.get(url) temp = r.json()['main']https://blog.csdn.net/jiangge12/article/details/123810689
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#define TFT_SCLK 2 // Clock out
#define TFT_MOSI 3 // Data out
#define TFT_RST 10
#define TFT_DC 6
#define TFT_CS 7
//______TFT_BL 不接
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
void setup()
{
tft.initR(INITR_BLACKTAB);
tft.setRotation(1);
tft.fillScreen(ST7735_BLACK);
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(2);
tft.println("TFT OK");
Serial.begin(115200);
Serial.print("Connecting WiFi");
tft.print("Conecting Wifi");
WiFi.begin("xxxxxx", "xxxxxx"); // ssid , password
while (WiFi.status() != WL_CONNECTED) {delay(1000); Serial.print("."); tft.print(".");}
Serial.print("\nWiFi connected! IP:");Serial.println(WiFi.localIP());
delay(1000);
}
void loop()
{
HTTPClient http ;
http.begin("http://api.openweathermap.org/data/2.5/weather?q=Chengdu,CN&APPID=xxxxxx"); // your appID
int website_return_code = http.GET() ;
String website_return_text = http.getString() ;
DynamicJsonDocument doc(1024) ;
deserializeJson(doc, website_return_text) ;
JsonObject obj = doc.as<JsonObject>() ;
float temp = float(obj["main"]["temp"]) -273.15 ;
int humidity = obj["main"]["humidity"] ;
int pressure = obj["main"]["pressure"] ;
String weather = obj["weather"][0]["description"] ;
int wind = obj["wind"]["speed"] ;
int visibility = obj["visibility"] ;
Serial.println(temp);
Serial.println(humidity);
Serial.println(pressure);
Serial.println(weather);
Serial.println(wind);
Serial.println(visibility);
tft.fillScreen(ST7735_BLACK);
tft.setCursor(0, 0);
tft.println(temp);
tft.println(humidity);
tft.println(pressure);
tft.println(weather);
tft.println(wind);
tft.println(visibility);
delay(10000);
}
还是放张图吧,把 TFT 用最近流行的双面厚胶带(易拆)贴在显示器左下角,一条短线插USB口,算是清爽的“开发环境”了。
|