YPVSインジケータ(ESP32)ソースコード

未完成品(カラー調整中) 電子工作
未完成品(カラー調整中)

YPVSに流れる電圧を計測します。
YPVSの開度0の時と開度100の時の電圧を測って代入してください。(25、26行)
現状はRZR用になっています。(27行)
上部の朱色がバッテリ電圧表示、下部の水色がPV電圧です
(撮影時は偽情報を表示させています)
バッテリ電圧を測るため抵抗分圧としていますが、直接抵抗値が代入できるため、入手困難な精密級抵抗の使用を止め、測定した抵抗値を使うようにします。
PV電圧は直接測定します。0~3.9Vまで測定可能です。
スケッチ(ソース)にはなるべくわかりやすいようにコメントを入れています。
デバッグ中なので多少間違ってる可能性もあります。修正をかなり入れていて時間が空いてたりしてかなりのスパゲッティ(^^;
特にカラー表示は全体的におかしいので確認中です。(白黒反転など)
GPIO1がYPVS電圧計測(今後水温計)表示下段 GPIO3がバッテリ電圧計測  表示上段
ディスプレイとの接続は GND VCC SCL(4) SDA(6) RES(9) DC(8) CS(7) BUK
YPVSロゴも入れ換えられます。その手法は後ほど。

#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
#include "driver/adc.h"
#include "esp_adc_cal.h"

// TFTピン定義
#define TFT_CS     7
#define TFT_DC     8
#define TFT_RST    9

// ADCチャンネル設定
#define POTENTIO_CHANNEL ADC1_CHANNEL_0
#define EXTVOLT_CHANNEL  ADC1_CHANNEL_3

// TFT初期化
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

// グローバル変数
float potentio_voltage = 0;
float potentio_var = 0;
byte openVar_LV = 0;
float extVolt = 0;
esp_adc_cal_characteristics_t adcChar;
const float POTENTIO_MIN_VOLT = 1.2;  // 開度0の電圧
const float POTENTIO_MAX_VOLT = 2.4;  // 開度100の電圧
const bool INVERT_POTENTIO_DIRECTION = false;  // trueで2.4→1.2V方向(LANZAなど)

// RGB変換
uint16_t color565(uint8_t r, uint8_t g, uint8_t b) {
  return ((b & 0xF8) << 8) | ((g & 0xFC) << 3) | (r >> 3);
}

void setup() {
  Serial.begin(115200);
  tft.initR(INITR_MINI160x80);
  tft.setRotation(1);
  tft.fillScreen(ST7735_WHITE);

  // ADC設定
  adc1_config_width(ADC_WIDTH_BIT_12);
  adc1_config_channel_atten(POTENTIO_CHANNEL, ADC_ATTEN_DB_11);
  adc1_config_channel_atten(EXTVOLT_CHANNEL, ADC_ATTEN_DB_11);
  esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12, 1100, &adcChar);

  // インジケーターラベル描画
  tft.setTextColor(ST7735_BLACK);
  tft.setTextSize(1);
  const char* labels[] = {"0", "20", "40", "60", "80", "100"};
  for (int i = 0; i < 6; i++) {
    tft.setCursor(3 + i * 28, 2);
    tft.print(labels[i]);
  }
 
 // 'ypvs_LOG_4', 80x26px YPVSロゴ表示 thank you image2cpp
const uint16_t pull_bitmap_ypvs_LOG_4 [] PROGMEM = {
  0xffff, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf79e, 0x0000, 0x0020, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x9cd3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a69, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0x0020, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x6b6d, 0x5acb, 0x632c, 0x630c, 0x5aeb, 0x630c, 0x630c, 0x630c, 0x630c, 0x630c, 0x630c, 0x630c, 0x630c, 0x630c, 0x5aeb, 0x630c, 
  0x630c, 0x5aeb, 0x630c, 0x632c, 0x5acb, 0x630c, 0x630c, 0x630c, 0x630c, 0x630c, 0x630c, 0x630c, 0x632c, 0x630c, 0x630c, 0x630c, 
  0x632c, 0x5aeb, 0x5aeb, 0x632c, 0x5aeb, 0x5aeb, 0x6b4d, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 
  0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x52aa, 0x0000, 0x0000, 0x0020, 0x6b4d, 
  0x632c, 0x5aeb, 0x630c, 0x632c, 0x6b4d, 0x6b6d, 0x632c, 0x6b4d, 0x630c, 0x630c, 0x630c, 0x630c, 0x630c, 0x5aeb, 0x632c, 0x630c, 
  0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xbdd7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0xf79e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xa534, 0x0000, 0x0000, 0x0000, 0xc638, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xe73c, 0xdedb, 0xe71c, 0xf79e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0x9cf3, 0xa514, 0xa514, 0xa534, 0xa514, 0xa534, 0xa514, 0xa534, 0xa514, 0xc638, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xa534, 
  0xa514, 0xa534, 0x9cf3, 0xa534, 0xffff, 0x9cd3, 0xa514, 0xa514, 0xa534, 0xa534, 0xa534, 0xa534, 0x9cf3, 0xa514, 0xa534, 0xa534, 
  0xa514, 0xa534, 0xa534, 0x9cf3, 0xa534, 0xe73c, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x94b2, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xf7be, 0x0000, 0x0000, 0x0000, 0x738e, 0xffff, 0xffff, 
  0x9492, 0x31a6, 0x0020, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0861, 0x8410, 0xf7be, 0xffff, 0xffff, 0xffdf, 0xffff, 
  0x4228, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0x630c, 0x0000, 
  0x0000, 0x0000, 0x0000, 0xef5d, 0xce79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x632c, 0xffff, 0x18c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x4208, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0x10a2, 0x0020, 0x0000, 0x2124, 0xffff, 0x7bef, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0020, 0x0020, 0x0000, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xffdf, 
  0xbdd7, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xdefb, 0xffff, 0xffff, 0x8410, 0x0020, 0x0000, 
  0x0000, 0x0000, 0xd6ba, 0xffdf, 0x738e, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0x52aa, 0x10a2, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef7d, 0x738e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0861, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0x528a, 0x0000, 0x0000, 0x0000, 0xffff, 0x6b4d, 0x0020, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x630c, 0xb5b6, 0x8c51, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x2124, 0xffff, 0xffff, 
  0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x738e, 0xffff, 0x8c71, 0x0000, 0x0000, 0x0000, 
  0x0000, 0xbdd7, 0xffff, 0xffff, 0x3186, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0x1082, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0xad55, 0xd6ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0xe71c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xad75, 0x0000, 0x0000, 0x0000, 0xc618, 0xdefb, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x8c51, 0xffff, 0xffff, 0xffff, 0xffff, 0x18e3, 0x0000, 0x0000, 0x0000, 0x0000, 0x39e7, 0xffff, 
  0xffff, 0x4208, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2104, 0xc638, 0x0000, 0x0000, 0x0020, 0x0000, 
  0x9492, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2945, 0xffff, 0xffff, 0xf7be, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xbdf7, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x8430, 0xffff, 0xffff, 0xffff, 0xffff, 0xef5d, 0x0000, 0x0000, 0x0000, 0x632c, 0xffff, 0x6b6d, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0xdefb, 0xffff, 0xffff, 0xffff, 0xffff, 0xe71c, 0x8430, 0x9492, 0x9cd3, 0x9cd3, 0x9492, 0xffdf, 
  0xffff, 0xb5b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x52aa, 
  0xffff, 0xffff, 0xffff, 0xdedb, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b4d, 0xffff, 0xffff, 0xce59, 0x0000, 
  0x0000, 0x0020, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0xef5d, 0xffff, 0x2104, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x4a49, 0xffff, 0xffdf, 0xffff, 0xffdf, 0x1082, 0x0000, 0x0000, 0x18c3, 0xffff, 0xffff, 0x630c, 0x0020, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x5aeb, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x3186, 0xffff, 
  0xffff, 0xffff, 0xffff, 0x9cd3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbdd7, 0xffff, 0xffff, 0x73ae, 0x0000, 
  0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0xffff, 0xffdf, 0x8410, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 
  0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0x52aa, 0x0000, 0x0000, 0x0000, 0xf7be, 0xffff, 0xffff, 0xb5b6, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x2945, 0xf79e, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 
  0xffff, 0xffff, 0x4a69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0841, 0xffff, 0xffff, 
  0xffff, 0xffdf, 0xffff, 0x4228, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf79e, 0xffff, 0xffff, 0x31a6, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x3186, 0xffff, 0xffff, 0xc618, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0xd6ba, 0xffff, 0xad75, 0x0000, 0x0000, 0x0000, 0xc638, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x52aa, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xc638, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0841, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0x18c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x18c3, 0xffff, 0xffdf, 0xffff, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8430, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0020, 0x8c71, 0xffff, 0x0000, 0x0000, 0x0000, 0x630c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xef5d, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0xb596, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef5d, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xef5d, 0x0000, 0x0000, 0x0000, 0x0841, 0x0000, 0x0000, 0x0000, 0x4228, 0xffff, 0xffff, 0xe73c, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbdf7, 0xffdf, 0xffff, 0xffff, 0x31a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x3186, 0x3186, 0x0000, 0x0000, 0x2104, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xc638, 0x0000, 
  0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0020, 0x9cf3, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xe71c, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0xb5b6, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xb5b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa514, 0xffff, 0xffff, 0x9cd3, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0x7bef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffdf, 
  0x18e3, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef5d, 0xffdf, 0xffff, 0xffff, 0xffff, 
  0xffdf, 0xffff, 0xb5b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0861, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0x6b4d, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0xe73c, 0xffff, 0xffdf, 0x4a69, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x8c51, 0xffff, 0xffff, 0xffff, 0xffff, 0xd6ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbdd7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0x94b2, 0x0000, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x630c, 0xffff, 0xffff, 0xffdf, 0xffff, 
  0xffff, 0xffff, 0x632c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3186, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x2965, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x5aeb, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 
  0xffff, 0xffff, 0xf79e, 0x10a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18c3, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0x18c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8c51, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x39e7, 0x528a, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0020, 0x0000, 0x0000, 0x2965, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0x31a6, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x10a2, 0xffff, 0xffff, 0xffff, 0xe71c, 0xef5d, 0xf79e, 0xef5d, 0xf79e, 0xf79e, 0xffdf, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0x39e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x10a2, 0xffdf, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc638, 0xffdf, 0xffff, 0xffdf, 0xffff, 0xffff, 
  0xffff, 0xd69a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0020, 0x0000, 
  0x0000, 0x0000, 0x9cf3, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x9492, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0xef7d, 0xffff, 0xffff, 0xffff, 0x4a69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbdd7, 0xffff, 0xffff, 
  0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0x0841, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x528a, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xc638, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0x8c51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8c51, 0xa514, 0x9cd3, 0x8430, 0x73ae, 0x632c, 0x8410, 
  0xbdd7, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe73c, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0xbdd7, 0xffff, 0xffdf, 0xffdf, 0xffff, 0xffff, 0x2945, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd69a, 0xffff, 
  0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0x8410, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0xd6ba, 0xffdf, 0xffff, 0xffff, 0xffff, 
  0xffff, 0x8430, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18c3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0x39c7, 0x0000, 0x0000, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x630c, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0x39c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x7bcf, 
  0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0x10a2, 0x0000, 0x0020, 0x0020, 0x0000, 0x52aa, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0x2965, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x632c, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffdf, 0xffff, 
  0xffff, 0x0861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x18e3, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0x4a69, 0x0000, 0x0000, 0x0000, 
  0x1082, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x7bef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  0x0000, 0x2124, 0x528a, 0x39e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x528a, 0xffff, 0xffdf, 0xffff, 0xffff, 0xf7be, 0xffff, 
  0xffff, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb596, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 
  0xdefb, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5acb, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x9cd3, 0x0000, 0x0000, 0x0000, 
  0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xf79e, 0x5acb, 0x0000, 0x0000, 0x0020, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1082, 0xbdd7, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xf7be, 0x8c51, 0x94b2, 0x9cd3, 0x94b2, 0x94b2, 0x9492, 0x94b2, 0x8c71, 0xf79e, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xdefb, 0x8c51, 0x94b2, 0x9cd3, 0x94b2, 0x94b2, 0x94b2, 0x8c71, 0xd6ba, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xe73c, 0x0000, 0x0000, 0xa534, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0xffff, 0xffff, 0xffff, 0xb5b6, 0x6b4d, 
  0x2965, 0x0000, 0x0020, 0x0000, 0x18c3, 0x630c, 0xc638, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffdf, 0xffff, 0x0020, 0x52aa, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x6b6d, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 
  0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff
};

  tft.drawRGBBitmap(78,47, pull_bitmap_ypvs_LOG_4, 80, 26);
}

