Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Adafruit_GFX
Revision 0:be32e7347942, committed 2022-05-08
- Comitter:
- leejieun
- Date:
- Sun May 08 09:36:18 2022 +0000
- Commit message:
- OLED_MISSION1;
Changed in this revision
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