LoginSignup
0
0

秋月の1.3 インチフルカラーグラフィック液晶ディスプレイで時計を作って遊ぶ(Arduino UNO)

Last updated at Posted at 2024-04-22

x 時間合わせは、別
x あまり、正確では、ない
x 秋月のDS1307ユニットを使用
x 秋月のAE-ATM0130B3を使用
x 過去ログを見よ!!

目的
ST7789V2のディスプレイで時計を作って遊ぶ。

結果

o_coq053.jpg

o_coq054.jpg

プログラム



//spi_st7789_DS1307_UNO_V3_1


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


//定義
#define TFT_CS        10
#define TFT_RST        9 // Or set to -1 and connect to Arduino RESET pin
#define TFT_DC         8
//13 SCK
//12 (not connect)
//11 MOSI
Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);


//初期化
void setup() {

  //I2Cの初期化
  Wire.begin();

  //DS1307用の電源供給5V
  pinMode(A3, OUTPUT);
  digitalWrite(A3, HIGH);

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

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

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

}//setup


char cn1[16] = "12:34"; //時刻

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

  // 前に表示した内容で消す。
  // テキスト色を設定
  tft.setTextColor(ST77XX_BLACK);
  // テキストの開始位置を設定
  tft.setCursor(0, 10);
  tft.print(cn1); //前に表示した内容


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

  //RTC DS1307のアドレス
#define ADDR    0x68    // 2進数 1101000

  // レジスタのアドレスを先頭にする
  Wire.beginTransmission(ADDR);
  Wire.write(0x00);
  Wire.endTransmission();
  delay(1);

  // I2Cスレーブに8byteのレジスタデータを要求する
  Wire.requestFrom(ADDR, 8);

  // 8byteのデータを取得する
  unsigned char data_read[16] = {0x88, 0x88, 0x88}; //データバッファー
  int ii = 0;
  while (Wire.available())  {   // 要求より短いデータが来る可能性あり
    data_read[ii++] = Wire.read();       // 1バイトを受信
  }//while

  //dbug
  //char data_read[16];//debug
  //data_read[2] = 0x01; data_read[1] = 0x23;

  //表示変換する
  cn1[0] = '0' + (data_read[2] >> 4);  //0 時 上位
  cn1[1] = '0' + (data_read[2] & 0xf); //1 時 下位
  cn1[2] = ':';
  cn1[3] = '0' + (data_read[1] >> 4);  //2 分 上位
  cn1[4] = '0' + (data_read[1] & 0xf); //3 分 下位
  cn1[5] = 0;

  tft.print(cn1); //表示

  for(int hh=0;hh<60;hh++) {delay(1000);  /*1秒待つ*/}

}//loop



0
0
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
0