Hexiwear Program for my Hackster Hexiwear contest entry
Dependencies: Hexi_OLED_SSD1351
main.cpp@0:6bb49e7332b4, 2016-09-15 (annotated)
- Committer:
- keithm01
- Date:
- Thu Sep 15 16:56:06 2016 +0000
- Revision:
- 0:6bb49e7332b4
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
keithm01 | 0:6bb49e7332b4 | 1 | #include "mbed.h" |
keithm01 | 0:6bb49e7332b4 | 2 | #include "Hexi_OLED_SSD1351.h" |
keithm01 | 0:6bb49e7332b4 | 3 | #include "string.h" |
keithm01 | 0:6bb49e7332b4 | 4 | |
keithm01 | 0:6bb49e7332b4 | 5 | #include "images.h" |
keithm01 | 0:6bb49e7332b4 | 6 | |
keithm01 | 0:6bb49e7332b4 | 7 | DigitalOut led_green(LED_GREEN); |
keithm01 | 0:6bb49e7332b4 | 8 | DigitalOut vib(PTB9); |
keithm01 | 0:6bb49e7332b4 | 9 | |
keithm01 | 0:6bb49e7332b4 | 10 | Serial eddy(PTD3, PTD2); // tx rx |
keithm01 | 0:6bb49e7332b4 | 11 | |
keithm01 | 0:6bb49e7332b4 | 12 | // Connect to the oled |
keithm01 | 0:6bb49e7332b4 | 13 | SSD1351 oled(PTB22,PTB21,PTC13,PTB20,PTE6, PTD15); /* (MOSI,SCLK,POWER,CS,RST,DC) */ |
keithm01 | 0:6bb49e7332b4 | 14 | |
keithm01 | 0:6bb49e7332b4 | 15 | bool armed = false; |
keithm01 | 0:6bb49e7332b4 | 16 | bool alarm = false; |
keithm01 | 0:6bb49e7332b4 | 17 | |
keithm01 | 0:6bb49e7332b4 | 18 | int main() { |
keithm01 | 0:6bb49e7332b4 | 19 | |
keithm01 | 0:6bb49e7332b4 | 20 | // Buffer to store label text |
keithm01 | 0:6bb49e7332b4 | 21 | char text[20]; |
keithm01 | 0:6bb49e7332b4 | 22 | |
keithm01 | 0:6bb49e7332b4 | 23 | // Use default properties |
keithm01 | 0:6bb49e7332b4 | 24 | oled_text_properties_t textProperties = {0}; |
keithm01 | 0:6bb49e7332b4 | 25 | oled.GetTextProperties(&textProperties); |
keithm01 | 0:6bb49e7332b4 | 26 | |
keithm01 | 0:6bb49e7332b4 | 27 | // Fill the screen |
keithm01 | 0:6bb49e7332b4 | 28 | oled.FillScreen(COLOR_BLACK); |
keithm01 | 0:6bb49e7332b4 | 29 | |
keithm01 | 0:6bb49e7332b4 | 30 | const uint8_t *borderImage; |
keithm01 | 0:6bb49e7332b4 | 31 | borderImage = border_bmp; |
keithm01 | 0:6bb49e7332b4 | 32 | oled.DrawImage(borderImage,0,20); |
keithm01 | 0:6bb49e7332b4 | 33 | |
keithm01 | 0:6bb49e7332b4 | 34 | // Set text color to white and left aligned |
keithm01 | 0:6bb49e7332b4 | 35 | textProperties.fontColor = COLOR_WHITE; |
keithm01 | 0:6bb49e7332b4 | 36 | textProperties.alignParam = OLED_TEXT_ALIGN_CENTER; |
keithm01 | 0:6bb49e7332b4 | 37 | oled.SetTextProperties(&textProperties); |
keithm01 | 0:6bb49e7332b4 | 38 | |
keithm01 | 0:6bb49e7332b4 | 39 | const uint8_t *armedImage; |
keithm01 | 0:6bb49e7332b4 | 40 | armedImage = lock_bmp; |
keithm01 | 0:6bb49e7332b4 | 41 | |
keithm01 | 0:6bb49e7332b4 | 42 | const uint8_t *disarmedImage; |
keithm01 | 0:6bb49e7332b4 | 43 | disarmedImage = unlock_bmp; |
keithm01 | 0:6bb49e7332b4 | 44 | |
keithm01 | 0:6bb49e7332b4 | 45 | const uint8_t *alarmImage; |
keithm01 | 0:6bb49e7332b4 | 46 | alarmImage = alarm_bmp; |
keithm01 | 0:6bb49e7332b4 | 47 | |
keithm01 | 0:6bb49e7332b4 | 48 | while (true) { |
keithm01 | 0:6bb49e7332b4 | 49 | time_t seconds = time(NULL); // Get the time in unix format |
keithm01 | 0:6bb49e7332b4 | 50 | |
keithm01 | 0:6bb49e7332b4 | 51 | const tm *t = localtime (&seconds); // Convert the unix time to actual time |
keithm01 | 0:6bb49e7332b4 | 52 | char* s = "AM"; // The suffix to use for the time of day |
keithm01 | 0:6bb49e7332b4 | 53 | int h = t->tm_hour; // The hours |
keithm01 | 0:6bb49e7332b4 | 54 | if (h > 12){ // If it's entering 24/h time, change it to 12/h and add PM |
keithm01 | 0:6bb49e7332b4 | 55 | s = "PM"; |
keithm01 | 0:6bb49e7332b4 | 56 | h = h - 12; |
keithm01 | 0:6bb49e7332b4 | 57 | } |
keithm01 | 0:6bb49e7332b4 | 58 | // Format the time |
keithm01 | 0:6bb49e7332b4 | 59 | sprintf(text,"%d:%d %s",h, t->tm_min, s); |
keithm01 | 0:6bb49e7332b4 | 60 | // Display the time on screen |
keithm01 | 0:6bb49e7332b4 | 61 | oled.TextBox((uint8_t *)text,2,2, 91, 15); |
keithm01 | 0:6bb49e7332b4 | 62 | |
keithm01 | 0:6bb49e7332b4 | 63 | if(alarm){ |
keithm01 | 0:6bb49e7332b4 | 64 | vib = !vib; |
keithm01 | 0:6bb49e7332b4 | 65 | oled.DrawImage(alarmImage,0,20); |
keithm01 | 0:6bb49e7332b4 | 66 | }else{ |
keithm01 | 0:6bb49e7332b4 | 67 | if(armed){ |
keithm01 | 0:6bb49e7332b4 | 68 | oled.DrawImage(armedImage,0,20); |
keithm01 | 0:6bb49e7332b4 | 69 | }else{ |
keithm01 | 0:6bb49e7332b4 | 70 | oled.DrawImage(disarmedImage,0,20); |
keithm01 | 0:6bb49e7332b4 | 71 | } |
keithm01 | 0:6bb49e7332b4 | 72 | } |
keithm01 | 0:6bb49e7332b4 | 73 | |
keithm01 | 0:6bb49e7332b4 | 74 | // Flash the green led |
keithm01 | 0:6bb49e7332b4 | 75 | led_green = !led_green; |
keithm01 | 0:6bb49e7332b4 | 76 | |
keithm01 | 0:6bb49e7332b4 | 77 | if(eddy.readable()) { |
keithm01 | 0:6bb49e7332b4 | 78 | char read = eddy.getc(); |
keithm01 | 0:6bb49e7332b4 | 79 | |
keithm01 | 0:6bb49e7332b4 | 80 | if(read == '0'){ |
keithm01 | 0:6bb49e7332b4 | 81 | armed = false; |
keithm01 | 0:6bb49e7332b4 | 82 | alarm = false; |
keithm01 | 0:6bb49e7332b4 | 83 | }else if (read == '1'){ |
keithm01 | 0:6bb49e7332b4 | 84 | armed = true; |
keithm01 | 0:6bb49e7332b4 | 85 | alarm = false; |
keithm01 | 0:6bb49e7332b4 | 86 | }else if (read == '2'){ |
keithm01 | 0:6bb49e7332b4 | 87 | alarm = true; |
keithm01 | 0:6bb49e7332b4 | 88 | } |
keithm01 | 0:6bb49e7332b4 | 89 | } |
keithm01 | 0:6bb49e7332b4 | 90 | |
keithm01 | 0:6bb49e7332b4 | 91 | Thread::wait(1000); |
keithm01 | 0:6bb49e7332b4 | 92 | } |
keithm01 | 0:6bb49e7332b4 | 93 | } |
keithm01 | 0:6bb49e7332b4 | 94 | |
keithm01 | 0:6bb49e7332b4 | 95 |