void loop() {
 
 // PV電圧平均取得
  potentio_voltage = 0;
  for (int i = 0; i < 5; i++) {
    potentio_voltage += adc1_get_raw(POTENTIO_CHANNEL) * (3.9 / 4095.0); // 11dBでの補正 3.9Vスケーリング
  }
  potentio_voltage /= 5;

  // PV開度計算(双方向対応)
  float range = POTENTIO_MAX_VOLT - POTENTIO_MIN_VOLT;
  float adjusted_voltage = constrain(potentio_voltage, min(POTENTIO_MIN_VOLT, POTENTIO_MAX_VOLT), max(POTENTIO_MIN_VOLT, POTENTIO_MAX_VOLT));
  
  if (INVERT_POTENTIO_DIRECTION) {
    potentio_var = (POTENTIO_MAX_VOLT - adjusted_voltage) / range * 100.0;
  } else {
    potentio_var = (adjusted_voltage - POTENTIO_MIN_VOLT) / range * 100.0;
  }

  potentio_var = constrain(potentio_var, 0.0, 100.0);
  openVar_LV = potentio_var / 10;

  // 外部電圧計測
  uint32_t voltage = 0;
  for (int i = 0; i < 10; i++) {
    uint32_t v;
    esp_adc_cal_get_voltage((adc_channel_t)EXTVOLT_CHANNEL, &adcChar, &v);
    voltage += v;
    delay(10);
  }
  voltage /= 10;
  extVolt = voltage * (1200.0 / 200.0); // 分圧換算 (1KΩ + 200Ω)

  // サブルーチン呼び出し表示更新
  Display_indicator();
  Display_Potentio_voltage();
  Display_ExtVolt();
  delay(100);
}

