硬件连接

TFT_SCLK --> 2

TFT_MOSI --> 3

TFT_RST --> 4

TFT_DC --> 6

TFT_CS --> 7

GPIO1 --> SCK

GPIO2 --> SDA

GND --> GND

程序

步骤1: 按照前面教程下载好库文件
步骤2: 编写代码
  • 新建项目

输入代码

#include <Adafruit_GFX.h>      
#include <Adafruit_ST7735.h> 
#include <h1_SW35xx.h> 
#define TFT_SCLK 2  // Clock out  
#define TFT_MOSI 3  // Data out
#define TFT_RST  4      
#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);  
using namespace h1_SW35xx;

SW35xx sw(Wire);

const char *fastChargeType2String(SW35xx::fastChargeType_t fastChargeType) {
  switch (fastChargeType) {
  case SW35xx::NOT_FAST_CHARGE:
    return "Not fast charge";
    break;
  case SW35xx::QC2:
    return "QC2.0";
    break;
  case SW35xx::QC3:
    return "QC3.0";
    break;
  case SW35xx::FCP:
    return "FCP";
    break;
  case SW35xx::SCP:
    return "SCP";
    break;
  case SW35xx::PD_FIX:
    return "PD Fix";
    break;
  case SW35xx::PD_PPS:
    return "PD PPS";
    break;
  case SW35xx::MTKPE1:
    return "MTK PE1.1";
    break;
  case SW35xx::MTKPE2:
    return "MTK PE2.0";
    break;
  case SW35xx::LVDC:
    return "LVDC";
    break;
  case SW35xx::SFCP:
    return "SFCP";
    break;
  case SW35xx::AFC:
    return "AFC";
    break;
  default:
    return "unknown";
    break;
  }
}
 
void setup(void) {
  tft.initR(INITR_BLACKTAB); 
  tft.fillScreen(ST7735_BLACK);
  tft.setTextColor(ST7735_YELLOW);
  tft.setTextSize(1);
  tft.print("Hello!");
  Serial.begin(115200);
  Wire.begin(D0, D1 ); 
  sw.setMaxCurrent5A();
  sw.begin();
}
 
void loop(void) {
  sw.readStatus();

  // 清除顶部的显示区域
  tft.fillRect(0, 0, 128, 80, ST7735_BLACK);
  // 然后再绘制新的内容
  tft.setCursor(0, 0);
  tft.print("Power Monitor");
  tft.drawLine(0, 16, 128, 16, ST7735_WHITE);  // 分隔线

  // 显示输入电压
  tft.setCursor(0, 20);
  tft.print("Vin:");
  tft.setCursor(40, 20);
  tft.print(sw.vin_mV);
  tft.print(" mV");

  // 显示输出电压
  tft.setCursor(0, 30);
  tft.print("Vout:");
  tft.setCursor(40, 30);
  tft.print(sw.vout_mV);
  tft.print(" mV");
  // 显示USB-C电流
  tft.setCursor(0, 40);
  tft.print("USB-C:");
  tft.setCursor(40, 40);
  tft.print(sw.iout_usbc_mA);
  tft.print(" mA");

  // 显示USB-A电流
  tft.setCursor(0, 50);
  tft.print("USB-A:");
  tft.setCursor(40, 50);
  tft.print(sw.iout_usba_mA);
  tft.print(" mA");

  // 显示快充类型
  tft.setCursor(0, 60);
  tft.print("FastCharge:");
  tft.setCursor(60, 60);
  tft.print(fastChargeType2String(sw.fastChargeType));

  // 如果是PD协议,显示PD版本
  if (sw.fastChargeType == SW35xx::PD_FIX || sw.fastChargeType == SW35xx::PD_PPS) {
  tft.setCursor(0, 70);
  tft.print("PD Ver:");
  tft.setCursor(60, 70);
  tft.print(sw.PDVersion);
  }

  // 分隔线和结束
  tft.drawLine(0, 80, 128, 80, ST7735_WHITE);
  tft.setCursor(0, 90);
  tft.print("=====================================");

  delay(1000);
  //tft.fillScreen(ST7735_BLACK);
}
步骤3: 上传代码
  • 在IDE的工具菜单中,设置板卡类型为XIAO ESP32C6,并通过“工具” > “端口”选择正确的串行通信端口。

  • 将修改后的代码上传至开发板。成功上传后,打开串口监视器。

  • USBA口连接手机充电。可以看见显示屏正确显示充电电压和充电电流,还有快充类型

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