STM32F303K8とOLED、AL12832AWWB-H-U02でHello Worldを表示2(Mbed)


x mbedが使える人が対象
x SSD1306_128x32

1.mbedでstm32f303k8をコンパイル出来るようにする。
2.新規プログラムを開く
3.下記のソースを描く。
4.oledのライブラリをインストールする。
Dai YokotaさんのSSD1306_128x64_I2Cライブラリを使用した。
https://os.mbed.com/users/jk1lot/code/SSD1306_128x64_I2C/file/46dcbaa430f4/SSD1306.h/

ライブラリのインストール方法は、
mbedの画面のプロジェクトディレクトリー名の所で右クリックして
新しいライブラリー...を選択してOLED検索画面からDai Yokotaを選択
する。
5.コンパイルする。
6.何らかの方法で書き込む。
7.Hello Worldが表示されたら終わり。

おまけ
3.3Vを5Vに変換する為にPFMステップアップDC/DCコンバーター HT7750A(5個入)とコンデンサー2個とコイルとダイオードを使用した。
マイコンは、STM32 Nucleo Board STM32F303K8



#include "mbed.h"
#include "SSD1306.h"
#include "font_8x8.h"

DigitalOut myled(LED1);

#define ADDR     (0x3c<<1) //  address
//#define ADDR     (0x3d<<1) //  address

I2C i2c(I2C_SDA, I2C_SCL);

// Host PC Communication channels
Serial pc(USBTX, USBRX); // tx, rx

// Instantiate OLED
SSD1306 oled(i2c, ADDR);

char ddff[8*8];

void char11(int row,int com,int cha)
{

    int char_index1;

    char_index1 = cha-0x20;

    int ii;

for (ii = 0;ii<(8*4);ii++) {ddff[ii]=0;}
for (ii =0;ii<8;ii++){
ddff[ii+ 0] = ddff[ii+ 0] | ((font_8x8[char_index1][ii] >> 0) & 1)<<1; //1bit  
ddff[ii+ 0] = ddff[ii+ 0] | ((font_8x8[char_index1][ii] >> 0) & 1)<<3; //1bit 
ddff[ii+ 0] = ddff[ii+ 0] | ((font_8x8[char_index1][ii] >> 1) & 1)<<5; //2bit  
ddff[ii+ 0] = ddff[ii+ 0] | ((font_8x8[char_index1][ii] >> 1) & 1)<<7; //2bit 
ddff[ii+ 8] = ddff[ii+ 8] | ((font_8x8[char_index1][ii] >> 2) & 1)<<1; //3bit  
ddff[ii+ 8] = ddff[ii+ 8] | ((font_8x8[char_index1][ii] >> 2) & 1)<<3; //3bit 
ddff[ii+ 8] = ddff[ii+ 8] | ((font_8x8[char_index1][ii] >> 3) & 1)<<5; //4bit  
ddff[ii+ 8] = ddff[ii+ 8] | ((font_8x8[char_index1][ii] >> 3) & 1)<<7; //4bit 
ddff[ii+16] = ddff[ii+16] | ((font_8x8[char_index1][ii] >> 4) & 1)<<1; //5bit  
ddff[ii+16] = ddff[ii+16] | ((font_8x8[char_index1][ii] >> 4) & 1)<<3; //5bit 
ddff[ii+16] = ddff[ii+16] | ((font_8x8[char_index1][ii] >> 5) & 1)<<5; //6bit  
ddff[ii+16] = ddff[ii+16] | ((font_8x8[char_index1][ii] >> 5) & 1)<<7; //6bit 
ddff[ii+24] = ddff[ii+24] | ((font_8x8[char_index1][ii] >> 6) & 1)<<1; //7bit  
ddff[ii+24] = ddff[ii+24] | ((font_8x8[char_index1][ii] >> 6) & 1)<<3; //7bit 
ddff[ii+24] = ddff[ii+24] | ((font_8x8[char_index1][ii] >> 7) & 1)<<5; //8bit  
ddff[ii+24] = ddff[ii+24] | ((font_8x8[char_index1][ii] >> 7) & 1)<<7; //8bit 
}//for

oled.writeBitmap((uint8_t*) ddff,
              row, (row + 4 - 1),
              com, (com + 8 - 1));

} //end chr11    

int main() {
    int ii;
    pc.baud(9600);

    char ss1[]="Hello World !";
    ii=0;
    while(ss1[ii]!=0){
        char11(0,ii*8,ss1[ii]);ii++;
    }
    pc.printf("Printed something\r");    
}