Arduino框架下合宙ESP32C3 +1.8“tft 网络时钟
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino框架下合宙ESP32C3 +1.8“tft 网络时钟相关的知识,希望对你有一定的参考价值。
Arduino框架下合宙ESP32C3 +1.8"tft 网络时钟
本项目是在
VSCode PIO
平台开发,基于Arduino
框架。
功能实现模块
- 可以手动配网+SmartConfig配网
1.8
" tft_OLED采用TFT_eSPI
库驱动,同时兼容合宙的0.96" 80X160屏幕(目前esp32C3带屏幕的开发板已经下架了)
- OTA升级功能根据需求,是否启用该函数
不足之处
设定的
SmartConfig
配网保存wifi
信息的代码失效,以及通过nvs
保存wifi信息也不起作用,暂时没查到是什么原因引起的。导致的后果:如果不是将wifi信息代码中写入的话,每次重启都需要一次SmartConfig
配网一次。
主程序代码
#include "LuatOS_C3.h"
#include <Arduino.h>
Preferences prefs; // 声明Preferences对象
TFT_eSPI tft = TFT_eSPI();
char buf[32] = 0;
unsigned long lastMs = 0;
long check1s = 0;
TFT_eSprite drawBuf(&tft);
void setup()
disableCore0WDT();
Serial.begin(115200);
delay(500);
Serial.println("Hello ESP32C3!!");
prefs.begin("wifi");// use "wifi" namespace,
if(prefs.isKey("ssid")) // 如果当前命名空间中有键名为"name"的元素
Serial.printf("ssid: %s\\n\\n", prefs.getString("ssid").c_str());
if(prefs.isKey("password")) // 如果当前命名空间中有键名为"name"的元素
Serial.printf("ssid: %s\\n\\n", prefs.getString("password").c_str());
if(prefs.isKey("ssid") && prefs.isKey("password") ) WiFi.begin(prefs.getString("ssid").c_str(),prefs.getString("password").c_str());
initTFT();
initLEDs();
tft.println("Start Config WiFi!");
if (!AutoConfig())
autoConfigWifi();
tft.println("Wifi Connected!");
sprintf(buf, "IP: %s", WiFi.localIP().toString().c_str());
tft.println(buf);
configTime(TZ_SEC, DST_SEC, "ntp.ntsc.ac.cn", "ntp1.aliyun.com");
delay(2000);
drawBuf.createSprite(TFT_HEIGHT, TFT_WIDTH);
// setupOTAConfig();OTA升级功能根据需求,是否启用该函数
tft.fillScreen(TFT_BLACK);
inline void showCurrentTime()
struct tm info;
getLocalTime(&info);
strftime(buf, 32, "%T", &info);
drawBuf.fillRect(0, 0, TFT_HEIGHT, TFT_WIDTH, TFT_BLACK);
drawBuf.setTextColor(TFT_ORANGE);//TFT_CYAN
drawBuf.setFreeFont(&FreeSerifBold18pt7b);
drawBuf.drawCentreString(buf, 80, 10, 1);
strftime(buf, 32, "%F", &info);
drawBuf.setTextColor(TFT_GREEN);
digitalWrite(PIN_LED1, HIGH);
drawBuf.setFreeFont(&FreeSerifBold12pt7b);
drawBuf.drawCentreString(buf, 80, 50, 1);
digitalWrite(PIN_LED1, LOW);
drawBuf.pushSprite(0, 0);
void loop()
auto ms = millis();
if (ms - check1s > 1000)
check1s = ms;
showCurrentTime();
// ArduinoOTA.handle();//OTA升级功能根据需求,是否启用该函数
platformio.ini
内容
由于VSCode PIO不带合宙ESP32C3,开发板型号是自己修改来的,需要根据自己的开发环境配置的修改型号.
- 参考文章《合宙ESP32C3基于VSCode PIO Arduino开发框架初探教程》有详细说明VSCode PIO环境下搭建和添加合宙ESP32C3开发内容。
[env:esp32-c3-luat]
platform = espressif32
board = esp32-c3-luat
; esp32-c3-devkitm-1
framework = arduino
upload_speed = 921600
monitor_speed = 115200
;board_build.partitions = partitions_16m.csv
; set frequency to 80MHz
board_build.f_flash = 80000000L
; set frequency to 160MHz
board_build.f_cpu = 160000000L
board_build.flash_mode =dio
;upload_port = /dev/cu.SLAB_USBtoUART
;monitor_port = /dev/cu.SLAB_USBtoUART
; upload_protocol = espota
; upload_port = 192.168.50.122
工程源码
链接:https://pan.baidu.com/s/1Q14rif9yRlXknzjKNGS9sA
提取码:qcse
- 本项目参考来自github地址:https://github.com/zhuhai-esp/ESP32-C3-LuatOS
以上是关于Arduino框架下合宙ESP32C3 +1.8“tft 网络时钟的主要内容,如果未能解决你的问题,请参考以下文章
Arduino +合宙ESP32C3 +1.8/1.44 寸TFT液晶屏驱动显示
合宙ESP32C3基于Arduino IDE框架下配置分区表