「デカ文字時計」Arduino UNOとSSD1306(128x32)とDS1307


x めんどいので過去ログを見よ
x ソースが長い
x 時間合わせは、別


![o_cop397.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/93ac687f-6714-d194-79c8-d9a9a2a3e74b.jpeg)



![o_cop396.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/947604be-13e0-d4d8-8a0d-96fc8b4a7cf0.jpeg)



![o_cop398.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/a52ead01-d3cd-3ecb-d271-f55204714116.jpeg)



![o_cop399.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/12810e63-4655-ae0e-57be-6ac065cfb21a.jpeg)



![o_cop400.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/343cc3ca-8010-fcd7-00fc-c18f27e48778.jpeg)




```c++




//OLED_SSD1306_BITMAP24x320_DS1307_UNO


//ヘッダーファイル
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

//定義
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// ビットマップデータ
// 'soiya1', 128x320px
static const unsigned char PROGMEM databytes[] = {




  0xff, 0x00, 0xff, 0xfe, 0x18, 0x7f, 0xfc, 0xff, 0x3f, 0xf9, 0xff, 0x9f, 0xf3, 0xff, 0xcf, 0xf3, 
  0xff, 0xcf, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 
  0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 
  0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 
  0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 
  0xe7, 0xf3, 0xff, 0xe7, 0xf3, 0xff, 0xcf, 0xf8, 0xff, 0x8f, 0xfc, 0x3e, 0x1f, 0xfe, 0x00, 0x3f, 
  0xff, 0x03, 0xff, 0xfe, 0x03, 0xff, 0xfc, 0xe7, 0xff, 0xf9, 0xe7, 0xff, 0xfb, 0xe7, 0xff, 0xff, 
  0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 
  0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 
  0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 
  0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 
  0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xfe, 0x00, 0x7f, 0xfc, 0x00, 0x3f, 
  0xff, 0x00, 0xff, 0xfe, 0x18, 0x7f, 0xfc, 0xff, 0x3f, 0xf9, 0xff, 0x9f, 0xf3, 0xff, 0xcf, 0xf3, 
  0xff, 0xcf, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xf7, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 
  0xe7, 0xff, 0xff, 0xef, 0xff, 0xff, 0xcf, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0xff, 0x80, 0x7f, 
  0xff, 0x00, 0xff, 0xfe, 0x3f, 0xff, 0xfc, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xf3, 
  0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 
  0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xf1, 0xfe, 0x07, 0xf8, 0x00, 0x07, 
  0xff, 0x00, 0xff, 0xfe, 0x18, 0x7f, 0xfc, 0xff, 0x3f, 0xf9, 0xff, 0x9f, 0xf3, 0xff, 0xcf, 0xf3, 
  0xff, 0xcf, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 
  0xe7, 0xff, 0xff, 0xef, 0xff, 0xff, 0xcf, 0xff, 0xff, 0x9f, 0xff, 0xff, 0x3f, 0xff, 0x00, 0x7f, 
  0xff, 0x00, 0x7f, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xe7, 0xff, 
  0xff, 0xe7, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xf3, 0xe7, 0xff, 0xf3, 0xe7, 0xff, 
  0xf3, 0xf3, 0xff, 0xf7, 0xf3, 0xff, 0xe7, 0xf8, 0xff, 0xcf, 0xfc, 0x3e, 0x1f, 0xfe, 0x00, 0x3f, 
  0xff, 0xfe, 0x7f, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0x7f, 0xff, 0xf8, 0xff, 0xff, 0xf9, 0xff, 0xff, 
  0xe1, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xcf, 0xff, 0xff, 0x0f, 0xff, 0xfe, 0x19, 0xff, 0xfc, 0x39, 
  0xff, 0xf8, 0x79, 0xff, 0xf1, 0xf9, 0xff, 0xf3, 0xf9, 0xff, 0xe3, 0xf9, 0xff, 0xe7, 0xf9, 0xff, 
  0xe7, 0xf1, 0xf7, 0xe0, 0x00, 0x07, 0xe0, 0x00, 0x07, 0xff, 0xf9, 0xff, 0xff, 0xf9, 0xff, 0xff, 
  0xf9, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf9, 
  0xff, 0xff, 0xf9, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf9, 0xff, 
  0xf0, 0x00, 0x07, 0xf0, 0x00, 0x07, 0xe7, 0xff, 0xff, 0xef, 0xff, 0xff, 0xef, 0xff, 0xff, 0xe7, 
  0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 
  0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xfe, 0x00, 0x7f, 
  0xff, 0x20, 0x7f, 0xff, 0xfe, 0x3f, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xcf, 0xff, 0xff, 0xe7, 0xff, 
  0xff, 0xe7, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xf3, 0xff, 0xff, 
  0xf3, 0xff, 0xff, 0xf7, 0xf3, 0xff, 0xe7, 0xf8, 0xff, 0xcf, 0xfc, 0x3e, 0x1f, 0xfe, 0x00, 0x3f, 
  0xff, 0x00, 0xff, 0xfe, 0x18, 0x7f, 0xfc, 0xff, 0x3f, 0xf9, 0xff, 0x9f, 0xf3, 0xff, 0xcf, 0xf3, 
  0xff, 0xcf, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xef, 0xe7, 0xff, 0xff, 0xe7, 0xff, 
  0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xe0, 0x00, 0x7f, 
  0xe0, 0x00, 0x3f, 0xe1, 0xff, 0x3f, 0xe3, 0xff, 0x9f, 0xe7, 0xff, 0xcf, 0xe7, 0xff, 0xe7, 0xe7, 
  0xff, 0xe7, 0xe7, 0xff, 0xf3, 0xe7, 0xff, 0xf3, 0xe7, 0xff, 0xf3, 0xe7, 0xff, 0xf3, 0xe7, 0xff, 
  0xf3, 0xf3, 0xff, 0xf7, 0xf3, 0xff, 0xe7, 0xf8, 0xff, 0xcf, 0xfc, 0x3e, 0x1f, 0xfe, 0x00, 0x3f, 
  0xc0, 0x00, 0x0f, 0xc0, 0x00, 0x03, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xcf, 0xff, 
  0xff, 0x8f, 0xff, 0xff, 0x0f, 0xff, 0xfe, 0x3f, 0xff, 0xfc, 0x3f, 0xff, 0xfc, 0xff, 0xff, 0xf9, 
  0xff, 0xff, 0xf3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0x8f, 0xff, 0xff, 0x0f, 0xff, 
  0xfe, 0x1f, 0xff, 0xfe, 0x3f, 0xff, 0xfc, 0x3f, 0xff, 0xf8, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf1, 
  0xff, 0xff, 0xe1, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 
  0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 
  0xff, 0x00, 0xff, 0xfe, 0x18, 0x7f, 0xfc, 0xff, 0x3f, 0xf9, 0xff, 0x9f, 0xf3, 0xff, 0xcf, 0xf3, 
  0xff, 0xcf, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 
  0xe7, 0xf3, 0xff, 0xef, 0xf3, 0xff, 0xcf, 0xf9, 0xff, 0x9f, 0xfc, 0xff, 0x3f, 0xfe, 0x00, 0x7f, 
  0xff, 0x00, 0x7f, 0xfe, 0x3e, 0x3f, 0xfc, 0xff, 0x9f, 0xf9, 0xff, 0xcf, 0xf3, 0xff, 0xe7, 0xf3, 
  0xff, 0xe7, 0xe7, 0xff, 0xf3, 0xe7, 0xff, 0xf3, 0xe7, 0xff, 0xf3, 0xe7, 0xff, 0xf3, 0xe7, 0xff, 
  0xf3, 0xf3, 0xff, 0xf7, 0xf3, 0xff, 0xe7, 0xf8, 0xff, 0xcf, 0xfc, 0x3e, 0x1f, 0xfe, 0x00, 0x3f, 
  0xff, 0x00, 0xff, 0xfe, 0x18, 0x7f, 0xfc, 0xff, 0x3f, 0xf9, 0xff, 0x9f, 0xf3, 0xff, 0xcf, 0xf3, 
  0xff, 0xc7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xff, 
  0xe7, 0xf3, 0xff, 0xe7, 0xf3, 0xff, 0xe7, 0xf9, 0xff, 0xe7, 0xfc, 0xff, 0x07, 0xfe, 0x00, 0x07, 
  0xff, 0x00, 0x67, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 
  0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xc7, 0xff, 0xff, 
  0xc7, 0xff, 0xff, 0xc7, 0xff, 0xff, 0x8f, 0xff, 0xfc, 0x1f, 0xff, 0xf0, 0x3f, 0xff, 0xe1, 0xff,



// 'F24x32_(colonQQ)', 24x32px


  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xc3, 
  0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 
  0xc3, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff



};


//初期化
void setup() {

  // I2Cアドレスは使用するディスプレイに合わせて変更する
  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

}//setup


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

  int ii;    //ループカウンター
  int c1000 = 1; //千の桁
  int c100  = 2; //百の桁
  int c10   = 3; //十の桁
  int c1    = 4; //一の桁

  int x = 46; //数値



// デバイスアドレス(スレーブ)
#define ADDR    0x68    // 2進数 1101000

char data_read[16]; //データバッファー



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

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

  // 8byteのデータを取得する
  for (int ii = 0; ii < 8; ii++) {
    while (Wire.available() == 0 ) {}
    data_read[ii] = Wire.read();
  } //for
  delay(1);


  //表示変換する
  x=0;
  x = x + 1000*(data_read[2] >> 4);    //0
  x = x +  100*(data_read[2] & 0xf);   //1

  x = x +   10*(data_read[1] >> 4);    //2
  x = x +      (data_read[1] & 0xf);   //4







    if       ( x >= 9000 ) {x = x - 9000; c1000 = 9;
    } else if( x >= 8000 ) {x = x - 8000; c1000 = 8;
    } else if( x >= 7000 ) {x = x - 7000; c1000 = 7;
    } else if( x >= 6000 ) {x = x - 6000; c1000 = 6;
    } else if( x >= 5000 ) {x = x - 5000; c1000 = 5;
    } else if( x >= 4000 ) {x = x - 4000; c1000 = 4;
    } else if( x >= 3000 ) {x = x - 3000; c1000 = 3;
    } else if( x >= 2000 ) {x = x - 2000; c1000 = 2;
    } else if( x >= 1000 ) {x = x - 1000; c1000 = 1;
    } else                 {              c1000 = 0;
    }//if

  //031
  //10の割り算 0から1028までは、正しい。主に0から999
  //#define DIV10(n) ((n*205)>>11)

  //UNO
  //10の割り算 0から1028までは、正しい。主に0から999
#define DIV10(X) ((((X>>5)*205)+(((X&0x1f)*205)>>5))>>6)

  c1   =  (  x - (DIV10(x) * 10)  );  // 3  <- 120 - 123
  x = DIV10(x);                       // 12 <= 123 / 10
  c10  =  (  x - (DIV10(x) * 10)  );  // 2  <- 12 - 10
  c100 =   DIV10(x);                  // 1  <- 12 / 10

  // 画面表示をクリア
  display.fillScreen(BLACK);


  //ビットマップの表示
  display.drawBitmap( 0, 0, databytes + (c1000 * (24 / 8) * 32), 24, 32,  WHITE);

  //ビットマップの表示
  display.drawBitmap(24, 0, databytes + ( c100 * (24 / 8) * 32), 24, 32,  WHITE);


  //ビットマップの表示
  display.drawBitmap(48, 0, databytes + (  10 * (24 / 8) * 32), 24, 32,  WHITE);



  //ビットマップの表示
  display.drawBitmap(72, 0, databytes + (  c10 * (24 / 8) * 32), 24, 32,  WHITE);

  //ビットマップの表示
  display.drawBitmap(96, 0, databytes + (   c1 * (24 / 8) * 32), 24, 32,  WHITE);


  // 描画バッファの内容を画面に表示
  display.display();

  delay(1000); //1秒待つ

}//loop







```