Hiro Ona / Mbed 2 deprecated Nucleo_073_OLED

Dependencies:   mbed

main.cpp

Committer:
wakabanban
Date:
2019-11-26
Revision:
0:cb63da12fdcc

File content as of revision 0:cb63da12fdcc:

#include "Adafruit_SSD1306.h"

//---
#include "mbed.h"

AnalogIn analog_value(A0);
DigitalOut led(LED1);
//---

static char font[][10] = {
#if 0
{0x10,0x10,0x54,0x52,0x92,0x10,0x30,0x00},    // 小
{0x3c,0x24,0x58,0x10,0x3e,0xd2,0x1e,0x00},    // 名
{0x10,0xfe,0x10,0x38,0x54,0x92,0x10,0x00},    // 木
{0x98,0x1c,0xa8,0x3e,0x80,0x9c,0x9c,0x00},    // 浩
{0x10,0x7c,0xfe,0x28,0xfe,0x7c,0x10,0x00},    // 幸
{0x7e,0x40,0x7c,0x42,0x02,0x42,0x3c,0x00},    // 5
{0x3c,0x42,0x02,0x1c,0x02,0x42,0x3c,0x00},    // 3
{0x08,0xfe,0x08,0x0c,0x18,0xe8,0x18,0x00},    // 才
#endif
#if 1
{0x08,0xfe,0x08,0x0c,0x18,0xe8,0x18,0x00},    // 才
{0x3c,0x42,0x02,0x1c,0x02,0x42,0x3c,0x00},    // 3
{0x7e,0x40,0x7c,0x42,0x02,0x42,0x3c,0x00},    // 5
{0x10,0x7c,0xfe,0x28,0xfe,0x7c,0x10,0x00},    // 幸
{0x98,0x1c,0xa8,0x3e,0x80,0x9c,0x9c,0x00},    // 浩
{0x10,0xfe,0x10,0x38,0x54,0x92,0x10,0x00},    // 木
{0x3c,0x24,0x58,0x10,0x3e,0xd2,0x1e,0x00},    // 名
{0x10,0x10,0x54,0x52,0x92,0x10,0x30,0x00},    // 小
#endif
};

 
// OLEDとの通信に使用するI2Cオブジェクトを生成
I2C i2c(PC_1, PC_0);
 
// OLED制御クラスのインスタンス化
uint8_t i2cAddress = SSD_I2C_ADDRESS;
uint8_t rawHeight = 64;
uint8_t rawWidth = 128;

Adafruit_SSD1306_I2c oled(i2c,PB_0, i2cAddress, rawHeight, rawWidth);

unsigned int m_z=12434,m_w=33254;
unsigned int rnd() {
    m_z = 36969 * (m_z & 65535) + (m_z >>16);
    m_w = 18000 * (m_w & 65535) + (m_w >>16);
    return ((m_z <<16) + m_w);
}

int main() {
    uint16_t x=0;
    uint16_t x1, y1, w, h;
    i2c.frequency(1000000);
    oled.clearDisplay();

//---
    float meas_r;
    float meas_v;
    char str[100];
    // printf("\nAnalogIn example\n");

    while(1) {

        meas_r = analog_value.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
        meas_v = meas_r * 3300; // Converts value in the 0V-3.3V range

        sprintf( str, "%f = %.0f mV", meas_r, meas_v);
        oled.setTextCursor(0,0);
        oled.printf( str );
        oled.display();
        // Display values
        // printf("measure = %f = %.0f mV\n", meas_r, meas_v);

        // LED is ON is the value is below 1V
        if (meas_v < 1000) {
            led = 1; // LED ON
        } else {
            led = 0; // LED OFF
        }

        wait(0.5); // 1 second
    }
//---


//    oled.printf("Onagi Hiropyuki.\r\n");
//    oled.printf("%ux%u OLED Display\r\n\r\n", oled.width(), oled.height());
if(1){
    while(1) {
    for (int  i=0 ; i<120 ; i+=1 ) {
        //oled.clearDisplay();
        oled.drawBitmap(i, 0, (uint8_t *)font, 10, 64, 1);
        oled.display();
        oled.drawBitmap(i, 0, (uint8_t *)font, 10, 64, 0);

    }
    for (int  i=120 ; i>0 ; i-=1 ) {
        //oled.clearDisplay();
        oled.drawBitmap(i, 0, (uint8_t *)font, 10, 64, 1);
        oled.display();
        oled.drawBitmap(i, 0, (uint8_t *)font, 10, 64, 0);
    }
    }
    return 0;

}

    oled.drawRect( 0,0,127,63,1 );
           
    while(1)
    {
        x++;
        x1 = rnd() % 128;
        y1 = rnd() % 64;
        w = rnd() % (128 - x1);
        h = rnd() % (64 - y1);
        if ( x % 2 ) {
            //oled.drawRect( x1, y1, w, h, 1 );
            oled.drawBitmap(x1, y1, (uint8_t *)font, 82, 8, 1);
        } else {
            oled.drawCircle( x1, y1, w, 1 );
        }

        oled.display();
        if ( x > 100 ) {
            x = 0;
        }
        wait(0.5);
        oled.clearDisplay();
    }
}

/*
#include "mbed.h"

DigitalOut myled(LED1);

int main() {
    while(1) {
        myled = 1; // LED is ON
        wait(0.2); // 200 ms
        myled = 0; // LED is OFF
        wait(1.0); // 1 sec
    }
}
*/