Hiro Ona / Mbed 2 deprecated Nucleo_073_OLED

Dependencies:   mbed

Revision:
0:cb63da12fdcc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 26 04:49:45 2019 +0000
@@ -0,0 +1,147 @@
+#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
+    }
+}
+*/
\ No newline at end of file