Hexiwear Program for my Hackster Hexiwear contest entry

Dependencies:   Hexi_OLED_SSD1351

Committer:
keithm01
Date:
Thu Sep 15 16:56:06 2016 +0000
Revision:
0:6bb49e7332b4
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew 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