Rihards Balass / 4DGL-mbed-32PTU
Committer:
CaptainR
Date:
Fri Sep 09 12:45:28 2016 +0000
Revision:
4:50511ed54ab4
Parent:
3:dcfbceb81fef
Child:
5:890ddd974624
added graphic functions and started on data receive function...;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CaptainR 0:a5ef6bc3c2e8 1 //
CaptainR 2:81eaaa491a02 2 // Picaso_4DGL-32PTU is a class to drive 4D Systems TFT touch screens with PICASO processor
CaptainR 2:81eaaa491a02 3 // Tested with NUCLEO L152RE development board
CaptainR 2:81eaaa491a02 4 // Copyright (C) <2016> Rihards Balass <rihards.balass@gmail.com>
CaptainR 0:a5ef6bc3c2e8 5 //
CaptainR 2:81eaaa491a02 6 // Picaso_4DGL-32PTU is free software: you can redistribute it and/or modify
CaptainR 2:81eaaa491a02 7 // it under the terms of the GNU General Public License as published by
CaptainR 2:81eaaa491a02 8 // the Free Software Foundation, either version 3 of the License, or
CaptainR 2:81eaaa491a02 9 // (at your option) any later version.
CaptainR 2:81eaaa491a02 10 //
CaptainR 2:81eaaa491a02 11 // Picaso_4DGL-32PTU is distributed in the hope that it will be useful,
CaptainR 2:81eaaa491a02 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
CaptainR 2:81eaaa491a02 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
CaptainR 2:81eaaa491a02 14 // GNU General Public License for more details.
CaptainR 2:81eaaa491a02 15 //
CaptainR 2:81eaaa491a02 16 // You can see GNU General Public License at <http://www.gnu.org/licenses/>.
CaptainR 0:a5ef6bc3c2e8 17 //
CaptainR 0:a5ef6bc3c2e8 18
CaptainR 0:a5ef6bc3c2e8 19 #include "mbed.h"
CaptainR 0:a5ef6bc3c2e8 20 #include "Picaso_4DGL-32PTU.h"
CaptainR 0:a5ef6bc3c2e8 21
CaptainR 4:50511ed54ab4 22 DigitalOut led1(LED1);
CaptainR 0:a5ef6bc3c2e8 23
CaptainR 0:a5ef6bc3c2e8 24 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 25 PICASO_4DGL :: PICASO_4DGL(PinName tx, PinName rx, PinName rst) : pc(USBTX, USBRX), _cmd(tx, rx), _rst(rst) { // Constructor
CaptainR 4:50511ed54ab4 26
CaptainR 4:50511ed54ab4 27 rxBuf[bufLen]; // create buffer
CaptainR 4:50511ed54ab4 28
CaptainR 4:50511ed54ab4 29 responseBuild(10);
CaptainR 4:50511ed54ab4 30
CaptainR 0:a5ef6bc3c2e8 31 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 32 pc.baud(115200);
CaptainR 0:a5ef6bc3c2e8 33
CaptainR 0:a5ef6bc3c2e8 34 pc.printf("\n\n\n");
CaptainR 0:a5ef6bc3c2e8 35 pc.printf("********************\n\r");
CaptainR 3:dcfbceb81fef 36 pc.printf("PICASO_4DGL CONSTRUCTOR\n\r");
CaptainR 0:a5ef6bc3c2e8 37 pc.printf("********************\n\r");
CaptainR 0:a5ef6bc3c2e8 38 #endif
CaptainR 0:a5ef6bc3c2e8 39
CaptainR 0:a5ef6bc3c2e8 40 _rst = 1; // put RESET pin to high to start TFT screen
CaptainR 0:a5ef6bc3c2e8 41 //wait_ms(10000);
CaptainR 0:a5ef6bc3c2e8 42 //reset();
CaptainR 0:a5ef6bc3c2e8 43 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 44 pc.printf("Wait 3 seconds for startup...\n\r");
CaptainR 3:dcfbceb81fef 45 #endif
CaptainR 0:a5ef6bc3c2e8 46 wait_ms(3000);
CaptainR 3:dcfbceb81fef 47
CaptainR 0:a5ef6bc3c2e8 48 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 49 pc.printf("set baudrate to 9600...\n\r");
CaptainR 0:a5ef6bc3c2e8 50 #endif
CaptainR 4:50511ed54ab4 51 baudrate(9600);
CaptainR 3:dcfbceb81fef 52
CaptainR 0:a5ef6bc3c2e8 53 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 54 pc.printf("clear screen...\n\r");
CaptainR 0:a5ef6bc3c2e8 55 #endif
CaptainR 0:a5ef6bc3c2e8 56 cls(); // clear screen
CaptainR 3:dcfbceb81fef 57 wait_ms(1000);
CaptainR 0:a5ef6bc3c2e8 58 screenOrientation(1);
CaptainR 0:a5ef6bc3c2e8 59 setFont(3);
CaptainR 3:dcfbceb81fef 60 //graphicsDemo();
CaptainR 0:a5ef6bc3c2e8 61
CaptainR 0:a5ef6bc3c2e8 62 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 63 pc.printf("Start Demo...\n\r");
CaptainR 0:a5ef6bc3c2e8 64 wait_ms(1000);
CaptainR 3:dcfbceb81fef 65 //mainDemo();
CaptainR 0:a5ef6bc3c2e8 66 //textDemo();
CaptainR 3:dcfbceb81fef 67 graphicsDemo();
CaptainR 0:a5ef6bc3c2e8 68 #endif
CaptainR 0:a5ef6bc3c2e8 69 }
CaptainR 0:a5ef6bc3c2e8 70
CaptainR 0:a5ef6bc3c2e8 71 //******************************************************************************************************
CaptainR 4:50511ed54ab4 72 void PICASO_4DGL :: responseBuild(int size) {
CaptainR 0:a5ef6bc3c2e8 73
CaptainR 4:50511ed54ab4 74 response[size] = 0;
CaptainR 0:a5ef6bc3c2e8 75 respLen = 0;
CaptainR 0:a5ef6bc3c2e8 76 }
CaptainR 0:a5ef6bc3c2e8 77
CaptainR 0:a5ef6bc3c2e8 78 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 79 void PICASO_4DGL :: writeBYTE(char c) { // send a BYTE command to screen
CaptainR 0:a5ef6bc3c2e8 80
CaptainR 0:a5ef6bc3c2e8 81 _cmd.putc(c);
CaptainR 0:a5ef6bc3c2e8 82
CaptainR 0:a5ef6bc3c2e8 83 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 84 pc.printf(" Char sent : 0x%02X ",c);
CaptainR 0:a5ef6bc3c2e8 85 pc.putc(c);
CaptainR 0:a5ef6bc3c2e8 86 pc.printf(" \n\r");
CaptainR 0:a5ef6bc3c2e8 87 #endif
CaptainR 0:a5ef6bc3c2e8 88
CaptainR 0:a5ef6bc3c2e8 89 }
CaptainR 0:a5ef6bc3c2e8 90
CaptainR 0:a5ef6bc3c2e8 91 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 92 void PICASO_4DGL :: freeBUFFER(void) { // Clear serial buffer before writing command
CaptainR 0:a5ef6bc3c2e8 93
CaptainR 0:a5ef6bc3c2e8 94 while (_cmd.readable()) _cmd.getc(); // clear buffer garbage
CaptainR 0:a5ef6bc3c2e8 95 }
CaptainR 0:a5ef6bc3c2e8 96
CaptainR 0:a5ef6bc3c2e8 97 //******************************************************************************************************
CaptainR 3:dcfbceb81fef 98 void PICASO_4DGL :: writeCOMMAND(char *command, int number) { // send several BYTES making a command and return an answer
CaptainR 0:a5ef6bc3c2e8 99
CaptainR 0:a5ef6bc3c2e8 100 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 101 pc.printf("\n\r");
CaptainR 0:a5ef6bc3c2e8 102 pc.printf("New COMMAND : 0x%02X%02X\n\r", command[0], command[1]);
CaptainR 0:a5ef6bc3c2e8 103 #endif
CaptainR 0:a5ef6bc3c2e8 104 int i;
CaptainR 0:a5ef6bc3c2e8 105 freeBUFFER();
CaptainR 0:a5ef6bc3c2e8 106
CaptainR 0:a5ef6bc3c2e8 107 for (i = 0; i < number; i++) writeBYTE(command[i]); // send command to serial port
CaptainR 0:a5ef6bc3c2e8 108
CaptainR 0:a5ef6bc3c2e8 109 getResponse();
CaptainR 0:a5ef6bc3c2e8 110 }
CaptainR 0:a5ef6bc3c2e8 111
CaptainR 0:a5ef6bc3c2e8 112 //**************************************************************************
CaptainR 3:dcfbceb81fef 113 void PICASO_4DGL :: reset() { // Reset Screen
CaptainR 0:a5ef6bc3c2e8 114
CaptainR 0:a5ef6bc3c2e8 115 _rst = 0; // put RESET pin to low
CaptainR 0:a5ef6bc3c2e8 116 wait_ms(TEMPO); // wait a few milliseconds for command reception
CaptainR 0:a5ef6bc3c2e8 117 _rst = 1; // put RESET back to high
CaptainR 0:a5ef6bc3c2e8 118 wait(3); // wait 3s for screen to restart
CaptainR 0:a5ef6bc3c2e8 119
CaptainR 0:a5ef6bc3c2e8 120 freeBUFFER(); // clean buffer from possible garbage
CaptainR 0:a5ef6bc3c2e8 121 }
CaptainR 0:a5ef6bc3c2e8 122
CaptainR 0:a5ef6bc3c2e8 123 //**************************************************************************
CaptainR 3:dcfbceb81fef 124 void PICASO_4DGL :: baudrate(long speed) { // set screen baud rate
CaptainR 0:a5ef6bc3c2e8 125
CaptainR 0:a5ef6bc3c2e8 126 char command[4]= "";
CaptainR 2:81eaaa491a02 127 command[0] = (BAUDRATE >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 128 command[1] = (BAUDRATE >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 129 switch (speed) {
CaptainR 0:a5ef6bc3c2e8 130 case 300 :
CaptainR 2:81eaaa491a02 131 command[2] = (BAUD_300 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 132 command[3] = (BAUD_300 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 133 break;
CaptainR 0:a5ef6bc3c2e8 134 case 600 :
CaptainR 2:81eaaa491a02 135 command[2] = (BAUD_600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 136 command[3] = (BAUD_600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 137 break;
CaptainR 0:a5ef6bc3c2e8 138 case 1200 :
CaptainR 2:81eaaa491a02 139 command[2] = (BAUD_1200 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 140 command[3] = (BAUD_1200 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 141 break;
CaptainR 0:a5ef6bc3c2e8 142 case 2400 :
CaptainR 2:81eaaa491a02 143 command[2] = (BAUD_2400 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 144 command[3] = (BAUD_2400 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 145 break;
CaptainR 0:a5ef6bc3c2e8 146 case 4800 :
CaptainR 2:81eaaa491a02 147 command[2] = (BAUD_4800 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 148 command[3] = (BAUD_4800 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 149 break;
CaptainR 0:a5ef6bc3c2e8 150 case 9600 :
CaptainR 2:81eaaa491a02 151 command[2] = (BAUD_9600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 152 command[3] = (BAUD_9600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 153 break;
CaptainR 0:a5ef6bc3c2e8 154 case 14400 :
CaptainR 2:81eaaa491a02 155 command[2] = (BAUD_14400 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 156 command[3] = (BAUD_14400 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 157 break;
CaptainR 0:a5ef6bc3c2e8 158 case 19200 :
CaptainR 2:81eaaa491a02 159 command[2] = (BAUD_19200 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 160 command[3] = (BAUD_19200 >> (8*0)) & 0xff;
CaptainR 2:81eaaa491a02 161 break;
CaptainR 2:81eaaa491a02 162 case 31250 :
CaptainR 2:81eaaa491a02 163 command[2] = (BAUD_31250 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 164 command[3] = (BAUD_31250 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 165 break;
CaptainR 0:a5ef6bc3c2e8 166 case 38400 :
CaptainR 2:81eaaa491a02 167 command[2] = (BAUD_38400 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 168 command[3] = (BAUD_38400 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 169 break;
CaptainR 0:a5ef6bc3c2e8 170 case 56000 :
CaptainR 2:81eaaa491a02 171 command[2] = (BAUD_56000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 172 command[3] = (BAUD_56000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 173 break;
CaptainR 0:a5ef6bc3c2e8 174 case 57600 :
CaptainR 2:81eaaa491a02 175 command[2] = (BAUD_57600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 176 command[3] = (BAUD_57600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 177 break;
CaptainR 0:a5ef6bc3c2e8 178 case 115200 :
CaptainR 2:81eaaa491a02 179 command[2] = (BAUD_115200 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 180 command[3] = (BAUD_115200 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 181 break;
CaptainR 0:a5ef6bc3c2e8 182 case 128000 :
CaptainR 2:81eaaa491a02 183 command[2] = (BAUD_128000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 184 command[3] = (BAUD_128000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 185 break;
CaptainR 0:a5ef6bc3c2e8 186 case 256000 :
CaptainR 2:81eaaa491a02 187 command[2] = (BAUD_256000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 188 command[3] = (BAUD_256000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 189 break;
CaptainR 0:a5ef6bc3c2e8 190 case 300000 :
CaptainR 2:81eaaa491a02 191 command[2] = (BAUD_300000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 192 command[3] = (BAUD_300000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 193 break;
CaptainR 0:a5ef6bc3c2e8 194 case 375000 :
CaptainR 2:81eaaa491a02 195 command[2] = (BAUD_375000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 196 command[3] = (BAUD_375000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 197 break;
CaptainR 0:a5ef6bc3c2e8 198 case 500000 :
CaptainR 2:81eaaa491a02 199 command[2] = (BAUD_500000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 200 command[3] = (BAUD_500000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 201 break;
CaptainR 0:a5ef6bc3c2e8 202 case 600000 :
CaptainR 2:81eaaa491a02 203 command[2] = (BAUD_600000 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 204 command[3] = (BAUD_600000 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 205 break;
CaptainR 0:a5ef6bc3c2e8 206 default :
CaptainR 2:81eaaa491a02 207 command[2] = (BAUD_9600 >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 208 command[3] = (BAUD_9600 >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 209 speed = 9600;
CaptainR 0:a5ef6bc3c2e8 210 break;
CaptainR 0:a5ef6bc3c2e8 211 }
CaptainR 0:a5ef6bc3c2e8 212
CaptainR 0:a5ef6bc3c2e8 213 #if DEBUGMODE
CaptainR 0:a5ef6bc3c2e8 214 pc.printf("\n\r");
CaptainR 0:a5ef6bc3c2e8 215 pc.printf("New COMMAND : 0x%02X%02X\n\r", command[0], command[1]);
CaptainR 0:a5ef6bc3c2e8 216 #endif
CaptainR 0:a5ef6bc3c2e8 217
CaptainR 0:a5ef6bc3c2e8 218 int i;
CaptainR 0:a5ef6bc3c2e8 219 freeBUFFER();
CaptainR 0:a5ef6bc3c2e8 220
CaptainR 0:a5ef6bc3c2e8 221 //Change baudrates - as instructed by 4DGL
CaptainR 0:a5ef6bc3c2e8 222 if (speed == 128000) speed = 133928;
CaptainR 0:a5ef6bc3c2e8 223 if (speed == 256000) speed = 282353;
CaptainR 0:a5ef6bc3c2e8 224 if (speed == 300000) speed = 312500;
CaptainR 0:a5ef6bc3c2e8 225 if (speed == 375000) speed = 401785;
CaptainR 0:a5ef6bc3c2e8 226 if (speed == 500000) speed = 562500;
CaptainR 0:a5ef6bc3c2e8 227 if (speed == 600000) speed = 703125;
CaptainR 0:a5ef6bc3c2e8 228
CaptainR 0:a5ef6bc3c2e8 229 for (i = 0; i <4; i++) writeBYTE(command[i]); // send command to serial port
CaptainR 0:a5ef6bc3c2e8 230 _cmd.baud(speed); // set mbed to same speed
CaptainR 0:a5ef6bc3c2e8 231
CaptainR 0:a5ef6bc3c2e8 232 getResponse();
CaptainR 0:a5ef6bc3c2e8 233 }
CaptainR 0:a5ef6bc3c2e8 234
CaptainR 0:a5ef6bc3c2e8 235 //**************************************************************************
CaptainR 3:dcfbceb81fef 236 void PICASO_4DGL :: getResponse() {
CaptainR 0:a5ef6bc3c2e8 237
CaptainR 4:50511ed54ab4 238 //clearResponse();
CaptainR 4:50511ed54ab4 239 int k = 0, temp = 0, resp = 0;
CaptainR 4:50511ed54ab4 240 char response[1] = "";
CaptainR 4:50511ed54ab4 241
CaptainR 4:50511ed54ab4 242 while (!_cmd.readable()) wait_ms(TEMPO); // wait for screen answer
CaptainR 4:50511ed54ab4 243
CaptainR 0:a5ef6bc3c2e8 244 while (_cmd.readable()) {
CaptainR 4:50511ed54ab4 245 // temp = ;
CaptainR 4:50511ed54ab4 246 response[resp++] = _cmd.getc();
CaptainR 0:a5ef6bc3c2e8 247 }
CaptainR 3:dcfbceb81fef 248
CaptainR 4:50511ed54ab4 249 pc.printf("\n\r RESP = %d\n\r", resp);
CaptainR 4:50511ed54ab4 250 while (k < resp) {// print everything
CaptainR 4:50511ed54ab4 251 pc.printf(" Response: %02X ", response[k++]);
CaptainR 4:50511ed54ab4 252 }
CaptainR 4:50511ed54ab4 253 pc.printf("\n\r");
CaptainR 3:dcfbceb81fef 254
CaptainR 0:a5ef6bc3c2e8 255 }
CaptainR 0:a5ef6bc3c2e8 256
CaptainR 0:a5ef6bc3c2e8 257 //**************************************************************************
CaptainR 3:dcfbceb81fef 258 void PICASO_4DGL :: screenOrientation(char c) { // select screen orientation
CaptainR 0:a5ef6bc3c2e8 259 char command[4] = "";
CaptainR 2:81eaaa491a02 260 command[0] = (ORIENTATION >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 261 command[1] = (ORIENTATION >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 262
CaptainR 0:a5ef6bc3c2e8 263 switch (c) {
CaptainR 0:a5ef6bc3c2e8 264 case 1 :
CaptainR 2:81eaaa491a02 265 command[2] = (LANDSCAPE >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 266 command[3] = (LANDSCAPE >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 267 currentOrientation = 1;
CaptainR 0:a5ef6bc3c2e8 268 break;
CaptainR 0:a5ef6bc3c2e8 269 case 2 :
CaptainR 2:81eaaa491a02 270 command[2] = (LANDSCAPE_R >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 271 command[3] = (LANDSCAPE_R >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 272 currentOrientation = 2;
CaptainR 0:a5ef6bc3c2e8 273 break;
CaptainR 0:a5ef6bc3c2e8 274 case 3 :
CaptainR 2:81eaaa491a02 275 command[2] = (PORTRAIT >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 276 command[3] = (PORTRAIT >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 277 currentOrientation = 3;
CaptainR 0:a5ef6bc3c2e8 278 break;
CaptainR 0:a5ef6bc3c2e8 279 case 4 :
CaptainR 2:81eaaa491a02 280 command[2] = (PORTRAIT_R >> (8*1)) & 0xff;
CaptainR 2:81eaaa491a02 281 command[3] = (PORTRAIT_R >> (8*0)) & 0xff;
CaptainR 0:a5ef6bc3c2e8 282 currentOrientation = 4;
CaptainR 0:a5ef6bc3c2e8 283 break;
CaptainR 0:a5ef6bc3c2e8 284 }
CaptainR 0:a5ef6bc3c2e8 285
CaptainR 0:a5ef6bc3c2e8 286 writeCOMMAND(command, 4);
CaptainR 0:a5ef6bc3c2e8 287 }
CaptainR 4:50511ed54ab4 288
CaptainR 4:50511ed54ab4 289 //**************************************************************************
CaptainR 4:50511ed54ab4 290 void PICASO_4DGL :: clearResponse() {
CaptainR 4:50511ed54ab4 291 for (int i = 0; i < 10; i++)
CaptainR 4:50511ed54ab4 292 response[i] = '0';
CaptainR 4:50511ed54ab4 293 }