2020 Off season development Test of OLED Display on the Nucleo Board STM32 F303K8 and SSD1306

Dependencies:   mbed Adafruit_GFX

Committer:
st17099ng
Date:
Thu Mar 12 15:40:09 2020 +0000
Revision:
1:b7e749b632df
Parent:
0:38ba939cb41d
Initial version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
st17099ng 0:38ba939cb41d 1 #include "mbed.h"
st17099ng 0:38ba939cb41d 2 #include "Adafruit_SSD1306.h"
st17099ng 0:38ba939cb41d 3 #include <string>
st17099ng 0:38ba939cb41d 4
st17099ng 0:38ba939cb41d 5 // OLEDとの通信に使用するI2Cオブジェクトを生成
st17099ng 0:38ba939cb41d 6 I2C i2c(PB_7,PB_6);
st17099ng 0:38ba939cb41d 7
st17099ng 0:38ba939cb41d 8 // OLED制御クラスのインスタンス化
st17099ng 0:38ba939cb41d 9 uint8_t i2cAddress = SSD_I2C_ADDRESS;
st17099ng 0:38ba939cb41d 10 int rawHeight = 32;
st17099ng 0:38ba939cb41d 11 int rawWidth = 128;
st17099ng 0:38ba939cb41d 12 Adafruit_SSD1306_I2c oled(i2c, D10, i2cAddress);
st17099ng 0:38ba939cb41d 13 Serial pc(USBTX,USBRX);//pcに表示させるための設定
st17099ng 0:38ba939cb41d 14
st17099ng 0:38ba939cb41d 15 DigitalIn Slides[] = {
st17099ng 0:38ba939cb41d 16 DigitalIn( D1 ),
st17099ng 0:38ba939cb41d 17 DigitalIn( D0 ),
st17099ng 0:38ba939cb41d 18 DigitalIn( D3 ),
st17099ng 0:38ba939cb41d 19 DigitalIn( D6 )
st17099ng 0:38ba939cb41d 20 };
st17099ng 0:38ba939cb41d 21
st17099ng 0:38ba939cb41d 22 DigitalIn Tacts[] = {
st17099ng 0:38ba939cb41d 23 DigitalIn( D8 ),
st17099ng 0:38ba939cb41d 24 DigitalIn( D9 ),
st17099ng 0:38ba939cb41d 25 DigitalIn( D11 ),
st17099ng 0:38ba939cb41d 26 DigitalIn( D12 )
st17099ng 0:38ba939cb41d 27 };
st17099ng 0:38ba939cb41d 28
st17099ng 0:38ba939cb41d 29 DigitalOut leds[] = {
st17099ng 0:38ba939cb41d 30 DigitalOut( A3 ),
st17099ng 0:38ba939cb41d 31 DigitalOut( A0 ),
st17099ng 0:38ba939cb41d 32 DigitalOut( D13 ),
st17099ng 0:38ba939cb41d 33 DigitalOut( A2 )
st17099ng 0:38ba939cb41d 34 };
st17099ng 0:38ba939cb41d 35
st17099ng 0:38ba939cb41d 36 void print(std::string str);
st17099ng 0:38ba939cb41d 37
st17099ng 0:38ba939cb41d 38 char* line[]= {
st17099ng 0:38ba939cb41d 39 "Hello",
st17099ng 0:38ba939cb41d 40 "Good"
st17099ng 0:38ba939cb41d 41 };
st17099ng 0:38ba939cb41d 42
st17099ng 0:38ba939cb41d 43 int main(void)
st17099ng 0:38ba939cb41d 44 {
st17099ng 0:38ba939cb41d 45 char* a[]= {"HELLO"};
st17099ng 0:38ba939cb41d 46 char* b[]= {" WORLD"};
st17099ng 0:38ba939cb41d 47 char* c[]= {"\n"};
st17099ng 0:38ba939cb41d 48 char but=0x00;
st17099ng 0:38ba939cb41d 49 for(int i=0; i<4; i++) {
st17099ng 0:38ba939cb41d 50 Slides[i].mode(PullUp);
st17099ng 0:38ba939cb41d 51 Tacts[i].mode(PullUp);
st17099ng 0:38ba939cb41d 52 leds[i] = 1;
st17099ng 0:38ba939cb41d 53 }
st17099ng 0:38ba939cb41d 54 // float num1 = 1.1;
st17099ng 0:38ba939cb41d 55 // char str[20];
st17099ng 0:38ba939cb41d 56 // char* ptr[1];
st17099ng 0:38ba939cb41d 57 // sprintf(str, "%.9g", num1);
st17099ng 0:38ba939cb41d 58 // ptr[1] = (char*)str;
st17099ng 0:38ba939cb41d 59 while(1) {
st17099ng 0:38ba939cb41d 60 char data=0x01;
st17099ng 0:38ba939cb41d 61 for(int i=0; i<4; i++) {
st17099ng 0:38ba939cb41d 62 if ( Slides[i] == 0 )
st17099ng 0:38ba939cb41d 63 but |= data;
st17099ng 0:38ba939cb41d 64 data<<=1;
st17099ng 0:38ba939cb41d 65 }
st17099ng 0:38ba939cb41d 66 for(int i=0; i<4; i++) {
st17099ng 0:38ba939cb41d 67 if ( Tacts[i] == 0 )
st17099ng 0:38ba939cb41d 68 but |= data;
st17099ng 0:38ba939cb41d 69 data<<=1;
st17099ng 0:38ba939cb41d 70 }
st17099ng 0:38ba939cb41d 71 print(* a);
st17099ng 0:38ba939cb41d 72 print(* b);
st17099ng 0:38ba939cb41d 73 print(* c);
st17099ng 0:38ba939cb41d 74 pc.printf("but:0x%x\n",but);
st17099ng 0:38ba939cb41d 75 oled.clearDisplay();
st17099ng 0:38ba939cb41d 76 oled.setTextCursor(0,0);
st17099ng 0:38ba939cb41d 77 but=0x00;
st17099ng 0:38ba939cb41d 78 wait_ms(1);
st17099ng 0:38ba939cb41d 79 }
st17099ng 0:38ba939cb41d 80 }
st17099ng 0:38ba939cb41d 81
st17099ng 0:38ba939cb41d 82 void print(std::string str)
st17099ng 0:38ba939cb41d 83 {
st17099ng 0:38ba939cb41d 84 for(size_t i=0; i<str.size() ; i++) {
st17099ng 0:38ba939cb41d 85 oled._putc(str[i]);
st17099ng 0:38ba939cb41d 86 }
st17099ng 0:38ba939cb41d 87 // 表示を更新
st17099ng 0:38ba939cb41d 88 oled.display();
st17099ng 0:38ba939cb41d 89 }