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

2023-10-12 01:36

本文主要是介绍第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

第18篇esp32ili9488lcd显示时间天气

连接方法:

修改WIFI:

关键代码 

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);//240tft.drawFastVLine(150,0,34,TFT_BLACK);tft.drawFastHLine(0,426,320,TFT_BLACK); //240tft.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-AgenthttpClient.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();
}

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同时存在模式

这篇关于第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/192303

相关文章

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount