Jieun Lee / Mbed 2 deprecated OLED_P1

Dependencies:   mbed Adafruit_GFX

Files at this revision

API Documentation at this revision

Comitter:
leejieun
Date:
Sun May 08 09:36:18 2022 +0000
Commit message:
OLED_MISSION1;

Changed in this revision

Adafruit_GFX.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r be32e7347942 Adafruit_GFX.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Adafruit_GFX.lib	Sun May 08 09:36:18 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/nkhorman/code/Adafruit_GFX/#7fb1d4d3525d
diff -r 000000000000 -r be32e7347942 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun May 08 09:36:18 2022 +0000
@@ -0,0 +1,201 @@
+#include "mbed.h"
+#include "Adafruit_SSD1306.h"   // Adafruit_GFX library
+
+#define NUM_CHAR    16
+
+Serial      pc(SERIAL_TX, SERIAL_RX);
+DigitalOut  greenLed(LED1);
+DigitalOut  redLed(PA_12);
+AnalogOut   myAnalogOut(PA_4);
+AnalogIn    lightSensor(PA_0);
+Timer       t1, t2;
+Ticker       t3, t4;
+InterruptIn   myButton(PC_13);
+InterruptIn   exButton(PC_11);
+
+BusOut my7Seg(PA_8, PA_9, PA_10, PC_9, PC_8, PC_7, PC_6, PA_11); // 8bit data
+            // LSB,                                      , MSB
+
+char    rxData[5];
+bool    flagRx = 0;
+int     dir = 1;        // 1: increase, -1: decrease
+bool    flagT3 = 0;
+bool    modeT3 = 0;     // 0: stop, 1: working
+
+void ReceiveInt() {
+    char inChar;
+    static char rxCount = 0;
+    static char rxBuf[4];
+    
+    while(1 == pc.readable()) {
+        inChar = pc.getc();
+        if ('<' == inChar){
+            rxCount = 1;            
+        }
+        else if (rxCount > 0 && rxCount < 5) {
+            rxBuf[rxCount-1] = inChar;
+            rxCount++;   
+        }
+        else if (5 == rxCount && '>' == inChar) {
+            rxCount = 0;
+            flagRx = 1;
+            memcpy(rxData, rxBuf, 4);
+//            pc.putc(rxData[0]);
+//            pc.putc(rxData[1]);
+//            pc.putc(rxData[2]);
+//            pc.putc(rxData[3]);
+ 
+//            pc.puts(rxData);  
+        }
+        else {
+            rxCount = 0;
+        }
+    }
+}
+
+void tickerFunc3() {
+    flagT3 = 1;
+}
+
+void Btn1Down() {
+//    pc.puts("1 pushed\n");   // for debugging
+    dir = -1*dir;
+}
+
+void Btn1Up() {
+//    pc.puts("1 released\n");    // for debugging
+    greenLed = !greenLed;
+}
+
+void Btn2Down() {
+//    pc.puts("2 pushed\n");   // for debugging
+    if (1 == modeT3) t3.detach();
+    else t3.attach(tickerFunc3, 0.1);
+    modeT3 = !modeT3;
+}
+
+void Btn2Up() {
+//    pc.puts("2 released\n");    // for debugging
+    redLed = !redLed;
+}
+
+
+// 
+int main()
+{   
+    pc.baud(115200);
+    pc.puts("\nStart!\n");    
+ 
+    myButton.disable_irq();     // to avoid unexpected interrupt
+    exButton.disable_irq();     // to avoid unexpected interrupt
+    
+    pc.attach(&ReceiveInt, Serial::RxIrq);      // RxIrq, TxIrq
+    myButton.fall(&Btn1Down);
+    myButton.rise(&Btn1Up);
+    exButton.fall(&Btn2Down);
+    exButton.rise(&Btn2Up);
+
+    I2C     I2C_Oled(PB_7, PA_15);       // SDA, SCL
+    I2C_Oled.frequency(400000);     // 400kHz clock
+    Adafruit_SSD1306_I2c    myOled(I2C_Oled, PD_2, 0x78, 64, 128);    //  reset pin doesn't effect
+
+    myOled.splash();      // logo output
+    myOled.display();
+    wait(0.5);
+    
+    myOled.clearDisplay();  // clear buffer     
+    myOled.printf("%u x %u OLED Display\r\n", myOled.width(), myOled.height());
+    myOled.display();       // show a image on the OLED
+    wait(1);
+
+    myButton.enable_irq();     // enable IRQ
+    exButton.enable_irq();     // enable IRQ
+    
+    t3.attach(&tickerFunc3, 0.1);       // ticker3 start
+    
+    time_t seconds = time(NULL);
+    
+    set_time(1651121217);  // Set RTC time to 2022-4월-28, PM 1:46:57
+    pc.printf("Time as a basic string = %s", ctime(&seconds));
+
+    char buffer[32];
+    strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
+    pc.printf("1) Time as a custom formatted string = %s", buffer);
+    strftime(buffer, 32, "%y-%m-%d, %H:%M:%S\n", localtime(&seconds));
+    pc.printf("2) Time as a custom formatted string = %s", buffer);    
+
+    char tmpCommand[3];
+    int rxVal;
+    char    val7Seg[NUM_CHAR] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
+
+    modeT3 = 1;
+    my7Seg = 0xFF;
+      
+    uint16_t n = 0;
+
+    while(1)
+    {
+        //if (1 == flagT3) {
+            //flagT3 = 0;
+            //n = n + dir;
+            //myOled.clearDisplay();      
+            //myOled.setTextCursor(1, 5);
+            //myOled.printf("%S",buffer);
+            //myOled.display();
+            //my7Seg = ~val7Seg[n%16] & 0x7F;
+        //}
+        
+        if (1 == flagRx){
+            flagRx = 0;
+            tmpCommand[0] = rxData[0];
+            tmpCommand[1] = rxData[1];
+            tmpCommand[2] = 0;
+            rxVal = atoi(rxData+2);
+            
+            if (0 == strcmp(tmpCommand, "LD")) {        // control a LED
+                pc.printf("val = %d\n", rxVal);
+                
+                greenLed = (1 == rxVal)? 1:0;
+//                greenLed = rxVal? 1:0;
+            }
+            if (0 == strcmp(tmpCommand, "RE")) {        // reset all variables
+                greenLed = 0;
+                redLed = 1;
+                n = 0;
+            }
+            //greenLed = !greenLed;
+            //time_t seconds = time(NULL);
+            
+        //pc.printf("\nTime as seconds since Janurary 1, 1970 = %u\n", (unsigned int)seconds);
+            
+        //pc.printf("Time as a basic string = %s" , ctime(&seconds));
+            
+
+            
+       }  
+
+    greenLed = !greenLed;
+    time_t seconds = time(NULL);
+            
+    pc.printf("\nTime as seconds since Janurary 1, 1970 = %u\n", (unsigned int)seconds);
+            
+    pc.printf("Time as a basic string = %s" , ctime(&seconds));
+        
+    char buffer[32];
+    strftime(buffer, 32, "%I:%M %p\n", localtime(&seconds));
+    pc.printf("1) Time as custom formatted string = %s", buffer);
+    strftime(buffer, 32, "%y-%m-%d, %H:%M:%S\n", localtime(&seconds));
+    pc.printf("2) Time as a custom formatted string = %s", buffer);
+    if (1 == flagT3) {
+        flagT3 = 0;
+        n = n + dir;
+        myOled.clearDisplay();      
+        myOled.setTextCursor(1, 5);
+        myOled.printf("%S",buffer);
+        myOled.display();
+        my7Seg = ~val7Seg[n%16] & 0x7F;
+    }
+    wait(1);
+    }
+    
+}
diff -r 000000000000 -r be32e7347942 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Sun May 08 09:36:18 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file