Interface layer for the mbed boards ready for the JAVA library

Dependencies:   C12832 LM75B MMA7660 mbed FXOS8700Q

Fork of frdm_serial by Michael Berry

Committer:
Condo2k4
Date:
Tue Dec 01 15:00:12 2015 +0000
Revision:
4:39e949908fc5
Parent:
3:990f8380da21
Child:
5:d9f8c2f63323
Various updates.; - LEDs, LCD and Temp working.;  - Interrupts cannot interfere with data transmits.;  - Can read from mag and accel, but cannot confirm returned values are correct yet.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
azazeal88 1:38f32fc3db2c 1 #include "mbed.h"
co657_mjrb6 0:6891aea05ef2 2 #include "C12832.h"
co657_mjrb6 0:6891aea05ef2 3 #include "LM75B.h"
azazeal88 1:38f32fc3db2c 4 #include "MMA7660.h"
Condo2k4 4:39e949908fc5 5 #include "FXOS8700Q.h"
Condo2k4 4:39e949908fc5 6 #include "comms.h"
Condo2k4 4:39e949908fc5 7 #include "CalibrateMagneto.h"
azazeal88 1:38f32fc3db2c 8
azazeal88 1:38f32fc3db2c 9 //OUTPUTS
azazeal88 1:38f32fc3db2c 10
Condo2k4 4:39e949908fc5 11 DigitalOut lr(PTB22), lg(PTE26), lb(PTB21), xr(D5), xg(D9), xb(PTC12);
azazeal88 1:38f32fc3db2c 12 C12832 lcd(D11, D13, D12, D7, D10);
co657_mjrb6 0:6891aea05ef2 13
azazeal88 1:38f32fc3db2c 14 //INPUTS
azazeal88 1:38f32fc3db2c 15
azazeal88 1:38f32fc3db2c 16 LM75B temp(D14, D15);
Condo2k4 4:39e949908fc5 17 MMA7660 sAcc(D14, D15);
Condo2k4 4:39e949908fc5 18
Condo2k4 4:39e949908fc5 19 FXOS8700Q_acc bAcc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board
Condo2k4 4:39e949908fc5 20 FXOS8700Q_mag bMag( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board
Condo2k4 4:39e949908fc5 21 CalibrateMagneto magCal;
azazeal88 1:38f32fc3db2c 22
Condo2k4 3:990f8380da21 23 InterruptIn sw2_int(SW2), sw3_int(SW3), up_int(A2), down_int(A3), left_int(A4), right_int(A5), fire_int(D4);
Condo2k4 3:990f8380da21 24 DigitalIn sw2(SW2), sw3(SW3), up(A2), down(A3), left(A4), right(A5), fire(D4);
azazeal88 1:38f32fc3db2c 25
azazeal88 1:38f32fc3db2c 26 AnalogIn pot1(A0), pot2(A1);
co657_mjrb6 0:6891aea05ef2 27
Condo2k4 3:990f8380da21 28 //INTERRUPT FLAGS
co657_mjrb6 0:6891aea05ef2 29
azazeal88 1:38f32fc3db2c 30 uint16_t flags;
azazeal88 1:38f32fc3db2c 31 #define SW2_DOWN 0x0001
azazeal88 1:38f32fc3db2c 32 #define SW2_UP 0x0002
azazeal88 1:38f32fc3db2c 33 #define SW3_UP 0x0004
azazeal88 1:38f32fc3db2c 34 #define SW3_DOWN 0x0008
azazeal88 1:38f32fc3db2c 35 #define UP_UP 0x0010
azazeal88 1:38f32fc3db2c 36 #define UP_DOWN 0x0020
azazeal88 1:38f32fc3db2c 37 #define DOWN_UP 0x0040
azazeal88 1:38f32fc3db2c 38 #define DOWN_DOWN 0x0080
azazeal88 1:38f32fc3db2c 39 #define LEFT_UP 0x0100
azazeal88 1:38f32fc3db2c 40 #define LEFT_DOWN 0x0200
azazeal88 1:38f32fc3db2c 41 #define RIGHT_UP 0x0400
azazeal88 1:38f32fc3db2c 42 #define RIGHT_DOWN 0x0800
azazeal88 1:38f32fc3db2c 43 #define FIRE_UP 0x1000
azazeal88 1:38f32fc3db2c 44 #define FIRE_DOWN 0x2000
co657_mjrb6 0:6891aea05ef2 45
azazeal88 1:38f32fc3db2c 46 //COMMS
co657_mjrb6 0:6891aea05ef2 47
Condo2k4 4:39e949908fc5 48 DataSerial pc(USBTX, USBRX);
co657_mjrb6 0:6891aea05ef2 49
Condo2k4 2:2dcdbb85cae0 50 //INTERRUPT HANDLERS
Condo2k4 2:2dcdbb85cae0 51
azazeal88 1:38f32fc3db2c 52 void sw2Down(){ flags |= SW2_DOWN; }
azazeal88 1:38f32fc3db2c 53 void sw2Up() { flags |= SW2_UP; }
azazeal88 1:38f32fc3db2c 54
azazeal88 1:38f32fc3db2c 55 void sw3Down(){ flags |= SW3_DOWN; }
azazeal88 1:38f32fc3db2c 56 void sw3Up() { flags |= SW3_UP; }
azazeal88 1:38f32fc3db2c 57
azazeal88 1:38f32fc3db2c 58 void upDown(){ flags |= UP_DOWN; }
azazeal88 1:38f32fc3db2c 59 void upUp() { flags |= UP_UP; }
azazeal88 1:38f32fc3db2c 60
azazeal88 1:38f32fc3db2c 61 void downDown(){ flags |= DOWN_DOWN; }
azazeal88 1:38f32fc3db2c 62 void downUp() { flags |= DOWN_UP; }
azazeal88 1:38f32fc3db2c 63
azazeal88 1:38f32fc3db2c 64 void leftDown(){ flags |= LEFT_DOWN; }
azazeal88 1:38f32fc3db2c 65 void leftUp() { flags |= LEFT_UP; }
azazeal88 1:38f32fc3db2c 66
azazeal88 1:38f32fc3db2c 67 void rightDown(){ flags |= RIGHT_DOWN; }
azazeal88 1:38f32fc3db2c 68 void rightUp() { flags |= RIGHT_UP; }
azazeal88 1:38f32fc3db2c 69
azazeal88 1:38f32fc3db2c 70 void fireDown(){ flags |= FIRE_DOWN; }
azazeal88 1:38f32fc3db2c 71 void fireUp() { flags |= FIRE_UP; }
azazeal88 1:38f32fc3db2c 72
Condo2k4 4:39e949908fc5 73 //PRETTY WAITING LEDS (Modified from Fred Barnes)
Condo2k4 4:39e949908fc5 74
Condo2k4 4:39e949908fc5 75 Ticker waitTicker;
Condo2k4 4:39e949908fc5 76 int ctr;
Condo2k4 4:39e949908fc5 77
Condo2k4 4:39e949908fc5 78 void waitTick() {
Condo2k4 4:39e949908fc5 79 switch(ctr) {
Condo2k4 4:39e949908fc5 80 case 0:
Condo2k4 4:39e949908fc5 81 xr=xg=0; xb=1; break;
Condo2k4 4:39e949908fc5 82 case 1:
Condo2k4 4:39e949908fc5 83 xr=0; xg=xb=1; break;
Condo2k4 4:39e949908fc5 84 case 2:
Condo2k4 4:39e949908fc5 85 xr=xb=0; xg=1; break;
Condo2k4 4:39e949908fc5 86 case 3:
Condo2k4 4:39e949908fc5 87 xb=0; xr=xg=1; break;
Condo2k4 4:39e949908fc5 88 case 4:
Condo2k4 4:39e949908fc5 89 xg=xb=0; xr=1; break;
Condo2k4 4:39e949908fc5 90 case 5:
Condo2k4 4:39e949908fc5 91 xg=0; xr=xb=1; ctr=0; return;
Condo2k4 4:39e949908fc5 92 }
Condo2k4 4:39e949908fc5 93 ctr++;
Condo2k4 4:39e949908fc5 94 }
Condo2k4 4:39e949908fc5 95
Condo2k4 4:39e949908fc5 96 void cleanup() {
Condo2k4 4:39e949908fc5 97 lr = lg = lb = 1;
Condo2k4 4:39e949908fc5 98 xr = xg = xb = 1.0;
Condo2k4 4:39e949908fc5 99 temp.read();
Condo2k4 4:39e949908fc5 100 lcd.cls();
Condo2k4 4:39e949908fc5 101
Condo2k4 4:39e949908fc5 102 bAcc.enable();
Condo2k4 4:39e949908fc5 103 bMag.enable();
Condo2k4 4:39e949908fc5 104
Condo2k4 4:39e949908fc5 105 pc.sendChar('+');
Condo2k4 4:39e949908fc5 106 }
Condo2k4 4:39e949908fc5 107
Condo2k4 2:2dcdbb85cae0 108 /*
Condo2k4 2:2dcdbb85cae0 109 Return the state of a requested pin
Condo2k4 2:2dcdbb85cae0 110 */
azazeal88 1:38f32fc3db2c 111 void readDigitalIn() {
azazeal88 1:38f32fc3db2c 112 bool val;
azazeal88 1:38f32fc3db2c 113 switch(pc.getc()) {
azazeal88 1:38f32fc3db2c 114 case '2': val=sw2; break;
Condo2k4 2:2dcdbb85cae0 115 case '3': val=sw3; break;
azazeal88 1:38f32fc3db2c 116 case 'u': val=up; break;
azazeal88 1:38f32fc3db2c 117 case 'd': val=down; break;
azazeal88 1:38f32fc3db2c 118 case 'l': val=left; break;
azazeal88 1:38f32fc3db2c 119 case 'r': val=right; break;
azazeal88 1:38f32fc3db2c 120 case 'f': val=fire; break;
azazeal88 1:38f32fc3db2c 121 default: return;
co657_mjrb6 0:6891aea05ef2 122 }
Condo2k4 4:39e949908fc5 123 char c = val?'t':'f';
Condo2k4 4:39e949908fc5 124 pc.sendChar(c);
co657_mjrb6 0:6891aea05ef2 125 }
co657_mjrb6 0:6891aea05ef2 126
Condo2k4 2:2dcdbb85cae0 127 /*
Condo2k4 2:2dcdbb85cae0 128 Return the state of a requested potentiometer
Condo2k4 2:2dcdbb85cae0 129 */
azazeal88 1:38f32fc3db2c 130 void readPot() {
azazeal88 1:38f32fc3db2c 131 float val;
azazeal88 1:38f32fc3db2c 132 switch(pc.getc()) {
azazeal88 1:38f32fc3db2c 133 case '1': val=pot1; break;
azazeal88 1:38f32fc3db2c 134 case '2': val=pot2; break;
azazeal88 1:38f32fc3db2c 135 default: return;
azazeal88 1:38f32fc3db2c 136 }
Condo2k4 4:39e949908fc5 137
Condo2k4 4:39e949908fc5 138 pc.sendFloat(val);
Condo2k4 3:990f8380da21 139 }
Condo2k4 3:990f8380da21 140
Condo2k4 4:39e949908fc5 141 float getHeading() {
Condo2k4 4:39e949908fc5 142 MotionSensorDataUnits mag;
Condo2k4 4:39e949908fc5 143 bMag.getAxis(mag);
Condo2k4 4:39e949908fc5 144 float cal[3];
Condo2k4 4:39e949908fc5 145 cal[0]=mag.x;
Condo2k4 4:39e949908fc5 146 cal[1]=mag.y;
Condo2k4 4:39e949908fc5 147 cal[2]=mag.z;
Condo2k4 4:39e949908fc5 148 magCal.run(cal,cal);
Condo2k4 4:39e949908fc5 149 return atan2(-cal[1],cal[0])-0.4333f;
Condo2k4 3:990f8380da21 150 }
Condo2k4 3:990f8380da21 151
Condo2k4 3:990f8380da21 152 int main() {
azazeal88 1:38f32fc3db2c 153 //SETUP
Condo2k4 3:990f8380da21 154 pc.baud(9600);
azazeal88 1:38f32fc3db2c 155
Condo2k4 3:990f8380da21 156 lr = lg = lb = 1;
Condo2k4 4:39e949908fc5 157 xr = xg = xb = 1.0;
co657_mjrb6 0:6891aea05ef2 158
co657_mjrb6 0:6891aea05ef2 159 sw2_int.mode (PullUp);
co657_mjrb6 0:6891aea05ef2 160 sw2_int.fall(&sw2Down);
co657_mjrb6 0:6891aea05ef2 161 sw2_int.rise(&sw2Up);
co657_mjrb6 0:6891aea05ef2 162
co657_mjrb6 0:6891aea05ef2 163 sw3_int.mode (PullUp);
co657_mjrb6 0:6891aea05ef2 164 sw3_int.fall(&sw3Down);
co657_mjrb6 0:6891aea05ef2 165 sw3_int.rise(&sw3Up);
co657_mjrb6 0:6891aea05ef2 166
azazeal88 1:38f32fc3db2c 167 up_int.mode (PullUp);
Condo2k4 4:39e949908fc5 168 up_int.rise(&upDown);
Condo2k4 4:39e949908fc5 169 up_int.fall(&upUp);
azazeal88 1:38f32fc3db2c 170
azazeal88 1:38f32fc3db2c 171 down_int.mode (PullUp);
Condo2k4 4:39e949908fc5 172 down_int.rise(&downDown);
Condo2k4 4:39e949908fc5 173 down_int.fall(&downUp);
azazeal88 1:38f32fc3db2c 174
azazeal88 1:38f32fc3db2c 175 left_int.mode (PullUp);
Condo2k4 4:39e949908fc5 176 left_int.rise(&leftDown);
Condo2k4 4:39e949908fc5 177 left_int.fall(&leftUp);
azazeal88 1:38f32fc3db2c 178
azazeal88 1:38f32fc3db2c 179 right_int.mode (PullUp);
Condo2k4 4:39e949908fc5 180 right_int.rise(&rightDown);
Condo2k4 4:39e949908fc5 181 right_int.fall(&rightUp);
azazeal88 1:38f32fc3db2c 182
azazeal88 1:38f32fc3db2c 183 fire_int.mode (PullUp);
Condo2k4 4:39e949908fc5 184 fire_int.rise(&fireDown);
Condo2k4 4:39e949908fc5 185 fire_int.fall(&fireUp);
co657_mjrb6 0:6891aea05ef2 186
Condo2k4 3:990f8380da21 187 //Pretty wait
Condo2k4 3:990f8380da21 188 ctr=0;
Condo2k4 3:990f8380da21 189 lcd.locate(0,0);
Condo2k4 3:990f8380da21 190 lcd.printf("Awaiting connection...");
Condo2k4 4:39e949908fc5 191 waitTicker.attach(&waitTick,0.5);
Condo2k4 4:39e949908fc5 192 while((!pc.readable()) && (pc.getc()!='-')) sleep();
Condo2k4 3:990f8380da21 193 waitTicker.detach();
Condo2k4 3:990f8380da21 194 cleanup();
Condo2k4 3:990f8380da21 195
azazeal88 1:38f32fc3db2c 196 for(;;) {
Condo2k4 2:2dcdbb85cae0 197 //Check if any interrupts fired
azazeal88 1:38f32fc3db2c 198 if(flags&SW2_UP) {
Condo2k4 3:990f8380da21 199 flags&=!SW2_UP;
Condo2k4 4:39e949908fc5 200 pc.sendSpecialCommand('2','u');
azazeal88 1:38f32fc3db2c 201 }
azazeal88 1:38f32fc3db2c 202 if(flags&SW2_DOWN) {
Condo2k4 3:990f8380da21 203 flags&=!SW2_DOWN;
Condo2k4 4:39e949908fc5 204 pc.sendSpecialCommand('2','d');
azazeal88 1:38f32fc3db2c 205 }
azazeal88 1:38f32fc3db2c 206 if(flags&SW3_UP) {
Condo2k4 3:990f8380da21 207 flags&=!SW3_UP;
Condo2k4 4:39e949908fc5 208 pc.sendSpecialCommand('3','u');
azazeal88 1:38f32fc3db2c 209 }
azazeal88 1:38f32fc3db2c 210 if(flags&SW3_DOWN) {
Condo2k4 3:990f8380da21 211 flags&=!SW3_DOWN;
Condo2k4 4:39e949908fc5 212 pc.sendSpecialCommand('3','d');
azazeal88 1:38f32fc3db2c 213 }
azazeal88 1:38f32fc3db2c 214 if(flags&UP_UP) {
Condo2k4 3:990f8380da21 215 flags&=!UP_UP;
Condo2k4 4:39e949908fc5 216 pc.sendSpecialCommand('u','u');
azazeal88 1:38f32fc3db2c 217 }
azazeal88 1:38f32fc3db2c 218 if(flags&UP_DOWN) {
Condo2k4 3:990f8380da21 219 flags&=!UP_DOWN;
Condo2k4 4:39e949908fc5 220 pc.sendSpecialCommand('u','d');
co657_mjrb6 0:6891aea05ef2 221 }
azazeal88 1:38f32fc3db2c 222 if(flags&DOWN_UP) {
Condo2k4 3:990f8380da21 223 flags&=!DOWN_UP;
Condo2k4 4:39e949908fc5 224 pc.sendSpecialCommand('d','u');
azazeal88 1:38f32fc3db2c 225 }
azazeal88 1:38f32fc3db2c 226 if(flags&DOWN_DOWN) {
Condo2k4 3:990f8380da21 227 flags&=!DOWN_DOWN;
Condo2k4 4:39e949908fc5 228 pc.sendSpecialCommand('d','d');
azazeal88 1:38f32fc3db2c 229 }
azazeal88 1:38f32fc3db2c 230 if(flags&LEFT_UP) {
Condo2k4 3:990f8380da21 231 flags&=!LEFT_UP;
Condo2k4 4:39e949908fc5 232 pc.sendSpecialCommand('l','u');
azazeal88 1:38f32fc3db2c 233 }
azazeal88 1:38f32fc3db2c 234 if(flags&LEFT_DOWN) {
Condo2k4 3:990f8380da21 235 flags&=!LEFT_DOWN;
Condo2k4 4:39e949908fc5 236 pc.sendSpecialCommand('l','d');
co657_mjrb6 0:6891aea05ef2 237 }
azazeal88 1:38f32fc3db2c 238 if(flags&RIGHT_UP) {
Condo2k4 3:990f8380da21 239 flags&=!RIGHT_UP;
Condo2k4 4:39e949908fc5 240 pc.sendSpecialCommand('r','u');
azazeal88 1:38f32fc3db2c 241 }
azazeal88 1:38f32fc3db2c 242 if(flags&RIGHT_DOWN) {
Condo2k4 3:990f8380da21 243 flags&=!RIGHT_DOWN;
Condo2k4 4:39e949908fc5 244 pc.sendSpecialCommand('r','d');
azazeal88 1:38f32fc3db2c 245 }
azazeal88 1:38f32fc3db2c 246 if(flags&FIRE_UP) {
Condo2k4 3:990f8380da21 247 flags&=!FIRE_UP;
Condo2k4 4:39e949908fc5 248 pc.sendSpecialCommand('f','u');
azazeal88 1:38f32fc3db2c 249 }
azazeal88 1:38f32fc3db2c 250 if(flags&FIRE_DOWN) {
Condo2k4 3:990f8380da21 251 flags&=!FIRE_DOWN;
Condo2k4 4:39e949908fc5 252 pc.sendSpecialCommand('f','d');
co657_mjrb6 0:6891aea05ef2 253 }
azazeal88 1:38f32fc3db2c 254
azazeal88 1:38f32fc3db2c 255 //Check for host requests
co657_mjrb6 0:6891aea05ef2 256 if(pc.readable()) {
Condo2k4 3:990f8380da21 257 char cmd = pc.getc();
Condo2k4 3:990f8380da21 258 switch(cmd) {
azazeal88 1:38f32fc3db2c 259 case 'R': { //read digital input
azazeal88 1:38f32fc3db2c 260 readDigitalIn();
azazeal88 1:38f32fc3db2c 261 break;
azazeal88 1:38f32fc3db2c 262 }
azazeal88 1:38f32fc3db2c 263 case 'p': {
azazeal88 1:38f32fc3db2c 264 readPot();
Condo2k4 3:990f8380da21 265 break;
azazeal88 1:38f32fc3db2c 266 }
azazeal88 1:38f32fc3db2c 267 case 't': { //read temp
Condo2k4 3:990f8380da21 268 float t = temp.read();
Condo2k4 4:39e949908fc5 269 pc.sendFloat(t);
azazeal88 1:38f32fc3db2c 270 break;
azazeal88 1:38f32fc3db2c 271 }
azazeal88 1:38f32fc3db2c 272 case 'a': {//read shield accel
Condo2k4 3:990f8380da21 273 float x, y, z;
Condo2k4 4:39e949908fc5 274 x = sAcc.x();
Condo2k4 4:39e949908fc5 275 y = sAcc.y();
Condo2k4 4:39e949908fc5 276 z = sAcc.z();
Condo2k4 4:39e949908fc5 277 pc.sendFloat(x);
Condo2k4 4:39e949908fc5 278 pc.sendFloat(y);
Condo2k4 4:39e949908fc5 279 pc.sendFloat(z);
azazeal88 1:38f32fc3db2c 280 break;
azazeal88 1:38f32fc3db2c 281 }
azazeal88 1:38f32fc3db2c 282 case 'l': { //shield led
Condo2k4 4:39e949908fc5 283 char raw = pc.getc();
Condo2k4 4:39e949908fc5 284 char r = ((raw>>2)&1)^1;
Condo2k4 4:39e949908fc5 285 char g = ((raw>>1)&1)^1;
Condo2k4 4:39e949908fc5 286 char b = (raw&1)^1;
Condo2k4 4:39e949908fc5 287 xr = r; xg = g; xb = b;
Condo2k4 4:39e949908fc5 288 break;
Condo2k4 4:39e949908fc5 289 }
Condo2k4 4:39e949908fc5 290 case 'o': { //read shield accel orientation
Condo2k4 4:39e949908fc5 291 MMA7660::Orientation o = sAcc.getOrientation();
Condo2k4 4:39e949908fc5 292 pc.sendChar((char)o);
Condo2k4 4:39e949908fc5 293 break;
Condo2k4 4:39e949908fc5 294 }
Condo2k4 4:39e949908fc5 295 case 's': { //read shield accel orientation
Condo2k4 4:39e949908fc5 296 MMA7660::Orientation o = sAcc.getSide();
Condo2k4 4:39e949908fc5 297 pc.sendChar((char)o);
Condo2k4 4:39e949908fc5 298 break;
Condo2k4 4:39e949908fc5 299 }
Condo2k4 4:39e949908fc5 300 case 'h': {
Condo2k4 4:39e949908fc5 301 float f = getHeading();
Condo2k4 4:39e949908fc5 302 pc.sendFloat(f);
azazeal88 1:38f32fc3db2c 303 break;
azazeal88 1:38f32fc3db2c 304 }
azazeal88 1:38f32fc3db2c 305 case 'L': { // board led
Condo2k4 3:990f8380da21 306 char raw = pc.getc();
Condo2k4 4:39e949908fc5 307 char r = ((raw>>2)&1)^1;
Condo2k4 4:39e949908fc5 308 char g = ((raw>>1)&1)^1;
Condo2k4 4:39e949908fc5 309 char b = (raw&1)^1;
azazeal88 1:38f32fc3db2c 310 lr = r; lg = g; lb = b;
azazeal88 1:38f32fc3db2c 311 break;
azazeal88 1:38f32fc3db2c 312 }
azazeal88 1:38f32fc3db2c 313 case 'M': { //read board magno
Condo2k4 4:39e949908fc5 314 // float f;
Condo2k4 4:39e949908fc5 315 // bMag.getX(&f); pc.sendFloat(f);
Condo2k4 4:39e949908fc5 316 // bMag.getY(&f); pc.sendFloat(f);
Condo2k4 4:39e949908fc5 317 // bMag.getZ(&f); pc.sendFloat(f);
Condo2k4 4:39e949908fc5 318 MotionSensorDataUnits mag;
Condo2k4 4:39e949908fc5 319 bMag.getAxis(mag);
Condo2k4 4:39e949908fc5 320 float cal[3];
Condo2k4 4:39e949908fc5 321 cal[0]=mag.x;
Condo2k4 4:39e949908fc5 322 cal[1]=mag.y;
Condo2k4 4:39e949908fc5 323 cal[2]=mag.z;
Condo2k4 4:39e949908fc5 324 magCal.run(cal,cal);
Condo2k4 4:39e949908fc5 325 pc.sendFloat(cal[0]);
Condo2k4 4:39e949908fc5 326 pc.sendFloat(cal[1]);
Condo2k4 4:39e949908fc5 327 pc.sendFloat(cal[2]);
azazeal88 1:38f32fc3db2c 328 break;
azazeal88 1:38f32fc3db2c 329 }
azazeal88 1:38f32fc3db2c 330 case 'A': { //read board accel
Condo2k4 4:39e949908fc5 331 float f;
Condo2k4 4:39e949908fc5 332 bAcc.getX(&f); pc.sendFloat(f);
Condo2k4 4:39e949908fc5 333 bAcc.getY(&f); pc.sendFloat(f);
Condo2k4 4:39e949908fc5 334 bAcc.getZ(&f); pc.sendFloat(f);
azazeal88 1:38f32fc3db2c 335 break;
azazeal88 1:38f32fc3db2c 336 }
azazeal88 1:38f32fc3db2c 337 case 'P': { //set lcd position
Condo2k4 3:990f8380da21 338 unsigned char x, y;
Condo2k4 3:990f8380da21 339 x = pc.getc();
Condo2k4 3:990f8380da21 340 y = pc.getc();
azazeal88 1:38f32fc3db2c 341 lcd.locate(x,y);
Condo2k4 3:990f8380da21 342 break;
azazeal88 1:38f32fc3db2c 343 }
azazeal88 1:38f32fc3db2c 344 case 'S': { //print lcd text
Condo2k4 3:990f8380da21 345 char buff[256];
Condo2k4 3:990f8380da21 346 unsigned char len = pc.getc();
Condo2k4 3:990f8380da21 347 char * j= buff;
Condo2k4 3:990f8380da21 348 while(len>0) {
Condo2k4 3:990f8380da21 349 *j++=pc.getc();
Condo2k4 3:990f8380da21 350 len--;
azazeal88 1:38f32fc3db2c 351 }
Condo2k4 3:990f8380da21 352 *j=0;
Condo2k4 3:990f8380da21 353 lcd.printf(buff);
Condo2k4 4:39e949908fc5 354 lcd.copy_to_lcd();
Condo2k4 3:990f8380da21 355 break;
azazeal88 1:38f32fc3db2c 356 }
Condo2k4 3:990f8380da21 357 case 'D': { //set lcd pixel
Condo2k4 3:990f8380da21 358 char x = pc.getc();
Condo2k4 3:990f8380da21 359 char y = pc.getc();
Condo2k4 3:990f8380da21 360 char c = pc.getc();
azazeal88 1:38f32fc3db2c 361 lcd.pixel(x,y,c);
Condo2k4 4:39e949908fc5 362 lcd.copy_to_lcd();
Condo2k4 3:990f8380da21 363 break;
azazeal88 1:38f32fc3db2c 364 }
azazeal88 1:38f32fc3db2c 365 case 'C': { //clear lcd
azazeal88 1:38f32fc3db2c 366 lcd.cls();
Condo2k4 3:990f8380da21 367 break;
Condo2k4 3:990f8380da21 368 }
Condo2k4 3:990f8380da21 369 case '-': { //reconnection
Condo2k4 3:990f8380da21 370 cleanup(); break;
azazeal88 1:38f32fc3db2c 371 }
azazeal88 1:38f32fc3db2c 372 default: break;
co657_mjrb6 0:6891aea05ef2 373 }
co657_mjrb6 0:6891aea05ef2 374 }
co657_mjrb6 0:6891aea05ef2 375 }
Condo2k4 4:39e949908fc5 376 }