第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气

第18篇ESP32platformio-arduino框架-ili9488-lcd显示时间天气

第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气_第1张图片

第18篇esp32ili9488lcd显示时间天气

连接方法:

第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气_第2张图片

第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气_第3张图片

修改WIFI:

第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气_第4张图片

关键代码 

void setup()
{
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid,password);
  Serial.print("\r\nConnecting to ");//serial:串口函数,serial.print:经由串口的打印函数
  Serial.print(ssid);
  Serial.println("...");
 
  while(WiFi.status()!= WL_CONNECTED)
  {//返回值由WiFi连接状态决定
    delay(1000);//while循环每一秒检查一次
    Serial.print("Waiting for ");
   // Serial.print(j++);
    Serial.println("sss...");
  }

//————————————————
//版权声明:本文为CSDN博主「txwtech」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
//原文链接:https://blog.csdn.net/txwtech/article/details/132945424
 
  //wifi.addAP("txwpp2.4g", "80438250txw@");   // 修改里面的ssid和password为你的WIFI名称和密码即可
  //wifiMulti.addAP("ssid2", "password2"); //这里可以设置多个常用wifi,会自动连接信号最强的
  //wifiMulti.addAP("ssid3", "password3");

 
  tft.init();
  tft.setRotation(0);  //旋转屏幕   参数为:0, 1, 2, 3 分别代表 0°,90°,180°,270°,可以设置4为镜像。
  tft.fillScreen(0x0000);
  tft.setTextColor(TFT_BLACK, bgColor);
 
  targetTime = millis() + 1000; 
 
  Serial.print("正在连接WIFI ");
  Serial.println(WiFi.SSID());
 
  while (WiFi.status()!= WL_CONNECTED) {
    for(byte n=0;n<10;n++){ //每500毫秒检测一次状态
      loading(50);
    }
  }
  while(loadNum < 200){ //让动画走完
    loading(1);
  }
 
  Serial.print("本地IP: ");
  Serial.println(WiFi.localIP());
  //Serial.println("启动UDP");
  Udp.begin(localPort);
  //Serial.print("端口号: ");
  //Serial.println(Udp.localPort());
  //Serial.println("等待同步...");
  setSyncProvider(getNtpTime);
  setSyncInterval(300);
 
  
  TJpgDec.setJpgScale(1);
  TJpgDec.setSwapBytes(true);
  TJpgDec.setCallback(tft_output);
 
  //TJpgDec.drawJpg(0,0,watchtop, sizeof(watchtop));
  
  TJpgDec.drawJpg(0,0,img240_10, sizeof(img240_10));//顶部图标显示
  //TJpgDec.drawJpg(0,220,watchbottom, sizeof(watchbottom));
 
  
  //绘制一个视口
  // tft.setViewport(0, 20, 240, 200);
  // tft.fillScreen(0x0000);
  // tft.fillRoundRect(0,0,240,200,5,bgColor);//实心圆角矩形

  tft.setViewport(0, 20, 320, 460);
  tft.fillScreen(0x0000);
  tft.fillRoundRect(0,0,320,460,5,bgColor);//实心圆角矩形
  //tft.resetViewport();
 
  //绘制线框
  tft.drawFastHLine(0,34,320,TFT_BLACK);//240
  
  tft.drawFastVLine(150,0,34,TFT_BLACK);
  
  tft.drawFastHLine(0,426,320,TFT_BLACK); //240
  
  tft.drawFastVLine(60,426,34,TFT_BLACK);
  tft.drawFastVLine(160,426,34,TFT_BLACK);
 
  getCityCode();  //获取城市代码
  digitalClockDisplay();
  
  TJpgDec.drawJpg(230,387,humidity, sizeof(humidity));  //湿度图标
  TJpgDec.drawJpg(161,428,temperature, sizeof(temperature));  //温度图标
  getCityWeater();
  
  digitalClockDisplay();
  imgPlant();  //一定要JPG格式的图片才能显示
  getCityWeater();
  
}
 
time_t prevDisplay = 0; // 显示时间
unsigned long weaterTime = 0;
 
void loop(){
  
  if (now() != prevDisplay) {
    prevDisplay = now();
    digitalClockDisplay();
  }
 
  
  if(millis() - weaterTime > 300000){ //5分钟更新一次天气
    weaterTime = millis();
    getCityWeater();
  }
  scrollBanner();
 
 
  imgPlant();  //一定要JPG格式的图片才能显示
}
 
// 发送HTTP请求并且将服务器响应通过串口输出
void getCityCode(){
 String URL = "http://wgeo.weather.com.cn/ip/?_="+String(now());
  WiFiClient client;
 //创建 HTTPClient 对象
  HTTPClient httpClient;
 
  httpClient.begin(client,URL);
 
  
  //设置请求头中的User-Agent
  httpClient.setUserAgent("Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1");
  httpClient.addHeader("Referer", "http://www.weather.com.cn/");
 
  //启动连接并发送HTTP请求
  int httpCode = httpClient.GET();
  Serial.print("Send GET request to URL: ");
  Serial.println(URL);
  
  //如果服务器响应OK则从服务器获取响应体信息并通过串口输出
  if (httpCode == HTTP_CODE_OK) 
  {
    String str = httpClient.getString();
    
    int aa = str.indexOf("id=");
    if(aa>-1){
       //cityCode = str.substring(aa+4,aa+4+9).toInt();
       cityCode = str.substring(aa+4,aa+4+9);
       Serial.println(cityCode); 
       getCityWeater();
    }
    else
    {
      Serial.println("获取城市代码失败");  
    }
    
    
  }
   else 
  {
    Serial.println("请求城市代码错误:");
    Serial.println(httpCode);
  }
 
  //关闭ESP32与服务器连接
  httpClient.end();
}

第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气_第5张图片

platformio.ini

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
upload_speed = 921600
upload_port = COM8
monitor_port = 115200

工程源代码:

待更新。。。

第1篇:Arduino与ESP32开发板的安装方法

第2篇:ESP32 helloword第一个程序示范点亮板载LED

第3篇:vscode搭建esp32 arduino开发环境

第4篇:vscode+platformio搭建esp32 arduino开发环境

​​​​​​第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验

第6篇:ESP32连接无源喇叭播放音乐《涛声依旧》

第7篇:ESP32连接按钮点亮LED无源喇叭播放声音

​​​​​​第8篇:ESP32连接超声波HC-SR04测距点亮LED无源喇叭播放声音

第9篇:ESP32超声波HC-SR04Arduino类库编写

第10篇:ESP32外部中断功能的使用

第11篇:ESP32vscode_platformio_idf框架helloworld点亮LED

第12篇:ESP32模拟SPI驱动12864LCD_ST7920显示屏

第13篇:ESP32 idf wifi联网使用SNTP同步网络时间LCD ST7920液晶屏显示

第14篇ESP32 idf wifi联网_WiFi STA 模式(连接到WIFI)LCD ST7920液晶屏显示
第15篇ESP32 idf框架 wifi联网_WiFi AP模式_手机连接到esp32开发板

第16篇ESP32 platformio_arduino框架 wifi联网_连接WiFi热点并连接tcp server收发数据进行通讯
第17篇ESP32 platformio_arduino框架 AP热点与AP+STA同时存在模式

你可能感兴趣的:(ESP32趣味开发,esp32,ili9488)