0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

「理系フリマ」でGet(ゲット)した有機EL(SSD1306)で「理系フリマ」と表示して遊ぶ。(STM32C011)(水平走査)

Last updated at Posted at 2024-05-04

目的
再度、全画面表示(水平走査線)の変換して表示

「理系フリマ」でゲットした物(20240504)

o_coq080.jpg

1.インストール(つかわないけど)

2.インストール(つかわないけど)

3.制作

o_coq081.jpg

4.変換

o_coq082.jpg

5.コンパイル実行、結果

o_coq083.jpg

プログラム




//有機ELのSSD1306で全画面表示
//秋月のOLEDとアイテンドウの売り切れOLEDのアドレスは3c
//変換は、https://javl.github.io/image2cpp/
//SSD1306_all_128x64_H_C011_3


//ヘッダー
#include <Arduino.h>
#include <Wire.h>


//定義
// ビットマップデータ
// 'H_Edge1', 128x64px
static const unsigned char PROGMEM databytes_H[] = {


  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, 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, 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, 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, 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, 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, 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, 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, 
  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, 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, 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, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xcf, 0xff, 0xe0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xf0, 0x00, 0x07, 0xf8, 0x00, 0x07, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 
  0xe0, 0x30, 0x00, 0x07, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 
  0x00, 0x30, 0x03, 0xe7, 0x00, 0x07, 0xff, 0xff, 0xfe, 0x03, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 
  0x00, 0x31, 0xf3, 0xe7, 0xff, 0x87, 0xff, 0xc0, 0x00, 0x01, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 
  0x01, 0xf1, 0xf3, 0xe7, 0xff, 0x07, 0xff, 0xc0, 0x00, 0x01, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 
  0xe1, 0xf1, 0xf3, 0xe7, 0xfc, 0x1f, 0x8f, 0xc0, 0x00, 0x01, 0x1f, 0xf0, 0xff, 0x80, 0x00, 0x01, 
  0xe1, 0xf1, 0xf0, 0x07, 0xf8, 0xff, 0x0f, 0xc0, 0x3f, 0xe1, 0x1f, 0xf0, 0xc0, 0x00, 0x00, 0x00, 
  0xe1, 0xf0, 0x00, 0x07, 0xe0, 0xfc, 0x0f, 0xff, 0xff, 0xe1, 0x1f, 0xf0, 0xc0, 0x00, 0x00, 0x00, 
  0xe1, 0xf0, 0x00, 0xe7, 0xe1, 0xf8, 0x1f, 0xff, 0xff, 0xe1, 0x1f, 0xf0, 0xc0, 0x00, 0x3f, 0xc1, 
  0xe1, 0xf9, 0xf3, 0xe7, 0xf0, 0x00, 0x7f, 0xff, 0xff, 0xc1, 0x1f, 0xf0, 0xe1, 0xff, 0xff, 0xc3, 
  0xe0, 0x39, 0xf3, 0xe7, 0xf0, 0x01, 0xff, 0xff, 0xff, 0xc1, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0x87, 
  0x00, 0x39, 0xf3, 0xc7, 0xfe, 0x03, 0xc7, 0xff, 0xff, 0xc3, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0x07, 
  0x00, 0x39, 0xf3, 0x07, 0xfe, 0x0f, 0xc3, 0xff, 0xff, 0x83, 0x1f, 0xf0, 0xff, 0xff, 0xfe, 0x0f, 
  0x01, 0xf8, 0x00, 0x07, 0xf8, 0x3f, 0xc1, 0xff, 0xff, 0x07, 0x1f, 0xf0, 0xff, 0xff, 0xfc, 0x1f, 
  0xe1, 0xf8, 0x00, 0x07, 0xf0, 0x7f, 0xe0, 0xff, 0xff, 0x07, 0x1f, 0xf0, 0xff, 0xe7, 0xfc, 0x3f, 
  0xe1, 0xf8, 0x03, 0xc7, 0xc1, 0xfc, 0x00, 0x7f, 0xff, 0x0f, 0x1f, 0xf0, 0xff, 0xc3, 0xf0, 0xff, 
  0xe1, 0xf9, 0xe3, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x0f, 0xff, 0xf0, 0xff, 0xe1, 0xe1, 0xff, 
  0xe1, 0xff, 0xe3, 0xff, 0x00, 0x00, 0x3c, 0x7f, 0xfc, 0x1f, 0xff, 0xf0, 0xff, 0xf0, 0xc1, 0xff, 
  0xe1, 0xff, 0xe3, 0xff, 0x0c, 0x00, 0x3e, 0x7f, 0xf8, 0x1f, 0xff, 0xf0, 0xff, 0xf0, 0x07, 0xff, 
  0xe0, 0x30, 0x00, 0x03, 0xff, 0xc1, 0xfe, 0x7f, 0xf8, 0x3f, 0xff, 0xf0, 0xff, 0xfc, 0x0f, 0xff, 
  0xe0, 0x30, 0x00, 0x03, 0xf1, 0xc1, 0xcf, 0xff, 0xf0, 0xff, 0xff, 0xf1, 0xff, 0xfe, 0x0f, 0xff, 
  0x80, 0xf0, 0x00, 0x03, 0xe1, 0xc1, 0xc7, 0xff, 0xe0, 0xff, 0xff, 0xe1, 0xff, 0xff, 0x0f, 0xff, 
  0x01, 0xff, 0xe3, 0xff, 0xe1, 0xc1, 0xe3, 0xff, 0xc1, 0xff, 0xff, 0xe3, 0xff, 0xff, 0x07, 0xff, 
  0x0f, 0xff, 0xe3, 0xff, 0xc3, 0xc1, 0xf0, 0xff, 0x03, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x83, 0xff, 
  0x3f, 0xff, 0xe3, 0xff, 0x87, 0xc1, 0xf8, 0x7c, 0x0f, 0xff, 0xff, 0x87, 0xff, 0xff, 0xc3, 0xff, 
  0xff, 0xff, 0xe3, 0xff, 0x0f, 0xc1, 0xf8, 0x38, 0x1f, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xe3, 0xff, 
  0xff, 0xc0, 0x00, 0x01, 0x1f, 0xc1, 0xfc, 0x38, 0x7f, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xc0, 0x00, 0x01, 0x3f, 0xc1, 0xfe, 0x3d, 0xff, 0xff, 0xfe, 0x1f, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xc0, 0x00, 0x01, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
  0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 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, 
  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, 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, 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, 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, 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, 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, 0xff, 0xff, 0xff, 0xff


};

