A simple reminder program that can store up to 5 reminders, and has the ability to navigate between different pages through different functions.

Dependencies:   Hexi_KW40Z Hexi_OLED_SSD1351 PWM_Tone_Library

Committer:
fusop
Date:
Wed Apr 19 14:57:15 2017 +0000
Revision:
0:63db1c7ee975
Final Version of the Reminder Program;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fusop 0:63db1c7ee975 1
fusop 0:63db1c7ee975 2 //------------------------------------------------------------------------------
fusop 0:63db1c7ee975 3 // FUNCTION PROTOTYPES
fusop 0:63db1c7ee975 4 //------------------------------------------------------------------------------
fusop 0:63db1c7ee975 5
fusop 0:63db1c7ee975 6 //Pages
fusop 0:63db1c7ee975 7 void TimeSetup (void);
fusop 0:63db1c7ee975 8 void TimeDisplay (void);
fusop 0:63db1c7ee975 9 void ReminderList (void);
fusop 0:63db1c7ee975 10 void AddReminder (void);
fusop 0:63db1c7ee975 11 void DelReminder (void);
fusop 0:63db1c7ee975 12 void MainDisp (void);
fusop 0:63db1c7ee975 13
fusop 0:63db1c7ee975 14 //Interrupt
fusop 0:63db1c7ee975 15 void InterruptAction (void const *n);
fusop 0:63db1c7ee975 16
fusop 0:63db1c7ee975 17 //Buttons
fusop 0:63db1c7ee975 18 void BU(void);
fusop 0:63db1c7ee975 19 void BD(void);
fusop 0:63db1c7ee975 20 void BL(void);
fusop 0:63db1c7ee975 21 void BR(void);
fusop 0:63db1c7ee975 22 void BS(void);
fusop 0:63db1c7ee975 23 void B_attach(void);
fusop 0:63db1c7ee975 24 void B_response(int);
fusop 0:63db1c7ee975 25
fusop 0:63db1c7ee975 26 //Supplementary
fusop 0:63db1c7ee975 27 int CharInput (int, int);
fusop 0:63db1c7ee975 28 void DelayProg (int);
fusop 0:63db1c7ee975 29 void TextInit (void);
fusop 0:63db1c7ee975 30
fusop 0:63db1c7ee975 31 //------------------------------------------------------------------------------
fusop 0:63db1c7ee975 32 // GLOBAL VARIABLE DEFINITIONS
fusop 0:63db1c7ee975 33 //------------------------------------------------------------------------------
fusop 0:63db1c7ee975 34
fusop 0:63db1c7ee975 35 //Vibration pin
fusop 0:63db1c7ee975 36 DigitalOut vib(PTB9);
fusop 0:63db1c7ee975 37
fusop 0:63db1c7ee975 38 //Debugging LEDs
fusop 0:63db1c7ee975 39 DigitalOut red(LED1);
fusop 0:63db1c7ee975 40 DigitalOut green(LED2);
fusop 0:63db1c7ee975 41 DigitalOut blue(LED3);
fusop 0:63db1c7ee975 42
fusop 0:63db1c7ee975 43 //Timer
fusop 0:63db1c7ee975 44 RtosTimer masa(InterruptAction, osTimerOnce); //Keep it this way (non-periodic).
fusop 0:63db1c7ee975 45 //Who knows you want to stop the
fusop 0:63db1c7ee975 46 //interrupt for some reason
fusop 0:63db1c7ee975 47
fusop 0:63db1c7ee975 48 //Buttons
fusop 0:63db1c7ee975 49 KW40Z butt(PTE24, PTE25); //UART TX, UART RX
fusop 0:63db1c7ee975 50
fusop 0:63db1c7ee975 51 //Buzzer
fusop 0:63db1c7ee975 52 PwmOut buzz(PTA10);
fusop 0:63db1c7ee975 53
fusop 0:63db1c7ee975 54 /* Instantiate the SSD1351 OLED Driver */
fusop 0:63db1c7ee975 55 SSD1351 oled(PTB22,PTB21,PTC13,PTB20,PTE6,PTD15); /*(MOSI,SCLK,POWER,CS,RST,DC)*/
fusop 0:63db1c7ee975 56 oled_text_properties_t tProp = {0};
fusop 0:63db1c7ee975 57
fusop 0:63db1c7ee975 58 //Buzzer at 1st Peripheral Position
fusop 0:63db1c7ee975 59 PwmOut Buzzer(PTA10);
fusop 0:63db1c7ee975 60
fusop 0:63db1c7ee975 61 //Variables
fusop 0:63db1c7ee975 62 char str[20];
fusop 0:63db1c7ee975 63
fusop 0:63db1c7ee975 64 int butmem = 0;
fusop 0:63db1c7ee975 65
fusop 0:63db1c7ee975 66 int numCount = -1;
fusop 0:63db1c7ee975 67 int vibCount = 0;
fusop 0:63db1c7ee975 68 int hours = 0;
fusop 0:63db1c7ee975 69 int mins = 0;
fusop 0:63db1c7ee975 70 int secs = 0;
fusop 0:63db1c7ee975 71
fusop 0:63db1c7ee975 72 int fReCalc = 0;
fusop 0:63db1c7ee975 73 int nDisp = 5;
fusop 0:63db1c7ee975 74
fusop 0:63db1c7ee975 75 //Alarm parameters
fusop 0:63db1c7ee975 76 int nAlarm = 0; //Entry pointer
fusop 0:63db1c7ee975 77 int fAlarm = 0; //Alarm flag
fusop 0:63db1c7ee975 78 int vAlarm = 0; //Vibration period
fusop 0:63db1c7ee975 79
fusop 0:63db1c7ee975 80 //For certain delays in the program
fusop 0:63db1c7ee975 81 double delay = 0;
fusop 0:63db1c7ee975 82 int dummy = 0;
fusop 0:63db1c7ee975 83
fusop 0:63db1c7ee975 84 //Interrupt Flags
fusop 0:63db1c7ee975 85 int butflg = 0;
fusop 0:63db1c7ee975 86 int vibflg = 0;
fusop 0:63db1c7ee975 87 int delayflg = 0;
fusop 0:63db1c7ee975 88
fusop 0:63db1c7ee975 89 //Sound Flags
fusop 0:63db1c7ee975 90 int WSound = 0;
fusop 0:63db1c7ee975 91 int CCSound = 0;
fusop 0:63db1c7ee975 92 int SCSound = 0;
fusop 0:63db1c7ee975 93 int DLSound = 0;
fusop 0:63db1c7ee975 94
fusop 0:63db1c7ee975 95 //Reminder Variables
fusop 0:63db1c7ee975 96 typedef struct reminderProperties
fusop 0:63db1c7ee975 97 {
fusop 0:63db1c7ee975 98 char rText[11]; //The text of the reminder
fusop 0:63db1c7ee975 99 int rExist; //Indicates whether the reminder exists or not
fusop 0:63db1c7ee975 100 int rMins; //Time of the reminder
fusop 0:63db1c7ee975 101 int rHours;
fusop 0:63db1c7ee975 102 } remProp;
fusop 0:63db1c7ee975 103
fusop 0:63db1c7ee975 104 int rNumber = 0; //How many reminders exist?
fusop 0:63db1c7ee975 105
fusop 0:63db1c7ee975 106 remProp remData[5];
fusop 0:63db1c7ee975 107
fusop 0:63db1c7ee975 108 //Buttons Mnemonic
fusop 0:63db1c7ee975 109 enum button_number {
fusop 0:63db1c7ee975 110 BUT_UP = 1,
fusop 0:63db1c7ee975 111 BUT_DOWN = 2,
fusop 0:63db1c7ee975 112 BUT_LEFT = 3,
fusop 0:63db1c7ee975 113 BUT_RIGHT = 4
fusop 0:63db1c7ee975 114 } butnum;
fusop 0:63db1c7ee975 115
fusop 0:63db1c7ee975 116 //Texts
fusop 0:63db1c7ee975 117 char remTxt[6][11];
fusop 0:63db1c7ee975 118 //Refer to Texts Initialization Function
fusop 0:63db1c7ee975 119
fusop 0:63db1c7ee975 120 //Buzzer
fusop 0:63db1c7ee975 121 float C3 = 1000000/Do3,
fusop 0:63db1c7ee975 122 Cs3 = 1000000/Do3s,
fusop 0:63db1c7ee975 123 D3 = 1000000/Re3,
fusop 0:63db1c7ee975 124 Ds3 = 1000000/Re3s,
fusop 0:63db1c7ee975 125 E3 = 1000000/Mi3,
fusop 0:63db1c7ee975 126 F3 = 1000000/Fa3,
fusop 0:63db1c7ee975 127 Fs3 = 1000000/Fa3s,
fusop 0:63db1c7ee975 128 G3 = 1000000/So3,
fusop 0:63db1c7ee975 129 Gs3 = 1000000/So3s,
fusop 0:63db1c7ee975 130 A3 = 1000000/La3,
fusop 0:63db1c7ee975 131 As3 = 1000000/La3s,
fusop 0:63db1c7ee975 132 B3 = 1000000/Ti3,
fusop 0:63db1c7ee975 133 C4 = 1000000/Do4,
fusop 0:63db1c7ee975 134 Cs4 = 1000000/Do4s,
fusop 0:63db1c7ee975 135 D4 = 1000000/Re4,
fusop 0:63db1c7ee975 136 Ds4 = 1000000/Re4s,
fusop 0:63db1c7ee975 137 E4 = 1000000/Mi4,
fusop 0:63db1c7ee975 138 F4 = 1000000/Fa4,
fusop 0:63db1c7ee975 139 Fs4 = 1000000/Fa4s,
fusop 0:63db1c7ee975 140 G4 = 1000000/So4,
fusop 0:63db1c7ee975 141 Gs4 = 1000000/So4s,
fusop 0:63db1c7ee975 142 A4 = 1000000/La4,
fusop 0:63db1c7ee975 143 As4 = 1000000/La4s,
fusop 0:63db1c7ee975 144 B4 = 1000000/Ti4,
fusop 0:63db1c7ee975 145 C5 = 1000000/Do5,
fusop 0:63db1c7ee975 146 Cs5 = 1000000/Do5s,
fusop 0:63db1c7ee975 147 D5 = 1000000/Re5,
fusop 0:63db1c7ee975 148 Ds5 = 1000000/Re5s,
fusop 0:63db1c7ee975 149 E5 = 1000000/Mi5,
fusop 0:63db1c7ee975 150 F5 = 1000000/Fa5,
fusop 0:63db1c7ee975 151 Fs5 = 1000000/Fa5s,
fusop 0:63db1c7ee975 152 G5 = 1000000/So5,
fusop 0:63db1c7ee975 153 Gs5 = 1000000/So5s,
fusop 0:63db1c7ee975 154 A5 = 1000000/La5,
fusop 0:63db1c7ee975 155 As5 = 1000000/La5s,
fusop 0:63db1c7ee975 156 B5 = 1000000/Ti5;