ECE 4180 Project for Spring 2020

Dependencies:   mbed mbed-rtos SDFileSystem PinDetect ESP8266NodeMCUInterface

Committer:
kimberlylie99
Date:
Fri May 01 18:43:13 2020 +0000
Revision:
1:5ae291085f75
Parent:
0:b97c07227845
Edit Main.cpp;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kimberlylie99 0:b97c07227845 1 //
kimberlylie99 0:b97c07227845 2 // uLCD_4DGL is a class to drive 4D Systems TFT touch screens
kimberlylie99 0:b97c07227845 3 //
kimberlylie99 0:b97c07227845 4 // Fork of 4DGL library for 4D Systems LCD displays
kimberlylie99 0:b97c07227845 5 // Copyright (C) <2010> Stephane ROCHON <stephane.rochon at free.fr>
kimberlylie99 0:b97c07227845 6 // Modifed for Goldelox processor <2013> Jim Hamblen
kimberlylie99 0:b97c07227845 7 //
kimberlylie99 0:b97c07227845 8 // uLCD_4DGL is free software: you can redistribute it and/or modify
kimberlylie99 0:b97c07227845 9 // it under the terms of the GNU General Public License as published by
kimberlylie99 0:b97c07227845 10 // the Free Software Foundation, either version 3 of the License, or
kimberlylie99 0:b97c07227845 11 // (at your option) any later version.
kimberlylie99 0:b97c07227845 12 //
kimberlylie99 0:b97c07227845 13 // uLCD_4DGL is distributed in the hope that it will be useful,
kimberlylie99 0:b97c07227845 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
kimberlylie99 0:b97c07227845 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
kimberlylie99 0:b97c07227845 16 // GNU General Public License for more details.
kimberlylie99 0:b97c07227845 17 //
kimberlylie99 0:b97c07227845 18 // You should have received a copy of the GNU General Public License
kimberlylie99 0:b97c07227845 19 // along with uLCD_4DGL. If not, see <http://www.gnu.org/licenses/>.
kimberlylie99 0:b97c07227845 20
kimberlylie99 0:b97c07227845 21 // @author Stephane Rochon
kimberlylie99 0:b97c07227845 22
kimberlylie99 0:b97c07227845 23 #include "mbed.h"
kimberlylie99 0:b97c07227845 24
kimberlylie99 0:b97c07227845 25 // Debug Verbose off - SGE commands echoed to USB serial for debugmode=1
kimberlylie99 0:b97c07227845 26 #ifndef DEBUGMODE
kimberlylie99 0:b97c07227845 27 #define DEBUGMODE 0
kimberlylie99 0:b97c07227845 28 #endif
kimberlylie99 0:b97c07227845 29
kimberlylie99 0:b97c07227845 30 // Common WAIT value in milliseconds between commands
kimberlylie99 0:b97c07227845 31 #define TEMPO 0
kimberlylie99 0:b97c07227845 32
kimberlylie99 0:b97c07227845 33 // 4DGL SGE Function values for Goldelox Processor
kimberlylie99 0:b97c07227845 34 #define CLS '\xD7'
kimberlylie99 0:b97c07227845 35 #define BAUDRATE '\x0B' //null prefix
kimberlylie99 0:b97c07227845 36 #define VERSION '\x08' //null prefix
kimberlylie99 0:b97c07227845 37 #define BCKGDCOLOR '\x6E'
kimberlylie99 0:b97c07227845 38 #define TXTBCKGDCOLOR '\x7E'
kimberlylie99 0:b97c07227845 39 #define DISPCONTROL '\x68'
kimberlylie99 0:b97c07227845 40 #define SETVOLUME '\x76'
kimberlylie99 0:b97c07227845 41 #define CIRCLE '\xCD'
kimberlylie99 0:b97c07227845 42 #define FCIRCLE '\xCC'
kimberlylie99 0:b97c07227845 43 #define TRIANGLE '\xC9'
kimberlylie99 0:b97c07227845 44 #define LINE '\xD2'
kimberlylie99 0:b97c07227845 45 #define FRECTANGLE '\xCE'
kimberlylie99 0:b97c07227845 46 #define RECTANGLE '\xCF'
kimberlylie99 0:b97c07227845 47 #define ELLIPSE '\x65' //na
kimberlylie99 0:b97c07227845 48 #define PIXEL '\xCB'
kimberlylie99 0:b97c07227845 49 #define READPIXEL '\xCA'
kimberlylie99 0:b97c07227845 50 #define SCREENCOPY '\x63' //na?
kimberlylie99 0:b97c07227845 51 #define PENSIZE '\xD8'
kimberlylie99 0:b97c07227845 52 #define SETFONT '\x7D'
kimberlylie99 0:b97c07227845 53 #define TEXTMODE '\x77'
kimberlylie99 0:b97c07227845 54 #define TEXTBOLD '\x76'
kimberlylie99 0:b97c07227845 55 #define TEXTITALIC '\x75'
kimberlylie99 0:b97c07227845 56 #define TEXTINVERSE '\x74'
kimberlylie99 0:b97c07227845 57 #define TEXTUNDERLINE '\x73'
kimberlylie99 0:b97c07227845 58 #define TEXTWIDTH '\x7C'
kimberlylie99 0:b97c07227845 59 #define TEXTHEIGHT '\x7B'
kimberlylie99 0:b97c07227845 60 #define TEXTCHAR '\xFE'
kimberlylie99 0:b97c07227845 61 #define TEXTSTRING '\x06' //null prefix
kimberlylie99 0:b97c07227845 62 #define MOVECURSOR '\xE4'
kimberlylie99 0:b97c07227845 63 #define BLITCOM '\x0A'
kimberlylie99 0:b97c07227845 64 #define PUTCHAR '\xFE'
kimberlylie99 0:b97c07227845 65 #define DISPPOWER '\x66'
kimberlylie99 0:b97c07227845 66 //media commands for uSD card
kimberlylie99 0:b97c07227845 67 #define MINIT '\xB1'
kimberlylie99 0:b97c07227845 68 #define SBADDRESS '\xB9'
kimberlylie99 0:b97c07227845 69 #define SSADDRESS '\xB8'
kimberlylie99 0:b97c07227845 70 #define READBYTE '\xB7'
kimberlylie99 0:b97c07227845 71 #define READWORD '\xB6'
kimberlylie99 0:b97c07227845 72 #define WRITEBYTE '\xB5'
kimberlylie99 0:b97c07227845 73 #define WRITEWORD '\xB4'
kimberlylie99 0:b97c07227845 74 #define FLUSHMEDIA '\xB2'
kimberlylie99 0:b97c07227845 75 #define DISPLAYIMAGE '\xB3'
kimberlylie99 0:b97c07227845 76 #define DISPLAYVIDEO '\xBB'
kimberlylie99 0:b97c07227845 77 #define DISPLAYFRAME '\xBA'
kimberlylie99 0:b97c07227845 78
kimberlylie99 0:b97c07227845 79
kimberlylie99 0:b97c07227845 80
kimberlylie99 0:b97c07227845 81 // Screen answers
kimberlylie99 0:b97c07227845 82 #define ACK '\x06'
kimberlylie99 0:b97c07227845 83 #define NAK '\x15'
kimberlylie99 0:b97c07227845 84
kimberlylie99 0:b97c07227845 85
kimberlylie99 0:b97c07227845 86
kimberlylie99 0:b97c07227845 87 // Screen states
kimberlylie99 0:b97c07227845 88 #define OFF '\x00'
kimberlylie99 0:b97c07227845 89 #define ON '\x01'
kimberlylie99 0:b97c07227845 90
kimberlylie99 0:b97c07227845 91 // Graphics modes
kimberlylie99 0:b97c07227845 92 #define SOLID '\x00'
kimberlylie99 0:b97c07227845 93 #define WIREFRAME '\x01'
kimberlylie99 0:b97c07227845 94
kimberlylie99 0:b97c07227845 95 // Text modes
kimberlylie99 0:b97c07227845 96 #define TRANSPARENT '\x00'
kimberlylie99 0:b97c07227845 97 #define OPAQUE '\x01'
kimberlylie99 0:b97c07227845 98
kimberlylie99 0:b97c07227845 99 // Fonts Sizes
kimberlylie99 0:b97c07227845 100 #define FONT_7X8 '\x00' //only builtin font
kimberlylie99 0:b97c07227845 101 #define FONT_5X7 '\x04'
kimberlylie99 0:b97c07227845 102 #define FONT_8X8 '\x01'
kimberlylie99 0:b97c07227845 103 #define FONT_8X12 '\x02'
kimberlylie99 0:b97c07227845 104 #define FONT_12X16 '\x03'
kimberlylie99 0:b97c07227845 105 #define MEDIAFONT '\x07'
kimberlylie99 0:b97c07227845 106
kimberlylie99 0:b97c07227845 107
kimberlylie99 0:b97c07227845 108 // Data speed
kimberlylie99 0:b97c07227845 109 #define BAUD_110 27271
kimberlylie99 0:b97c07227845 110 #define BAUD_300 9999
kimberlylie99 0:b97c07227845 111 #define BAUD_600 4999
kimberlylie99 0:b97c07227845 112 #define BAUD_1200 2499
kimberlylie99 0:b97c07227845 113 #define BAUD_2400 1249
kimberlylie99 0:b97c07227845 114 #define BAUD_4800 624
kimberlylie99 0:b97c07227845 115 #define BAUD_9600 312
kimberlylie99 0:b97c07227845 116 #define BAUD_14400 207
kimberlylie99 0:b97c07227845 117 #define BAUD_19200 155
kimberlylie99 0:b97c07227845 118 #define BAUD_31250 95
kimberlylie99 0:b97c07227845 119 #define BAUD_38400 77
kimberlylie99 0:b97c07227845 120 #define BAUD_56000 53
kimberlylie99 0:b97c07227845 121 #define BAUD_57600 51
kimberlylie99 0:b97c07227845 122 #define BAUD_115200 25
kimberlylie99 0:b97c07227845 123 #define BAUD_128000 22
kimberlylie99 0:b97c07227845 124 #define BAUD_256000 11
kimberlylie99 0:b97c07227845 125 #define BAUD_300000 10
kimberlylie99 0:b97c07227845 126 #define BAUD_375000 8
kimberlylie99 0:b97c07227845 127 #define BAUD_500000 6
kimberlylie99 0:b97c07227845 128 #define BAUD_600000 4
kimberlylie99 0:b97c07227845 129 #define BAUD_750000 3
kimberlylie99 0:b97c07227845 130 #define BAUD_1000000 2
kimberlylie99 0:b97c07227845 131 #define BAUD_1500000 1
kimberlylie99 0:b97c07227845 132 #define BAUD_3000000 0
kimberlylie99 0:b97c07227845 133
kimberlylie99 0:b97c07227845 134 // Defined Colors
kimberlylie99 0:b97c07227845 135 #define WHITE 0xFFFFFF
kimberlylie99 0:b97c07227845 136 #define BLACK 0x000000
kimberlylie99 0:b97c07227845 137 #define RED 0xFF0000
kimberlylie99 0:b97c07227845 138 #define GREEN 0x00FF00
kimberlylie99 0:b97c07227845 139 #define BLUE 0x0000FF
kimberlylie99 0:b97c07227845 140 #define LGREY 0xBFBFBF
kimberlylie99 0:b97c07227845 141 #define DGREY 0x5F5F5F
kimberlylie99 0:b97c07227845 142
kimberlylie99 0:b97c07227845 143 // Mode data
kimberlylie99 0:b97c07227845 144 #define BACKLIGHT '\x00'
kimberlylie99 0:b97c07227845 145 #define DISPLAY '\x01'
kimberlylie99 0:b97c07227845 146 #define CONTRAST '\x02'
kimberlylie99 0:b97c07227845 147 #define POWER '\x03'
kimberlylie99 0:b97c07227845 148 #define ORIENTATION '\x04'
kimberlylie99 0:b97c07227845 149 #define TOUCH_CTRL '\x05'
kimberlylie99 0:b97c07227845 150 #define IMAGE_FORMAT '\x06'
kimberlylie99 0:b97c07227845 151 #define PROTECT_FAT '\x08'
kimberlylie99 0:b97c07227845 152
kimberlylie99 0:b97c07227845 153 // change this to your specific screen (newer versions) if needed
kimberlylie99 0:b97c07227845 154 // Startup orientation is PORTRAIT so SIZE_X must be lesser than SIZE_Y
kimberlylie99 0:b97c07227845 155 //uLCD144-G2 is a 128 by 128 pixel display
kimberlylie99 0:b97c07227845 156 #define SIZE_X 128
kimberlylie99 0:b97c07227845 157 #define SIZE_Y 128
kimberlylie99 0:b97c07227845 158
kimberlylie99 0:b97c07227845 159 #define IS_LANDSCAPE 0
kimberlylie99 0:b97c07227845 160 #define IS_PORTRAIT 1
kimberlylie99 0:b97c07227845 161
kimberlylie99 0:b97c07227845 162 // Screen orientation
kimberlylie99 0:b97c07227845 163 #define LANDSCAPE '\x00'
kimberlylie99 0:b97c07227845 164 #define LANDSCAPE_R '\x01'
kimberlylie99 0:b97c07227845 165 #define PORTRAIT '\x02'
kimberlylie99 0:b97c07227845 166 #define PORTRAIT_R '\x03'
kimberlylie99 0:b97c07227845 167
kimberlylie99 0:b97c07227845 168 // Parameters
kimberlylie99 0:b97c07227845 169 #define ENABLE '\x00'
kimberlylie99 0:b97c07227845 170 #define DISABLE '\x01'
kimberlylie99 0:b97c07227845 171 #define RESET '\x02'
kimberlylie99 0:b97c07227845 172
kimberlylie99 0:b97c07227845 173 #define NEW '\x00'
kimberlylie99 0:b97c07227845 174 #define OLD '\x01'
kimberlylie99 0:b97c07227845 175
kimberlylie99 0:b97c07227845 176 #define DOWN '\x00'
kimberlylie99 0:b97c07227845 177 #define UP '\x01'
kimberlylie99 0:b97c07227845 178
kimberlylie99 0:b97c07227845 179 #define PROTECT '\x00'
kimberlylie99 0:b97c07227845 180 #define UNPROTECT '\x02'
kimberlylie99 0:b97c07227845 181
kimberlylie99 0:b97c07227845 182 //**************************************************************************
kimberlylie99 0:b97c07227845 183 // \class uLCD_4DGL uLCD_4DGL.h
kimberlylie99 0:b97c07227845 184 // \brief This is the main class. It shoud be used like this : uLCD_4GDL myLCD(p9,p10,p11);
kimberlylie99 0:b97c07227845 185 /**
kimberlylie99 0:b97c07227845 186 Example:
kimberlylie99 0:b97c07227845 187 * @code
kimberlylie99 0:b97c07227845 188 * // Display a white circle on the screen
kimberlylie99 0:b97c07227845 189 * #include "mbed.h"
kimberlylie99 0:b97c07227845 190 * #include " uLCD_4DGL.h"
kimberlylie99 0:b97c07227845 191 *
kimberlylie99 0:b97c07227845 192 * uLCD_4GDL myLCD(p9,p10,p11);
kimberlylie99 0:b97c07227845 193 *
kimberlylie99 0:b97c07227845 194 * int main() {
kimberlylie99 0:b97c07227845 195 * myLCD.circle(120, 160, 80, WHITE);
kimberlylie99 0:b97c07227845 196 * }
kimberlylie99 0:b97c07227845 197 * @endcode
kimberlylie99 0:b97c07227845 198 */
kimberlylie99 0:b97c07227845 199
kimberlylie99 0:b97c07227845 200 class uLCD_4DGL : public Stream
kimberlylie99 0:b97c07227845 201 {
kimberlylie99 0:b97c07227845 202
kimberlylie99 0:b97c07227845 203 public :
kimberlylie99 0:b97c07227845 204
kimberlylie99 0:b97c07227845 205 uLCD_4DGL(PinName tx, PinName rx, PinName rst);
kimberlylie99 0:b97c07227845 206
kimberlylie99 0:b97c07227845 207 // General Commands *******************************************************************************
kimberlylie99 0:b97c07227845 208
kimberlylie99 0:b97c07227845 209 /** Clear the entire screen using the current background colour */
kimberlylie99 0:b97c07227845 210 void cls();
kimberlylie99 0:b97c07227845 211
kimberlylie99 0:b97c07227845 212 /** Reset screen */
kimberlylie99 0:b97c07227845 213 void reset();
kimberlylie99 0:b97c07227845 214
kimberlylie99 0:b97c07227845 215
kimberlylie99 0:b97c07227845 216 /** Set serial Baud rate (both sides : screen and mbed)
kimberlylie99 0:b97c07227845 217 * @param Speed Correct BAUD value (see uLCD_4DGL.h)
kimberlylie99 0:b97c07227845 218 */
kimberlylie99 0:b97c07227845 219 void baudrate(int speed);
kimberlylie99 0:b97c07227845 220
kimberlylie99 0:b97c07227845 221 /** Set background colour to the specified value
kimberlylie99 0:b97c07227845 222 * @param color in HEX RGB like 0xFF00FF
kimberlylie99 0:b97c07227845 223 */
kimberlylie99 0:b97c07227845 224 void background_color(int color);
kimberlylie99 0:b97c07227845 225
kimberlylie99 0:b97c07227845 226 /** Set screen display mode to specific values
kimberlylie99 0:b97c07227845 227 * @param mode See 4DGL documentation
kimberlylie99 0:b97c07227845 228 * @param value See 4DGL documentation
kimberlylie99 0:b97c07227845 229 */
kimberlylie99 0:b97c07227845 230 void textbackground_color(int color);
kimberlylie99 0:b97c07227845 231
kimberlylie99 0:b97c07227845 232 /** Set screen display mode to specific values
kimberlylie99 0:b97c07227845 233 * @param mode See 4DGL documentation
kimberlylie99 0:b97c07227845 234 * @param value See 4DGL documentation
kimberlylie99 0:b97c07227845 235 */
kimberlylie99 0:b97c07227845 236 void display_control(char mode);
kimberlylie99 0:b97c07227845 237 void display_power(char mode);
kimberlylie99 0:b97c07227845 238 /** Set internal speaker to specified value
kimberlylie99 0:b97c07227845 239 * @param value Correct range is 8 - 127
kimberlylie99 0:b97c07227845 240 */
kimberlylie99 0:b97c07227845 241 void set_volume(char value);
kimberlylie99 0:b97c07227845 242
kimberlylie99 0:b97c07227845 243 // Graphics Commands *******************************************************************************
kimberlylie99 0:b97c07227845 244
kimberlylie99 0:b97c07227845 245 /** Draw a circle centered at x,y with a radius and a colour. It uses Pen Size stored value to draw a solid or wireframe circle
kimberlylie99 0:b97c07227845 246 * @param x Horizontal position of the circle centre
kimberlylie99 0:b97c07227845 247 * @param y Vertical position of the circle centre
kimberlylie99 0:b97c07227845 248 * @param radius Radius of the circle
kimberlylie99 0:b97c07227845 249 * @param color Circle color in HEX RGB like 0xFF00FF
kimberlylie99 0:b97c07227845 250 */
kimberlylie99 0:b97c07227845 251 void circle(int x , int y , int radius, int color);
kimberlylie99 0:b97c07227845 252 void filled_circle(int x , int y , int radius, int color);
kimberlylie99 0:b97c07227845 253 void triangle(int, int, int, int, int, int, int);
kimberlylie99 0:b97c07227845 254 void line(int, int, int, int, int);
kimberlylie99 0:b97c07227845 255 void rectangle(int, int, int, int, int);
kimberlylie99 0:b97c07227845 256 void filled_rectangle(int, int, int, int, int);
kimberlylie99 0:b97c07227845 257 void pixel(int, int, int);
kimberlylie99 0:b97c07227845 258 int read_pixel(int, int);
kimberlylie99 0:b97c07227845 259 void pen_size(char);
kimberlylie99 0:b97c07227845 260 void BLIT(int x, int y, int w, int h, int *colors);
kimberlylie99 0:b97c07227845 261
kimberlylie99 0:b97c07227845 262 // Text Commands
kimberlylie99 0:b97c07227845 263 void set_font(char);
kimberlylie99 0:b97c07227845 264 void set_font_size(char width, char height);
kimberlylie99 0:b97c07227845 265 void text_mode(char);
kimberlylie99 0:b97c07227845 266 void text_bold(char);
kimberlylie99 0:b97c07227845 267 void text_italic(char);
kimberlylie99 0:b97c07227845 268 void text_inverse(char);
kimberlylie99 0:b97c07227845 269 void text_underline(char);
kimberlylie99 0:b97c07227845 270 void text_width(char);
kimberlylie99 0:b97c07227845 271 void text_height(char);
kimberlylie99 0:b97c07227845 272 void text_char(char, char, char, int);
kimberlylie99 0:b97c07227845 273 void text_string(char *, char, char, char, int);
kimberlylie99 0:b97c07227845 274 void locate(char, char);
kimberlylie99 0:b97c07227845 275 void color(int);
kimberlylie99 0:b97c07227845 276 void putc(char);
kimberlylie99 0:b97c07227845 277 void puts(char *);
kimberlylie99 0:b97c07227845 278
kimberlylie99 0:b97c07227845 279 //Media Commands
kimberlylie99 0:b97c07227845 280 int media_init();
kimberlylie99 0:b97c07227845 281 void set_byte_address(int, int);
kimberlylie99 0:b97c07227845 282 void set_sector_address(int, int);
kimberlylie99 0:b97c07227845 283 char read_byte();
kimberlylie99 0:b97c07227845 284 int read_word();
kimberlylie99 0:b97c07227845 285 void write_byte(int);
kimberlylie99 0:b97c07227845 286 void write_word(int);
kimberlylie99 0:b97c07227845 287 void flush_media();
kimberlylie99 0:b97c07227845 288 void display_image(int, int);
kimberlylie99 0:b97c07227845 289 void display_video(int, int);
kimberlylie99 0:b97c07227845 290 void display_frame(int, int, int);
kimberlylie99 0:b97c07227845 291
kimberlylie99 0:b97c07227845 292 // Screen Data
kimberlylie99 0:b97c07227845 293 int type;
kimberlylie99 0:b97c07227845 294 int revision;
kimberlylie99 0:b97c07227845 295 int firmware;
kimberlylie99 0:b97c07227845 296 int reserved1;
kimberlylie99 0:b97c07227845 297 int reserved2;
kimberlylie99 0:b97c07227845 298
kimberlylie99 0:b97c07227845 299 // Text data
kimberlylie99 0:b97c07227845 300 char current_col;
kimberlylie99 0:b97c07227845 301 char current_row;
kimberlylie99 0:b97c07227845 302 int current_color;
kimberlylie99 0:b97c07227845 303 char current_font;
kimberlylie99 0:b97c07227845 304 char current_orientation;
kimberlylie99 0:b97c07227845 305 char max_col;
kimberlylie99 0:b97c07227845 306 char max_row;
kimberlylie99 0:b97c07227845 307 int current_w, current_h;
kimberlylie99 0:b97c07227845 308 int current_fx, current_fy;
kimberlylie99 0:b97c07227845 309 int current_wf, current_hf;
kimberlylie99 0:b97c07227845 310
kimberlylie99 0:b97c07227845 311
kimberlylie99 0:b97c07227845 312 protected :
kimberlylie99 0:b97c07227845 313
kimberlylie99 0:b97c07227845 314 Serial _cmd;
kimberlylie99 0:b97c07227845 315 DigitalOut _rst;
kimberlylie99 0:b97c07227845 316 //used by printf
kimberlylie99 0:b97c07227845 317 virtual int _putc(int c) {
kimberlylie99 0:b97c07227845 318 putc(c);
kimberlylie99 0:b97c07227845 319 return 0;
kimberlylie99 0:b97c07227845 320 };
kimberlylie99 0:b97c07227845 321 virtual int _getc() {
kimberlylie99 0:b97c07227845 322 return -1;
kimberlylie99 0:b97c07227845 323 }
kimberlylie99 0:b97c07227845 324
kimberlylie99 0:b97c07227845 325 void freeBUFFER (void);
kimberlylie99 0:b97c07227845 326 void writeBYTE (char);
kimberlylie99 0:b97c07227845 327 void writeBYTEfast (char);
kimberlylie99 0:b97c07227845 328 int writeCOMMAND(char *, int);
kimberlylie99 0:b97c07227845 329 int writeCOMMANDnull(char *, int);
kimberlylie99 0:b97c07227845 330 int readVERSION (char *, int);
kimberlylie99 0:b97c07227845 331 int getSTATUS (char *, int);
kimberlylie99 0:b97c07227845 332 int version (void);
kimberlylie99 0:b97c07227845 333 #if DEBUGMODE
kimberlylie99 0:b97c07227845 334 Serial pc;
kimberlylie99 0:b97c07227845 335 #endif // DEBUGMODE
kimberlylie99 0:b97c07227845 336 };
kimberlylie99 0:b97c07227845 337
kimberlylie99 0:b97c07227845 338 typedef unsigned char BYTE;
kimberlylie99 0:b97c07227845 339
kimberlylie99 0:b97c07227845 340
kimberlylie99 0:b97c07227845 341
kimberlylie99 0:b97c07227845 342
kimberlylie99 0:b97c07227845 343
kimberlylie99 0:b97c07227845 344
kimberlylie99 0:b97c07227845 345
kimberlylie99 0:b97c07227845 346