2020 Off season development Test of OLED Display on the Nucleo Board STM32 F303K8 and SSD1306
Dependencies: mbed Adafruit_GFX
main.cpp@1:b7e749b632df, 2020-03-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |