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
1Definitions.h@0:63db1c7ee975, 2017-04-19 (annotated)
- 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?
User | Revision | Line number | New 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; |