カラー「東京」(デカ文字温度計)STM32G071とSSD1331とMCP9701



x 過去ログを見よ!!

x 東京近郊だから　特に深い意味は、なし　JR風

x 秋月で売っている MCP9701を使用

目的
カラーOLEDのテスト
24x32の文字表示


![o_cop327.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/5a5ca22a-0d2d-5c05-5444-95ee36932888.jpeg)


![o_cop328.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/2e33adc1-f215-fed7-c40e-c08b2deca882.jpeg)


![o_cop329.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/9343fb71-26be-effb-9cfe-76e7623d4c22.jpeg)


![o_cop330.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840352/a81d1e13-dfba-b8f3-8759-e8c0cd0d09ee.jpeg)





```c++



//OLED_SSD1331_BITMAP24x320_46_071

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>


// You can use any (4 or) 5 pins
#define sclk 13
#define mosi 11
#define cs   10
#define rst  9
#define dc   8


// Color definitions
#define BLACK           0x0000
#define BLUE            0x001F
#define RED             0xF800
#define GREEN           0x07E0
#define CYAN            0x07FF
#define MAGENTA         0xF81F
#define YELLOW          0xFFE0
#define WHITE           0xFFFF


Adafruit_SSD1331 display = Adafruit_SSD1331(&SPI, cs, dc, rst);


// ビットマップデータ
// 'soiya96', 200x96px
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, 
  0xe0, 0x00, 0x07, 0xe0, 0x00, 0x01, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe7, 0xff, 
  0xff, 0xc7, 0xff, 0xff, 0x87, 0xff, 0xff, 0x1f, 0xff, 0xfe, 0x1f, 0xff, 0xfe, 0x7f, 0xff, 0xfc, 
  0xff, 0xff, 0xf9, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0x87, 0xff, 
  0xff, 0x0f, 0xff, 0xff, 0x1f, 0xff, 0xfe, 0x1f, 0xff, 0xfc, 0x7f, 0xff, 0xf8, 0x7f, 0xff, 0xf8, 
  0xff, 0xff, 0xf0, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xf1, 0xff, 
  0xff, 0xf1, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xf3, 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
};


static const unsigned char PROGMEM higasi[] = {

  0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0x80, 0x00, 
  0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x8f, 0xe3, 0xf1, 0x8f, 0xe3, 0xf1, 0x80, 0x00, 0x01, 
  0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x8f, 0xe3, 0xf1, 0x8f, 0xe3, 0xf1, 0x80, 0x00, 0x01, 0x80, 
  0x00, 0x01, 0x80, 0x00, 0x01, 0xff, 0x00, 0x7f, 0xfe, 0x00, 0x3f, 0xfc, 0x62, 0x1f, 0xf8, 0xe3, 
  0x8f, 0xf1, 0xe3, 0xc7, 0xc3, 0xe3, 0xe3, 0x87, 0xe3, 0xf1, 0x0f, 0xe3, 0xf8, 0x3f, 0xe3, 0xfc


};

static const unsigned char PROGMEM miyako[] = {

  0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 
  0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x8f, 0xff, 0xf1, 0x8f, 0xff, 0xf1, 0x8f, 0xff, 0xf1, 
  0x8f, 0xff, 0xf1, 0x8f, 0xff, 0xf1, 0x8f, 0xff, 0xf1, 0x8f, 0xff, 0xf1, 0x80, 0x00, 0x01, 0x80, 
  0x00, 0x01, 0x80, 0x00, 0x01, 0xff, 0xe3, 0xff, 0xfe, 0xe3, 0xbf, 0xfc, 0x63, 0x1f, 0xf8, 0xe3, 
  0x8f, 0xf1, 0xe3, 0xc7, 0xc3, 0xe3, 0xe3, 0x87, 0x83, 0xf1, 0x0f, 0x83, 0xf8, 0x3f, 0x83, 0xfc


};


                             // 1122334455667788990011223344556677889900112233445566778899001122
  unsigned char bbh[]         ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                                0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 



//初期化
void setup() {

  display.begin();

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

  for(int ii=0;ii<((24/8)*32);ii++){
    bbh[ii] = 255;
  }//for


  display.drawBitmap( 0, 0, bbh                          , 12, 32,  WHITE);

  display.drawBitmap(24-12, 0, higasi, 24, 32,  WHITE);

  display.drawBitmap(24+12, 0, bbh                          , 24, 32,  WHITE);

  display.drawBitmap(48+12, 0, miyako , 24, 32,  WHITE);

  display.drawBitmap(72+12, 0, bbh                          , 12, 32,  WHITE);






}//setup


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

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

  int gy; //表示位置

  int x = 46; //数値


    int       s;        //ADCの値
    float     v;        //電圧
    float     t;        //温度


  //センサーの値を読み込む
  analogReadResolution(12); // ADC 12bit mode
  s = analogRead(A0);   // PB7  PIN1 031 センサーの読み取り値

  //センサーのADC値を電圧に変換
  v = s * ( 3.3 / 4096.0 );
        
  //センサーの電圧を温度に変換
  t = (v - 0.4) * (1.0 / 0.0195);

  //t=21.75;//debug

  //温度の表示の為の変換
  x = t * 100.0;     



//10の割り算 0から9999までは、正しい。 stm32
#define DIV10(n) (((n*409)+((n*154)>>8))>>12)

  c1    =  (  x - (DIV10(x) * 10)  );  // '0'+(d%10)
  x = DIV10(x);
  c10   =  (  x - (DIV10(x) * 10)  );  // '0'+(d%10)
  x = DIV10(x);
  c100  =  (  x - (DIV10(x) * 10)  );  // '0'+(d%10)
  c1000 =   DIV10(x);                  // '0'+(d/10)


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


  //yの位置
  gy = 32;

  //ビットマップの表示
  for(ii=0;ii<((24/8)*32);ii++){
    bbh[ii] = ~databytes [ (c1000*(24/8)*32) + ii ];
  }//for
  display.drawBitmap( 0, gy, bbh                          , 24, 32,  BLUE);
  display.drawBitmap( 0, gy, databytes + (c1000*(24/8)*32), 24, 32,  WHITE);

  //ビットマップの表示
  for(ii=0;ii<((24/8)*32);ii++){
    bbh[ii] = ~databytes [ (c100*(24/8)*32) + ii ];
  }//for
  display.drawBitmap(24, gy, bbh                          , 24, 32,  BLUE);
  display.drawBitmap(24, gy, databytes + (c100 *(24/8)*32), 24, 32,  WHITE);

  //ビットマップの表示
  for(ii=0;ii<((24/8)*32);ii++){
    bbh[ii] = ~databytes [ (c10*(24/8)*32) + ii ];
  }//for
  display.drawBitmap(48, gy, bbh                          , 24, 32,  BLUE);
  display.drawBitmap(48, gy, databytes + (c10  *(24/8)*32), 24, 32,  WHITE);

  //ビットマップの表示
  for(ii=0;ii<((24/8)*32);ii++){
    bbh[ii] = ~databytes [ (c1*(24/8)*32) + ii ];
  }//for
  display.drawBitmap(72, gy, bbh                          , 24, 32,  BLUE);
  display.drawBitmap(72, gy, databytes + (c1   *(24/8)*32), 24, 32,  WHITE);


    // display.drawPixel(座標x, 座標y, 点の色);
    display.drawPixel(47, 62, BLUE);
    display.drawPixel(47, 63, BLUE);
    display.drawPixel(48, 62, BLUE);
    display.drawPixel(48, 63, BLUE);

  delay(1000); //1秒待つ

}//loop




```