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

Dependencies:   mbed Adafruit_GFX

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "Adafruit_SSD1306.h"
00003 #include <string>
00004 
00005 // OLEDとの通信に使用するI2Cオブジェクトを生成
00006 I2C i2c(PB_7,PB_6);
00007 
00008 // OLED制御クラスのインスタンス化
00009 uint8_t i2cAddress = SSD_I2C_ADDRESS;
00010 int rawHeight = 32;
00011 int rawWidth = 128;
00012 Adafruit_SSD1306_I2c oled(i2c, D10, i2cAddress);
00013 Serial pc(USBTX,USBRX);//pcに表示させるための設定
00014 
00015 DigitalIn  Slides[]  = {
00016     DigitalIn( D1 ),
00017     DigitalIn( D0 ),
00018     DigitalIn( D3 ),
00019     DigitalIn( D6 )
00020 };
00021 
00022 DigitalIn  Tacts[]  = {
00023     DigitalIn( D8 ),
00024     DigitalIn( D9 ),
00025     DigitalIn( D11 ),
00026     DigitalIn( D12 )
00027 };
00028 
00029 DigitalOut  leds[]  = {
00030     DigitalOut( A3 ),
00031     DigitalOut( A0 ),
00032     DigitalOut( D13 ),
00033     DigitalOut( A2 )
00034 };
00035 
00036 void print(std::string str);
00037 
00038 char* line[]= {
00039     "Hello",
00040     "Good"
00041 };
00042 
00043 int main(void)
00044 {
00045     char* a[]= {"HELLO"};
00046     char* b[]= {" WORLD"};
00047     char* c[]= {"\n"};
00048     char but=0x00;
00049     for(int i=0; i<4; i++) {
00050         Slides[i].mode(PullUp);
00051         Tacts[i].mode(PullUp);
00052         leds[i] = 1;
00053     }
00054 //    float num1 = 1.1;
00055 //    char str[20];
00056 //    char* ptr[1];
00057 //    sprintf(str, "%.9g", num1);
00058 //    ptr[1] = (char*)str;
00059     while(1) {
00060         char data=0x01;
00061         for(int i=0; i<4; i++) {
00062             if ( Slides[i]  == 0 )
00063                 but |= data;
00064             data<<=1;
00065         }
00066         for(int i=0; i<4; i++) {
00067             if ( Tacts[i]  == 0 )
00068                 but |= data;
00069             data<<=1;
00070         }
00071         print(* a);
00072         print(* b);
00073         print(* c);
00074         pc.printf("but:0x%x\n",but);
00075         oled.clearDisplay();
00076         oled.setTextCursor(0,0);
00077         but=0x00;
00078         wait_ms(1);
00079     }
00080 }
00081 
00082 void print(std::string str)
00083 {
00084     for(size_t i=0; i<str.size() ; i++) {
00085         oled._putc(str[i]);
00086     }
00087     // 表示を更新
00088     oled.display();
00089 }