LoginSignup
0
1

秋月の1.3インチカラー液晶で温度計を作って遊ぶ(ST7789V2)(StampS3)(MCP9701)

Last updated at Posted at 2024-04-18

x 過去ログを見よ!!

目的
温度計を作って遊ぶ。

o_coq043.jpg



//spi_st7789_mcp9701_27o25_M5S3_1


//ヘッダーファイル
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>


//定義
#define TFT_CS    1
#define TFT_RST   3
#define TFT_DC    5
#define TFT_MOSI  7
#define TFT_SCLK  9

Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);

//100の割り算 0から30000までは、だいたい正しい
#define DIV100(in) ((in*(65536/100*64+24))>>22)
//25の割り算 0から30000までは、だいたい正しい
#define DIV25(in) ((in*(65536/25*16+8))>>20)
//MCP9701の温度を求める x100
#define TMP(so) ((((so)*270769)-134432821)>>16)
//10の割り算 0から1028までは、正しい。主に0から999
#define DIV10(n) ((n*205)>>11)


//初期化
void setup() {

  //240x240の液晶を使用する。
  tft.init(240, 240);           // Init ST7789 240x240

  //ピンの初期化
  pinMode(13, INPUT);

  // 画面表示をクリア
  tft.fillScreen(ST77XX_BLACK);

  // テキストサイズを設定
  tft.setTextSize(5);

}//setup


//一つ前の値
int f_bk = 0;
char i_bk[3] = "24";
char j_bk[3] = "25";

//メインループ
void loop() {

  // 一つ前の値で消す。
  // テキスト色を設定
  tft.setTextColor(ST77XX_BLACK);
  // テキストの開始位置を設定
  tft.setCursor(0, 10);
  if (f_bk == -1) {tft.print('-');}
  tft.print(i_bk); //整数部
  tft.print('.'); //ピリオドの表示
  tft.print(j_bk); //小数点以下


  // テキスト色を設定
  tft.setTextColor(ST77XX_WHITE);
  // テキストの開始位置を設定
  tft.setCursor(0, 10);

  //アナログ値の読み込み
  int s = analogRead(13); //7PIN センサーの読み取り値

  //センサーの値を温度に変換
  int t = TMP(s); //t = 2355;//debug
  int d1 =  (t < 0) ? DIV100(-t) : DIV100(t);
  int d01 = (t < 0) ? ((-t) - (d1 * 100)) : (t - (d1 * 100));
  d01 = (DIV25(d01)) * 25;

  //温度をデカ文字表示
  char bu[3] = {'2', '3', 0}; //文字列の一時領域
  f_bk = 0;
  if (t < 0 ) {tft.print('-');f_bk = -1;}
  bu[1] = '0' + d1 - ((DIV10(d1)) * 10);
  bu[0] = '0' + DIV10(d1);
  tft.print(bu); //整数部
  i_bk[0] = bu[0];
  i_bk[1] = bu[1];

  //ピリオドの表示
  tft.print('.');

  bu[1] = '0' + d01 - ((DIV10(d01)) * 10);
  bu[0] = '0' + DIV10(d01);
  tft.print(bu); //小数点以下
  j_bk[0] = bu[0];
  j_bk[1] = bu[1];

  delay(1000); //1秒待つ
  
}//loop



0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1