// YPVSインジケーター描画
void Display_indicator() {
  char square[] = { (char)218, ' ', '\0' }; // 全角■文字
  const int blockCount = 10;
  const int startX = 2, spacing = 16;
  const uint16_t colors[] = {
    color565(120, 8, 40), color565(120, 8, 40), color565(122, 8, 247), color565(198, 8, 247),
    color565(8, 8, 247), color565(8, 30, 247), color565(8, 66, 247), color565(8, 123, 247),
    color565(0, 156, 255), color565(0, 222, 255)
  };
  const uint16_t offColor = color565(30, 30, 30);

  tft.setTextSize(2);
  for (int i = 0; i < blockCount; i++) {
    uint16_t color = (openVar_LV > i) ? colors[i] : offColor;
    tft.setTextColor(color);
    tft.setCursor(startX + i * spacing, 12);
    tft.print(square);
  }
}

// PV電圧表示
void Display_Potentio_voltage() {
  tft.fillRect(10, 60, 60, 20, ST7735_WHITE);
  tft.setTextColor(color565(250, 8, 40));
  tft.setTextSize(2);
  tft.setCursor(10, 60);
  tft.printf("%.1fV", potentio_voltage);
}

// バッテリ電圧表示
void Display_ExtVolt() {
  tft.fillRect(10, 38, 60, 20, ST7735_WHITE);
  tft.setTextColor(color565(0, 255, 156));
  tft.setTextSize(2);
  tft.setCursor(10, 38);
  tft.printf("%.1fV", extVolt / 1000.0);
}

//copyright© 2025 Mooncat

中身が分かる方は改変して個人利用する分は結構ですがこのソースを使った商業利用だけはお止めください。親告の上、対抗手段を講じます。

コメント