#define MAX_PAGE                   (7)
#define MAX_COL                    (127)

#define COMMAND_MODE               0x80 // continuation bit is set!
#define DATA_MODE                  0x40

#define SET_COLUMN_ADDRESS         0x21 // takes two bytes, start address and end address of display data RAM
#define SET_PAGE_ADDRESS           0x22 // takes two bytes, start address and end address of display data RAM

#define SET_MEMORY_ADDRESSING_MODE 0x20 // takes one byte as given above
#define HORIZONTAL_ADDRESSING_MODE 0x00


//I2Cに配列を転送する
void write_s(uint8_t *str1, uint8_t len1) {

  Wire.beginTransmission(  0x3c  );

  for (int ii = 0; ii < len1; ii++) {

    //一文字出力
    Wire.write(*str1 ++);

  }//for

  Wire.endTransmission();

}//write_s


//セットページアドレス
void setPageAddress(uint8_t start, uint8_t end)
{
  uint8_t databytes[6] = {COMMAND_MODE, SET_PAGE_ADDRESS, COMMAND_MODE, start, COMMAND_MODE, end};
  write_s(databytes, 6);
}//setPageAddress


//セットカラムアクセス
void setColumnAddress(uint8_t start, uint8_t end)
{
  uint8_t databytes[6] = {COMMAND_MODE, SET_COLUMN_ADDRESS, COMMAND_MODE, start, COMMAND_MODE, end};
  write_s(databytes, 6);
}//setColumnAddress


//セットメモリーアドレシングモード
void setMemoryAddressingMode()
{
  uint8_t databytes[4] = {COMMAND_MODE, SET_MEMORY_ADDRESSING_MODE, COMMAND_MODE, HORIZONTAL_ADDRESSING_MODE};
  //_i2c->write(_writeOpcode, databytes, 4);
  write_s(databytes, 4);
}//setMemoryAddressingMode


//初期化
void setup() {

  delay(3000); //not Delete (絶対消すな)(消しちゃィゃーん)

  //I2Cのポートの変更
  Wire.setSDA(19); //PA10
  Wire.setSCL(18); //PA9

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

  //SSD1306の初期化スペル(魔法)
  //0x80,0x8d,0x80,0x14,0x80,0xAF
  write_s( (uint8_t*) "\200\215\200\024\200\257", 6);
  delay(100);

  //セットメモリーアドレシングモード
  setMemoryAddressingMode();

  uint8_t buff_a[((128 / 8) * 64)]; //バッファー
  memset(buff_a, 0, ((128 / 8) * 64) ); //バッファーのクリア
  int dot_1;//ドット

  //1ドットづつ変換する
  for (int x = 0; x < 128; x++) {
    for (int y = 0; y < 64; y++) {

      dot_1 = ( databytes_H[ (y * (128 / 8)) + (x / 8 ) ] >> (7 - (x & 7)) ) & 0x01;
      if (dot_1 != 0) {
        buff_a[x + (y / 8) * (128)] |= (1 << (y & 7));
      }

    }//for y
  }//for x


  //delay(100);
  //64 or 32
  //uint8_t databytes_a[3] = {COMMAND_MODE, 0xDA,0b00010010};
  //write_s(databytes_a, 3);
  //delay(100);


  //範囲の設定
  setPageAddress(0, MAX_PAGE);  // all pages
  setColumnAddress(0, MAX_COL); // all columns

  //データの配列の定義
  uint8_t databytes[2] = {DATA_MODE, 0x00};

  //128x64の表画
  for (int icount = 0; icount < ((128 / 8) * 64); icount++) {
    databytes[1] = 0;
    write_s(databytes, 2);
  }//for



  //128x64の表画
  for (int icount = 0; icount < ((128 / 8) * 64); icount++) {
    databytes[1] = buff_a[icount];
    write_s(databytes, 2);
  }//for

}//setup


//メインループ
void loop() {
}//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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?