#include "mbed.h"
#include "Hexi_OLED_SSD1351.h"
#include "string.h"
int main()
{
    char text[40];  /* Text Buffer */
    Timer time;     /* Instantiate Time */
    /* Instantiate the SSD1351 OLED Driver */
    SSD1351 oled(PTB22,PTB21,PTC13,PTB20,PTE6, PTD15); /* (MOSI,SCLK,POWER,CS,RST,DC) */
    /* Get OLED Class Default Text Properties */
    oled_text_properties_t textProperties = {0};
    oled.GetTextProperties(&textProperties);
    /* Turn on the backlight of the OLED Display */
    oled.DimScreenON();
    /* Fills the screen with solid black */
    oled.FillScreen(COLOR_BLACK);
    /* Display Text at (x=7,y=0) */
    strcpy((char *) text,"Nilakantha");
    oled.Label((uint8_t *)text,7,0);
    /* Change font color to GREEN */
    textProperties.fontColor   = COLOR_GREEN;
    oled.SetTextProperties(&textProperties);
    /* Display text at (x=5,y=25) */
    strcpy(text,"Pi=");
    oled.Label((uint8_t *)text,5,25);
    /* Display text at (x=5,y=55) */  
    strcpy(text,"Time use=");
    oled.Label((uint8_t *)text,5,55);
    /* Set text properties to white and right aligned for the dynamic text */
    textProperties.fontColor = COLOR_WHITE;
    textProperties.alignParam = OLED_TEXT_ALIGN_LEFT;
    oled.SetTextProperties(&textProperties);
    time.start(); /* start timer */
    double pi=3.0;
    long i=1;
    while (true) {
        /* Format the time reading */
        sprintf(text,"%f",pi);
        /* Display time reading in 90px by 15px textbox at(x=5, y=40) */
        oled.TextBox((uint8_t *)text,5,40,90,15); //Increase textbox for more digits
        sprintf(text,"%f",time.read());
        /* Display time reading in 90px by 15px textbox at(x=5, y=70) */
        oled.TextBox((uint8_t *)text,5,70,90,15); //Increase textbox for more digits
        Thread::wait(1000);
        //pi calculate
        if((i%2)==1) {
            pi = pi + 4.0/(2.0*i*(2.0*i+1.0)*(2.0*i+2.0));
        } else {
            pi = pi - 4.0/(2.0*i*(2.0*i+1.0)*(2.0*i+2.0));
        }
        i++;
    }
}
Comments