ECE 4180 Final Project
Dependencies: 4DGL-uLCD-SE mbed
main.cpp@0:69cae396d104, 2015-12-02 (annotated)
- Committer:
- dbegasse
- Date:
- Wed Dec 02 01:31:21 2015 +0000
- Revision:
- 0:69cae396d104
- Child:
- 1:f7383e13e64f
before i added the xbee code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dbegasse | 0:69cae396d104 | 1 | //Daniel Begasse |
dbegasse | 0:69cae396d104 | 2 | //ECE 4180 Final Project |
dbegasse | 0:69cae396d104 | 3 | |
dbegasse | 0:69cae396d104 | 4 | #include "mbed.h" |
dbegasse | 0:69cae396d104 | 5 | #include "uLCD_4DGL.h" |
dbegasse | 0:69cae396d104 | 6 | #include <stdio.h> |
dbegasse | 0:69cae396d104 | 7 | #include <stdlib.h> |
dbegasse | 0:69cae396d104 | 8 | #include <mpr121.h> |
dbegasse | 0:69cae396d104 | 9 | #include <vector> |
dbegasse | 0:69cae396d104 | 10 | #include <iostream> |
dbegasse | 0:69cae396d104 | 11 | #include <string> |
dbegasse | 0:69cae396d104 | 12 | |
dbegasse | 0:69cae396d104 | 13 | using namespace std; |
dbegasse | 0:69cae396d104 | 14 | |
dbegasse | 0:69cae396d104 | 15 | //Set up the interrupt pin |
dbegasse | 0:69cae396d104 | 16 | InterruptIn interrupt(p26); |
dbegasse | 0:69cae396d104 | 17 | |
dbegasse | 0:69cae396d104 | 18 | // Setup the i2c bus on pins 9 and 10 |
dbegasse | 0:69cae396d104 | 19 | I2C i2c(p9, p10); |
dbegasse | 0:69cae396d104 | 20 | |
dbegasse | 0:69cae396d104 | 21 | // constructor(i2c object, i2c address of the mpr121) |
dbegasse | 0:69cae396d104 | 22 | Mpr121 mpr121(&i2c, Mpr121::ADD_VSS); |
dbegasse | 0:69cae396d104 | 23 | |
dbegasse | 0:69cae396d104 | 24 | //create a global lcd project |
dbegasse | 0:69cae396d104 | 25 | uLCD_4DGL uLCD(p28, p27, p30); |
dbegasse | 0:69cae396d104 | 26 | |
dbegasse | 0:69cae396d104 | 27 | // Setup the Serial to the PC for debugging |
dbegasse | 0:69cae396d104 | 28 | Serial pc(USBTX, USBRX); |
dbegasse | 0:69cae396d104 | 29 | |
dbegasse | 0:69cae396d104 | 30 | //Setup the timer |
dbegasse | 0:69cae396d104 | 31 | //Timer t; |
dbegasse | 0:69cae396d104 | 32 | |
dbegasse | 0:69cae396d104 | 33 | |
dbegasse | 0:69cae396d104 | 34 | volatile bool tripped = false; |
dbegasse | 0:69cae396d104 | 35 | volatile bool validkey;//This represents if the key pressed was a valid key |
dbegasse | 0:69cae396d104 | 36 | volatile int oldpressed;//This is the previous key that was pressed |
dbegasse | 0:69cae396d104 | 37 | volatile int value;//This is the value coming in from the register |
dbegasse | 0:69cae396d104 | 38 | volatile int pressed;//This is the current key being pressed |
dbegasse | 0:69cae396d104 | 39 | volatile int pressedcount = 0;//This is how many times the current key has been repeatedly pressed |
dbegasse | 0:69cae396d104 | 40 | int cursor_row = 0; |
dbegasse | 0:69cae396d104 | 41 | int cursor_col = 0; |
dbegasse | 0:69cae396d104 | 42 | char message[100]; |
dbegasse | 0:69cae396d104 | 43 | int char_count = 0;//This is the number of times the space button has been pressed for the current message |
dbegasse | 0:69cae396d104 | 44 | |
dbegasse | 0:69cae396d104 | 45 | char key_1[1] = {'1'}; |
dbegasse | 0:69cae396d104 | 46 | char key_2[4] = {'a','b','c','2'}; |
dbegasse | 0:69cae396d104 | 47 | char key_3[4] = {'d','e','f','3'}; |
dbegasse | 0:69cae396d104 | 48 | char key_4[4] = {'g','h','i','4'}; |
dbegasse | 0:69cae396d104 | 49 | char key_5[4] = {'j','k','l','5'}; |
dbegasse | 0:69cae396d104 | 50 | char key_6[4] = {'m','n','o','6'}; |
dbegasse | 0:69cae396d104 | 51 | char key_7[5] = {'p','q','r','s','7'}; |
dbegasse | 0:69cae396d104 | 52 | char key_8[4] = {'t','u','v','8'}; |
dbegasse | 0:69cae396d104 | 53 | char key_9[5] = {'w','x','y','z','9'}; |
dbegasse | 0:69cae396d104 | 54 | char key_10[1] = {' '}; |
dbegasse | 0:69cae396d104 | 55 | |
dbegasse | 0:69cae396d104 | 56 | |
dbegasse | 0:69cae396d104 | 57 | |
dbegasse | 0:69cae396d104 | 58 | void fallInterrupt() { |
dbegasse | 0:69cae396d104 | 59 | |
dbegasse | 0:69cae396d104 | 60 | validkey = false;//Each key pressed is invalid until proven to be valid |
dbegasse | 0:69cae396d104 | 61 | value = mpr121.read(0x00); |
dbegasse | 0:69cae396d104 | 62 | value += mpr121.read(0x01)<<8; |
dbegasse | 0:69cae396d104 | 63 | //pc.printf("Value: %x \r\n", value); |
dbegasse | 0:69cae396d104 | 64 | |
dbegasse | 0:69cae396d104 | 65 | |
dbegasse | 0:69cae396d104 | 66 | //Take the value from the register and use it to assign a key # |
dbegasse | 0:69cae396d104 | 67 | switch(value){ |
dbegasse | 0:69cae396d104 | 68 | |
dbegasse | 0:69cae396d104 | 69 | case (0x1): |
dbegasse | 0:69cae396d104 | 70 | pressed = 10; |
dbegasse | 0:69cae396d104 | 71 | validkey = true; |
dbegasse | 0:69cae396d104 | 72 | break; |
dbegasse | 0:69cae396d104 | 73 | case (0x10): |
dbegasse | 0:69cae396d104 | 74 | pressed = 11; |
dbegasse | 0:69cae396d104 | 75 | validkey = true; |
dbegasse | 0:69cae396d104 | 76 | break; |
dbegasse | 0:69cae396d104 | 77 | case (0x100): |
dbegasse | 0:69cae396d104 | 78 | pressed = 12; |
dbegasse | 0:69cae396d104 | 79 | validkey = true; |
dbegasse | 0:69cae396d104 | 80 | break; |
dbegasse | 0:69cae396d104 | 81 | case (0x2): |
dbegasse | 0:69cae396d104 | 82 | pressed = 7; |
dbegasse | 0:69cae396d104 | 83 | validkey = true; |
dbegasse | 0:69cae396d104 | 84 | break; |
dbegasse | 0:69cae396d104 | 85 | case (0x20): |
dbegasse | 0:69cae396d104 | 86 | pressed = 8; |
dbegasse | 0:69cae396d104 | 87 | validkey = true; |
dbegasse | 0:69cae396d104 | 88 | break; |
dbegasse | 0:69cae396d104 | 89 | case (0x200): |
dbegasse | 0:69cae396d104 | 90 | pressed = 9; |
dbegasse | 0:69cae396d104 | 91 | validkey = true; |
dbegasse | 0:69cae396d104 | 92 | break; |
dbegasse | 0:69cae396d104 | 93 | case (0x4): |
dbegasse | 0:69cae396d104 | 94 | pressed = 4; |
dbegasse | 0:69cae396d104 | 95 | validkey = true; |
dbegasse | 0:69cae396d104 | 96 | break; |
dbegasse | 0:69cae396d104 | 97 | case (0x40): |
dbegasse | 0:69cae396d104 | 98 | pressed = 5; |
dbegasse | 0:69cae396d104 | 99 | validkey = true; |
dbegasse | 0:69cae396d104 | 100 | break; |
dbegasse | 0:69cae396d104 | 101 | case (0x400): |
dbegasse | 0:69cae396d104 | 102 | pressed = 6; |
dbegasse | 0:69cae396d104 | 103 | validkey = true; |
dbegasse | 0:69cae396d104 | 104 | break; |
dbegasse | 0:69cae396d104 | 105 | case (0x8): |
dbegasse | 0:69cae396d104 | 106 | pressed = 1; |
dbegasse | 0:69cae396d104 | 107 | validkey = true; |
dbegasse | 0:69cae396d104 | 108 | break; |
dbegasse | 0:69cae396d104 | 109 | case (0x80): |
dbegasse | 0:69cae396d104 | 110 | pressed = 2; |
dbegasse | 0:69cae396d104 | 111 | validkey = true; |
dbegasse | 0:69cae396d104 | 112 | break; |
dbegasse | 0:69cae396d104 | 113 | case (0x800): |
dbegasse | 0:69cae396d104 | 114 | pressed = 3; |
dbegasse | 0:69cae396d104 | 115 | validkey = true; |
dbegasse | 0:69cae396d104 | 116 | break; |
dbegasse | 0:69cae396d104 | 117 | default: |
dbegasse | 0:69cae396d104 | 118 | validkey = false; |
dbegasse | 0:69cae396d104 | 119 | break; |
dbegasse | 0:69cae396d104 | 120 | } |
dbegasse | 0:69cae396d104 | 121 | |
dbegasse | 0:69cae396d104 | 122 | |
dbegasse | 0:69cae396d104 | 123 | //If the two values are different, assign pressed to oldpressed |
dbegasse | 0:69cae396d104 | 124 | if ((pressed != oldpressed) && (validkey == true) ){ |
dbegasse | 0:69cae396d104 | 125 | |
dbegasse | 0:69cae396d104 | 126 | oldpressed = pressed; |
dbegasse | 0:69cae396d104 | 127 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 128 | char_count++;//move the cursor over if there is a new key |
dbegasse | 0:69cae396d104 | 129 | |
dbegasse | 0:69cae396d104 | 130 | |
dbegasse | 0:69cae396d104 | 131 | } |
dbegasse | 0:69cae396d104 | 132 | |
dbegasse | 0:69cae396d104 | 133 | else if ((pressed == oldpressed) && (value != 0)) { |
dbegasse | 0:69cae396d104 | 134 | |
dbegasse | 0:69cae396d104 | 135 | pressedcount++; |
dbegasse | 0:69cae396d104 | 136 | |
dbegasse | 0:69cae396d104 | 137 | } |
dbegasse | 0:69cae396d104 | 138 | |
dbegasse | 0:69cae396d104 | 139 | |
dbegasse | 0:69cae396d104 | 140 | } |
dbegasse | 0:69cae396d104 | 141 | |
dbegasse | 0:69cae396d104 | 142 | |
dbegasse | 0:69cae396d104 | 143 | void checkCharacter(){ |
dbegasse | 0:69cae396d104 | 144 | |
dbegasse | 0:69cae396d104 | 145 | |
dbegasse | 0:69cae396d104 | 146 | if (pressed == 1){ |
dbegasse | 0:69cae396d104 | 147 | |
dbegasse | 0:69cae396d104 | 148 | if (pressedcount > 0){ |
dbegasse | 0:69cae396d104 | 149 | |
dbegasse | 0:69cae396d104 | 150 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 151 | |
dbegasse | 0:69cae396d104 | 152 | } |
dbegasse | 0:69cae396d104 | 153 | |
dbegasse | 0:69cae396d104 | 154 | message[char_count] = '1'; |
dbegasse | 0:69cae396d104 | 155 | |
dbegasse | 0:69cae396d104 | 156 | } |
dbegasse | 0:69cae396d104 | 157 | |
dbegasse | 0:69cae396d104 | 158 | |
dbegasse | 0:69cae396d104 | 159 | if (pressed == 2){ |
dbegasse | 0:69cae396d104 | 160 | |
dbegasse | 0:69cae396d104 | 161 | if (pressedcount > 3){ |
dbegasse | 0:69cae396d104 | 162 | |
dbegasse | 0:69cae396d104 | 163 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 164 | |
dbegasse | 0:69cae396d104 | 165 | } |
dbegasse | 0:69cae396d104 | 166 | |
dbegasse | 0:69cae396d104 | 167 | message[char_count] = key_2[pressedcount]; |
dbegasse | 0:69cae396d104 | 168 | |
dbegasse | 0:69cae396d104 | 169 | } |
dbegasse | 0:69cae396d104 | 170 | |
dbegasse | 0:69cae396d104 | 171 | if (pressed == 3){ |
dbegasse | 0:69cae396d104 | 172 | |
dbegasse | 0:69cae396d104 | 173 | if (pressedcount > 3){ |
dbegasse | 0:69cae396d104 | 174 | |
dbegasse | 0:69cae396d104 | 175 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 176 | |
dbegasse | 0:69cae396d104 | 177 | } |
dbegasse | 0:69cae396d104 | 178 | |
dbegasse | 0:69cae396d104 | 179 | message[char_count] = key_3[pressedcount]; |
dbegasse | 0:69cae396d104 | 180 | |
dbegasse | 0:69cae396d104 | 181 | } |
dbegasse | 0:69cae396d104 | 182 | |
dbegasse | 0:69cae396d104 | 183 | if (pressed == 4){ |
dbegasse | 0:69cae396d104 | 184 | |
dbegasse | 0:69cae396d104 | 185 | if (pressedcount > 3){ |
dbegasse | 0:69cae396d104 | 186 | |
dbegasse | 0:69cae396d104 | 187 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 188 | |
dbegasse | 0:69cae396d104 | 189 | } |
dbegasse | 0:69cae396d104 | 190 | |
dbegasse | 0:69cae396d104 | 191 | message[char_count] = key_4[pressedcount]; |
dbegasse | 0:69cae396d104 | 192 | |
dbegasse | 0:69cae396d104 | 193 | } |
dbegasse | 0:69cae396d104 | 194 | |
dbegasse | 0:69cae396d104 | 195 | if (pressed == 5){ |
dbegasse | 0:69cae396d104 | 196 | |
dbegasse | 0:69cae396d104 | 197 | if (pressedcount > 3){ |
dbegasse | 0:69cae396d104 | 198 | |
dbegasse | 0:69cae396d104 | 199 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 200 | |
dbegasse | 0:69cae396d104 | 201 | } |
dbegasse | 0:69cae396d104 | 202 | |
dbegasse | 0:69cae396d104 | 203 | message[char_count] = key_5[pressedcount]; |
dbegasse | 0:69cae396d104 | 204 | |
dbegasse | 0:69cae396d104 | 205 | } |
dbegasse | 0:69cae396d104 | 206 | |
dbegasse | 0:69cae396d104 | 207 | if (pressed == 6){ |
dbegasse | 0:69cae396d104 | 208 | |
dbegasse | 0:69cae396d104 | 209 | if (pressedcount > 3){ |
dbegasse | 0:69cae396d104 | 210 | |
dbegasse | 0:69cae396d104 | 211 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 212 | |
dbegasse | 0:69cae396d104 | 213 | } |
dbegasse | 0:69cae396d104 | 214 | |
dbegasse | 0:69cae396d104 | 215 | message[char_count] = key_6[pressedcount]; |
dbegasse | 0:69cae396d104 | 216 | |
dbegasse | 0:69cae396d104 | 217 | } |
dbegasse | 0:69cae396d104 | 218 | |
dbegasse | 0:69cae396d104 | 219 | if (pressed == 7){ |
dbegasse | 0:69cae396d104 | 220 | |
dbegasse | 0:69cae396d104 | 221 | if (pressedcount > 4){ |
dbegasse | 0:69cae396d104 | 222 | |
dbegasse | 0:69cae396d104 | 223 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 224 | |
dbegasse | 0:69cae396d104 | 225 | } |
dbegasse | 0:69cae396d104 | 226 | |
dbegasse | 0:69cae396d104 | 227 | message[char_count] = key_7[pressedcount]; |
dbegasse | 0:69cae396d104 | 228 | |
dbegasse | 0:69cae396d104 | 229 | } |
dbegasse | 0:69cae396d104 | 230 | |
dbegasse | 0:69cae396d104 | 231 | if (pressed == 8){ |
dbegasse | 0:69cae396d104 | 232 | |
dbegasse | 0:69cae396d104 | 233 | if (pressedcount > 3){ |
dbegasse | 0:69cae396d104 | 234 | |
dbegasse | 0:69cae396d104 | 235 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 236 | |
dbegasse | 0:69cae396d104 | 237 | } |
dbegasse | 0:69cae396d104 | 238 | |
dbegasse | 0:69cae396d104 | 239 | message[char_count] = key_8[pressedcount]; |
dbegasse | 0:69cae396d104 | 240 | |
dbegasse | 0:69cae396d104 | 241 | } |
dbegasse | 0:69cae396d104 | 242 | |
dbegasse | 0:69cae396d104 | 243 | if (pressed == 9){ |
dbegasse | 0:69cae396d104 | 244 | |
dbegasse | 0:69cae396d104 | 245 | if (pressedcount > 4){ |
dbegasse | 0:69cae396d104 | 246 | |
dbegasse | 0:69cae396d104 | 247 | pressedcount = 0; |
dbegasse | 0:69cae396d104 | 248 | |
dbegasse | 0:69cae396d104 | 249 | } |
dbegasse | 0:69cae396d104 | 250 | |
dbegasse | 0:69cae396d104 | 251 | message[char_count] = key_9[pressedcount]; |
dbegasse | 0:69cae396d104 | 252 | |
dbegasse | 0:69cae396d104 | 253 | } |
dbegasse | 0:69cae396d104 | 254 | |
dbegasse | 0:69cae396d104 | 255 | |
dbegasse | 0:69cae396d104 | 256 | if (pressed == 10) { |
dbegasse | 0:69cae396d104 | 257 | |
dbegasse | 0:69cae396d104 | 258 | |
dbegasse | 0:69cae396d104 | 259 | message[char_count] = ' '; |
dbegasse | 0:69cae396d104 | 260 | |
dbegasse | 0:69cae396d104 | 261 | } |
dbegasse | 0:69cae396d104 | 262 | |
dbegasse | 0:69cae396d104 | 263 | } |
dbegasse | 0:69cae396d104 | 264 | |
dbegasse | 0:69cae396d104 | 265 | void printMessage(){ |
dbegasse | 0:69cae396d104 | 266 | |
dbegasse | 0:69cae396d104 | 267 | uLCD.locate(cursor_col ,cursor_row); |
dbegasse | 0:69cae396d104 | 268 | |
dbegasse | 0:69cae396d104 | 269 | //To save time only print if the size of the array has changed |
dbegasse | 0:69cae396d104 | 270 | //look at char count to tell |
dbegasse | 0:69cae396d104 | 271 | |
dbegasse | 0:69cae396d104 | 272 | for ( unsigned i = 0; i <= char_count; i++ ){ |
dbegasse | 0:69cae396d104 | 273 | |
dbegasse | 0:69cae396d104 | 274 | uLCD.printf("%c", message[i]); |
dbegasse | 0:69cae396d104 | 275 | } |
dbegasse | 0:69cae396d104 | 276 | |
dbegasse | 0:69cae396d104 | 277 | //message[char_count + 1] = '|'; |
dbegasse | 0:69cae396d104 | 278 | |
dbegasse | 0:69cae396d104 | 279 | |
dbegasse | 0:69cae396d104 | 280 | |
dbegasse | 0:69cae396d104 | 281 | } |
dbegasse | 0:69cae396d104 | 282 | |
dbegasse | 0:69cae396d104 | 283 | void printCursor(){ |
dbegasse | 0:69cae396d104 | 284 | |
dbegasse | 0:69cae396d104 | 285 | uLCD.text_char('|',char_count + 1, cursor_row, BLUE); |
dbegasse | 0:69cae396d104 | 286 | wait(.5); |
dbegasse | 0:69cae396d104 | 287 | uLCD.text_char('|',char_count + 1, cursor_row, BLACK); |
dbegasse | 0:69cae396d104 | 288 | wait(.5); |
dbegasse | 0:69cae396d104 | 289 | |
dbegasse | 0:69cae396d104 | 290 | } |
dbegasse | 0:69cae396d104 | 291 | |
dbegasse | 0:69cae396d104 | 292 | |
dbegasse | 0:69cae396d104 | 293 | int main(){ |
dbegasse | 0:69cae396d104 | 294 | |
dbegasse | 0:69cae396d104 | 295 | pc.baud(9600); |
dbegasse | 0:69cae396d104 | 296 | |
dbegasse | 0:69cae396d104 | 297 | interrupt.mode(PullUp); |
dbegasse | 0:69cae396d104 | 298 | wait(.001); |
dbegasse | 0:69cae396d104 | 299 | interrupt.fall(&fallInterrupt); |
dbegasse | 0:69cae396d104 | 300 | |
dbegasse | 0:69cae396d104 | 301 | //Timer t; |
dbegasse | 0:69cae396d104 | 302 | |
dbegasse | 0:69cae396d104 | 303 | while(1){ |
dbegasse | 0:69cae396d104 | 304 | |
dbegasse | 0:69cae396d104 | 305 | |
dbegasse | 0:69cae396d104 | 306 | |
dbegasse | 0:69cae396d104 | 307 | //pc.printf("Whats in the list... %c\n", message[char_count]); |
dbegasse | 0:69cae396d104 | 308 | checkCharacter(); |
dbegasse | 0:69cae396d104 | 309 | //printCursor(); |
dbegasse | 0:69cae396d104 | 310 | printMessage(); |
dbegasse | 0:69cae396d104 | 311 | |
dbegasse | 0:69cae396d104 | 312 | //USE A PUSH BUTTON TO MOVE THE CURSOR MANUALLY |
dbegasse | 0:69cae396d104 | 313 | //WHEN YOU MOVE THE CURSOR, ADD THE PREVIOUS CHARACTER TO THE MESSAGE VECTOR |
dbegasse | 0:69cae396d104 | 314 | //THEN WHEN YOU TRY TO SEND YOU SEND THE VECTORO |
dbegasse | 0:69cae396d104 | 315 | |
dbegasse | 0:69cae396d104 | 316 | } |
dbegasse | 0:69cae396d104 | 317 | |
dbegasse | 0:69cae396d104 | 318 | } |
dbegasse | 0:69cae396d104 | 319 | |
dbegasse | 0:69cae396d104 | 320 | |
dbegasse | 0:69cae396d104 | 321 | |
dbegasse | 0:69cae396d104 | 322 | |
dbegasse | 0:69cae396d104 | 323 |