Interface layer for the mbed boards ready for the JAVA library
Dependencies: C12832 LM75B MMA7660 mbed FXOS8700Q
Fork of frdm_serial by
main.cpp@8:d70e3e3690fd, 2017-01-06 (annotated)
- Committer:
- Condo2k4
- Date:
- Fri Jan 06 11:08:56 2017 +0000
- Revision:
- 8:d70e3e3690fd
- Parent:
- 7:238c6fd5c209
Extended LCD functionality.; Temporarily disable LEDs
Who changed what in which revision?
User | Revision | Line number | New 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 | 5:d9f8c2f63323 | 7 | #include "main.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); |
Condo2k4 | 5:d9f8c2f63323 | 13 | PwmOut spkr(D6); |
co657_mjrb6 | 0:6891aea05ef2 | 14 | |
azazeal88 | 1:38f32fc3db2c | 15 | //INPUTS |
azazeal88 | 1:38f32fc3db2c | 16 | |
azazeal88 | 1:38f32fc3db2c | 17 | LM75B temp(D14, D15); |
Condo2k4 | 4:39e949908fc5 | 18 | MMA7660 sAcc(D14, D15); |
Condo2k4 | 4:39e949908fc5 | 19 | |
Condo2k4 | 8:d70e3e3690fd | 20 | I2C i2c(PTE25, PTE24); |
Condo2k4 | 8:d70e3e3690fd | 21 | //FXOS8700Q fxos(i2c, FXOS8700CQ_SLAVE_ADDR1); |
Condo2k4 | 8:d70e3e3690fd | 22 | FXOS8700QAccelerometer bAcc(i2c, FXOS8700CQ_SLAVE_ADDR1); // Configured for the FRDM-K64F with onboard sensors |
Condo2k4 | 8:d70e3e3690fd | 23 | FXOS8700QMagnetometer bMag(i2c, FXOS8700CQ_SLAVE_ADDR1); |
Condo2k4 | 8:d70e3e3690fd | 24 | |
Condo2k4 | 8:d70e3e3690fd | 25 | //FXOS8700Q_acc bAcc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board |
Condo2k4 | 8:d70e3e3690fd | 26 | //FXOS8700Q_mag bMag( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board |
azazeal88 | 1:38f32fc3db2c | 27 | |
Condo2k4 | 3:990f8380da21 | 28 | 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 | 29 | DigitalIn sw2(SW2), sw3(SW3), up(A2), down(A3), left(A4), right(A5), fire(D4); |
azazeal88 | 1:38f32fc3db2c | 30 | |
azazeal88 | 1:38f32fc3db2c | 31 | AnalogIn pot1(A0), pot2(A1); |
co657_mjrb6 | 0:6891aea05ef2 | 32 | |
Condo2k4 | 3:990f8380da21 | 33 | //INTERRUPT FLAGS |
co657_mjrb6 | 0:6891aea05ef2 | 34 | |
azazeal88 | 1:38f32fc3db2c | 35 | uint16_t flags; |
azazeal88 | 1:38f32fc3db2c | 36 | #define SW2_DOWN 0x0001 |
azazeal88 | 1:38f32fc3db2c | 37 | #define SW2_UP 0x0002 |
azazeal88 | 1:38f32fc3db2c | 38 | #define SW3_UP 0x0004 |
azazeal88 | 1:38f32fc3db2c | 39 | #define SW3_DOWN 0x0008 |
azazeal88 | 1:38f32fc3db2c | 40 | #define UP_UP 0x0010 |
azazeal88 | 1:38f32fc3db2c | 41 | #define UP_DOWN 0x0020 |
azazeal88 | 1:38f32fc3db2c | 42 | #define DOWN_UP 0x0040 |
azazeal88 | 1:38f32fc3db2c | 43 | #define DOWN_DOWN 0x0080 |
azazeal88 | 1:38f32fc3db2c | 44 | #define LEFT_UP 0x0100 |
azazeal88 | 1:38f32fc3db2c | 45 | #define LEFT_DOWN 0x0200 |
azazeal88 | 1:38f32fc3db2c | 46 | #define RIGHT_UP 0x0400 |
azazeal88 | 1:38f32fc3db2c | 47 | #define RIGHT_DOWN 0x0800 |
azazeal88 | 1:38f32fc3db2c | 48 | #define FIRE_UP 0x1000 |
azazeal88 | 1:38f32fc3db2c | 49 | #define FIRE_DOWN 0x2000 |
co657_mjrb6 | 0:6891aea05ef2 | 50 | |
azazeal88 | 1:38f32fc3db2c | 51 | //COMMS |
co657_mjrb6 | 0:6891aea05ef2 | 52 | |
Condo2k4 | 4:39e949908fc5 | 53 | DataSerial pc(USBTX, USBRX); |
co657_mjrb6 | 0:6891aea05ef2 | 54 | |
Condo2k4 | 2:2dcdbb85cae0 | 55 | //INTERRUPT HANDLERS |
Condo2k4 | 2:2dcdbb85cae0 | 56 | |
azazeal88 | 1:38f32fc3db2c | 57 | void sw2Down(){ flags |= SW2_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 58 | void sw2Up() { flags |= SW2_UP; } |
azazeal88 | 1:38f32fc3db2c | 59 | |
azazeal88 | 1:38f32fc3db2c | 60 | void sw3Down(){ flags |= SW3_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 61 | void sw3Up() { flags |= SW3_UP; } |
azazeal88 | 1:38f32fc3db2c | 62 | |
azazeal88 | 1:38f32fc3db2c | 63 | void upDown(){ flags |= UP_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 64 | void upUp() { flags |= UP_UP; } |
azazeal88 | 1:38f32fc3db2c | 65 | |
azazeal88 | 1:38f32fc3db2c | 66 | void downDown(){ flags |= DOWN_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 67 | void downUp() { flags |= DOWN_UP; } |
azazeal88 | 1:38f32fc3db2c | 68 | |
azazeal88 | 1:38f32fc3db2c | 69 | void leftDown(){ flags |= LEFT_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 70 | void leftUp() { flags |= LEFT_UP; } |
azazeal88 | 1:38f32fc3db2c | 71 | |
azazeal88 | 1:38f32fc3db2c | 72 | void rightDown(){ flags |= RIGHT_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 73 | void rightUp() { flags |= RIGHT_UP; } |
azazeal88 | 1:38f32fc3db2c | 74 | |
azazeal88 | 1:38f32fc3db2c | 75 | void fireDown(){ flags |= FIRE_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 76 | void fireUp() { flags |= FIRE_UP; } |
azazeal88 | 1:38f32fc3db2c | 77 | |
Condo2k4 | 6:adf2837c1e7f | 78 | //PRETTY WAITING LEDS |
Condo2k4 | 4:39e949908fc5 | 79 | |
Condo2k4 | 4:39e949908fc5 | 80 | Ticker waitTicker; |
Condo2k4 | 4:39e949908fc5 | 81 | int ctr; |
Condo2k4 | 4:39e949908fc5 | 82 | |
Condo2k4 | 4:39e949908fc5 | 83 | void waitTick() { |
Condo2k4 | 4:39e949908fc5 | 84 | switch(ctr) { |
Condo2k4 | 4:39e949908fc5 | 85 | case 0: |
Condo2k4 | 4:39e949908fc5 | 86 | xr=xg=0; xb=1; break; |
Condo2k4 | 4:39e949908fc5 | 87 | case 1: |
Condo2k4 | 4:39e949908fc5 | 88 | xr=0; xg=xb=1; break; |
Condo2k4 | 4:39e949908fc5 | 89 | case 2: |
Condo2k4 | 4:39e949908fc5 | 90 | xr=xb=0; xg=1; break; |
Condo2k4 | 4:39e949908fc5 | 91 | case 3: |
Condo2k4 | 4:39e949908fc5 | 92 | xb=0; xr=xg=1; break; |
Condo2k4 | 4:39e949908fc5 | 93 | case 4: |
Condo2k4 | 4:39e949908fc5 | 94 | xg=xb=0; xr=1; break; |
Condo2k4 | 4:39e949908fc5 | 95 | case 5: |
Condo2k4 | 5:d9f8c2f63323 | 96 | lr=xg=lb=0; xr=lg=xb=1; |
Condo2k4 | 5:d9f8c2f63323 | 97 | ctr=0; return; |
Condo2k4 | 4:39e949908fc5 | 98 | } |
Condo2k4 | 5:d9f8c2f63323 | 99 | lr=!xr; lg=!xg; lb=!xb; |
Condo2k4 | 4:39e949908fc5 | 100 | ctr++; |
Condo2k4 | 4:39e949908fc5 | 101 | } |
Condo2k4 | 4:39e949908fc5 | 102 | |
Condo2k4 | 2:2dcdbb85cae0 | 103 | /* |
Condo2k4 | 2:2dcdbb85cae0 | 104 | Return the state of a requested pin |
Condo2k4 | 2:2dcdbb85cae0 | 105 | */ |
Condo2k4 | 5:d9f8c2f63323 | 106 | void read_digital() { |
azazeal88 | 1:38f32fc3db2c | 107 | bool val; |
Condo2k4 | 5:d9f8c2f63323 | 108 | switch(pc.readChar()) { |
Condo2k4 | 6:adf2837c1e7f | 109 | case '2': val=!sw2; break; |
Condo2k4 | 6:adf2837c1e7f | 110 | case '3': val=!sw3; break; |
azazeal88 | 1:38f32fc3db2c | 111 | case 'u': val=up; break; |
azazeal88 | 1:38f32fc3db2c | 112 | case 'd': val=down; break; |
azazeal88 | 1:38f32fc3db2c | 113 | case 'l': val=left; break; |
azazeal88 | 1:38f32fc3db2c | 114 | case 'r': val=right; break; |
azazeal88 | 1:38f32fc3db2c | 115 | case 'f': val=fire; break; |
azazeal88 | 1:38f32fc3db2c | 116 | default: return; |
co657_mjrb6 | 0:6891aea05ef2 | 117 | } |
Condo2k4 | 6:adf2837c1e7f | 118 | pc.sendBool(val); |
co657_mjrb6 | 0:6891aea05ef2 | 119 | } |
co657_mjrb6 | 0:6891aea05ef2 | 120 | |
Condo2k4 | 2:2dcdbb85cae0 | 121 | /* |
Condo2k4 | 2:2dcdbb85cae0 | 122 | Return the state of a requested potentiometer |
Condo2k4 | 2:2dcdbb85cae0 | 123 | */ |
Condo2k4 | 5:d9f8c2f63323 | 124 | void read_pot() { |
azazeal88 | 1:38f32fc3db2c | 125 | float val; |
Condo2k4 | 5:d9f8c2f63323 | 126 | switch(pc.readChar()) { |
azazeal88 | 1:38f32fc3db2c | 127 | case '1': val=pot1; break; |
azazeal88 | 1:38f32fc3db2c | 128 | case '2': val=pot2; break; |
azazeal88 | 1:38f32fc3db2c | 129 | default: return; |
azazeal88 | 1:38f32fc3db2c | 130 | } |
Condo2k4 | 4:39e949908fc5 | 131 | pc.sendFloat(val); |
Condo2k4 | 3:990f8380da21 | 132 | } |
Condo2k4 | 5:d9f8c2f63323 | 133 | void read_temp() { //read temp |
Condo2k4 | 5:d9f8c2f63323 | 134 | float t = temp.read(); |
Condo2k4 | 5:d9f8c2f63323 | 135 | pc.sendFloat(t); |
Condo2k4 | 5:d9f8c2f63323 | 136 | } |
Condo2k4 | 3:990f8380da21 | 137 | |
Condo2k4 | 5:d9f8c2f63323 | 138 | void read_shield_accel() {//read shield accel |
Condo2k4 | 5:d9f8c2f63323 | 139 | float x, y, z; |
Condo2k4 | 5:d9f8c2f63323 | 140 | x = sAcc.x(); |
Condo2k4 | 5:d9f8c2f63323 | 141 | y = sAcc.y(); |
Condo2k4 | 5:d9f8c2f63323 | 142 | z = sAcc.z(); |
Condo2k4 | 5:d9f8c2f63323 | 143 | pc.sendFloat(x); |
Condo2k4 | 5:d9f8c2f63323 | 144 | pc.sendFloat(y); |
Condo2k4 | 5:d9f8c2f63323 | 145 | pc.sendFloat(z); |
Condo2k4 | 5:d9f8c2f63323 | 146 | } |
Condo2k4 | 5:d9f8c2f63323 | 147 | |
Condo2k4 | 5:d9f8c2f63323 | 148 | void set_shield_led() { //shield led |
Condo2k4 | 5:d9f8c2f63323 | 149 | char raw = pc.readChar(); |
Condo2k4 | 5:d9f8c2f63323 | 150 | char r = ((raw>>2)&1)^1; |
Condo2k4 | 5:d9f8c2f63323 | 151 | char g = ((raw>>1)&1)^1; |
Condo2k4 | 5:d9f8c2f63323 | 152 | char b = (raw&1)^1; |
Condo2k4 | 5:d9f8c2f63323 | 153 | xr = r; xg = g; xb = b; |
Condo2k4 | 5:d9f8c2f63323 | 154 | } |
Condo2k4 | 5:d9f8c2f63323 | 155 | |
Condo2k4 | 5:d9f8c2f63323 | 156 | void get_orientation() { //read shield accel orientation |
Condo2k4 | 5:d9f8c2f63323 | 157 | MMA7660::Orientation o = sAcc.getOrientation(); |
Condo2k4 | 5:d9f8c2f63323 | 158 | pc.sendChar((char)o); |
Condo2k4 | 5:d9f8c2f63323 | 159 | } |
Condo2k4 | 5:d9f8c2f63323 | 160 | |
Condo2k4 | 5:d9f8c2f63323 | 161 | void get_side() { //read shield accel orientation |
Condo2k4 | 5:d9f8c2f63323 | 162 | MMA7660::Orientation o = sAcc.getSide(); |
Condo2k4 | 5:d9f8c2f63323 | 163 | pc.sendChar((char)o); |
Condo2k4 | 5:d9f8c2f63323 | 164 | } |
Condo2k4 | 5:d9f8c2f63323 | 165 | |
Condo2k4 | 5:d9f8c2f63323 | 166 | void get_heading() { |
Condo2k4 | 8:d70e3e3690fd | 167 | motion_data_units_t mag; |
Condo2k4 | 4:39e949908fc5 | 168 | bMag.getAxis(mag); |
Condo2k4 | 7:238c6fd5c209 | 169 | float heading = atan2(-(mag.x-20.0f),mag.y-5.0f)*180.0f/M_PI; |
Condo2k4 | 7:238c6fd5c209 | 170 | if(heading<0) heading+=360.0f; |
Condo2k4 | 5:d9f8c2f63323 | 171 | pc.sendFloat(heading); |
Condo2k4 | 5:d9f8c2f63323 | 172 | } |
Condo2k4 | 5:d9f8c2f63323 | 173 | |
Condo2k4 | 5:d9f8c2f63323 | 174 | void set_board_led() { // board led |
Condo2k4 | 5:d9f8c2f63323 | 175 | char raw = pc.readChar(); |
Condo2k4 | 5:d9f8c2f63323 | 176 | char r = ((raw>>2)&1)^1; |
Condo2k4 | 5:d9f8c2f63323 | 177 | char g = ((raw>>1)&1)^1; |
Condo2k4 | 5:d9f8c2f63323 | 178 | char b = (raw&1)^1; |
Condo2k4 | 5:d9f8c2f63323 | 179 | lr = r; lg = g; lb = b; |
Condo2k4 | 5:d9f8c2f63323 | 180 | } |
Condo2k4 | 5:d9f8c2f63323 | 181 | |
Condo2k4 | 8:d70e3e3690fd | 182 | void set_piezo() { // set piezo buzzer |
Condo2k4 | 8:d70e3e3690fd | 183 | float vol = pc.readFloat(); |
Condo2k4 | 8:d70e3e3690fd | 184 | float period = 1.0f/pc.readFloat(); |
Condo2k4 | 8:d70e3e3690fd | 185 | spkr=vol*0.5f; //convert volume to duty cycle |
Condo2k4 | 8:d70e3e3690fd | 186 | spkr.period(period); |
Condo2k4 | 8:d70e3e3690fd | 187 | } |
Condo2k4 | 8:d70e3e3690fd | 188 | |
Condo2k4 | 5:d9f8c2f63323 | 189 | void read_board_magno() { //read board magno |
Condo2k4 | 8:d70e3e3690fd | 190 | motion_data_units_t mag; |
Condo2k4 | 5:d9f8c2f63323 | 191 | bMag.getAxis(mag); |
Condo2k4 | 5:d9f8c2f63323 | 192 | pc.sendFloat(mag.x); |
Condo2k4 | 5:d9f8c2f63323 | 193 | pc.sendFloat(mag.y); |
Condo2k4 | 5:d9f8c2f63323 | 194 | pc.sendFloat(mag.z); |
Condo2k4 | 5:d9f8c2f63323 | 195 | } |
Condo2k4 | 5:d9f8c2f63323 | 196 | |
Condo2k4 | 5:d9f8c2f63323 | 197 | void read_board_accel() { //read board accel |
Condo2k4 | 8:d70e3e3690fd | 198 | motion_data_units_t acc; |
Condo2k4 | 8:d70e3e3690fd | 199 | bAcc.getAxis(acc); |
Condo2k4 | 8:d70e3e3690fd | 200 | pc.sendFloat(acc.x); |
Condo2k4 | 8:d70e3e3690fd | 201 | pc.sendFloat(acc.y); |
Condo2k4 | 8:d70e3e3690fd | 202 | pc.sendFloat(acc.z); |
Condo2k4 | 5:d9f8c2f63323 | 203 | } |
Condo2k4 | 5:d9f8c2f63323 | 204 | |
Condo2k4 | 5:d9f8c2f63323 | 205 | void set_lcd_position() { //set lcd position |
Condo2k4 | 5:d9f8c2f63323 | 206 | unsigned char xy[2]; |
Condo2k4 | 5:d9f8c2f63323 | 207 | pc.readData(xy,2); |
Condo2k4 | 5:d9f8c2f63323 | 208 | lcd.locate(xy[0],xy[1]); |
Condo2k4 | 5:d9f8c2f63323 | 209 | } |
Condo2k4 | 5:d9f8c2f63323 | 210 | |
Condo2k4 | 5:d9f8c2f63323 | 211 | void print_text() { //print lcd text |
Condo2k4 | 5:d9f8c2f63323 | 212 | char buff[256]; |
Condo2k4 | 5:d9f8c2f63323 | 213 | char len = pc.readString(buff); |
Condo2k4 | 5:d9f8c2f63323 | 214 | buff[len]=0; |
Condo2k4 | 5:d9f8c2f63323 | 215 | lcd.printf(buff); |
Condo2k4 | 5:d9f8c2f63323 | 216 | lcd.copy_to_lcd(); |
Condo2k4 | 6:adf2837c1e7f | 217 | pc.sendBool(true); |
Condo2k4 | 5:d9f8c2f63323 | 218 | } |
Condo2k4 | 5:d9f8c2f63323 | 219 | |
Condo2k4 | 5:d9f8c2f63323 | 220 | void set_lcd_pixel() { //set lcd pixel |
Condo2k4 | 5:d9f8c2f63323 | 221 | char xyc[3]; |
Condo2k4 | 5:d9f8c2f63323 | 222 | pc.readData(xyc, 3); |
Condo2k4 | 5:d9f8c2f63323 | 223 | lcd.pixel(xyc[0],xyc[1],xyc[2]); |
Condo2k4 | 5:d9f8c2f63323 | 224 | lcd.copy_to_lcd(); |
Condo2k4 | 5:d9f8c2f63323 | 225 | } |
Condo2k4 | 5:d9f8c2f63323 | 226 | |
Condo2k4 | 8:d70e3e3690fd | 227 | void draw_circle() { |
Condo2k4 | 8:d70e3e3690fd | 228 | char xyrc[4]; |
Condo2k4 | 8:d70e3e3690fd | 229 | pc.readData(xyrc, 4); |
Condo2k4 | 8:d70e3e3690fd | 230 | lcd.circle(xyrc[0],xyrc[1],xyrc[2],xyrc[3]); |
Condo2k4 | 8:d70e3e3690fd | 231 | lcd.copy_to_lcd(); |
Condo2k4 | 8:d70e3e3690fd | 232 | } |
Condo2k4 | 8:d70e3e3690fd | 233 | |
Condo2k4 | 8:d70e3e3690fd | 234 | void fill_circle() { |
Condo2k4 | 8:d70e3e3690fd | 235 | char xyrc[4]; |
Condo2k4 | 8:d70e3e3690fd | 236 | pc.readData(xyrc, 4); |
Condo2k4 | 8:d70e3e3690fd | 237 | lcd.fillcircle(xyrc[0],xyrc[1],xyrc[2],xyrc[3]); |
Condo2k4 | 8:d70e3e3690fd | 238 | lcd.copy_to_lcd(); |
Condo2k4 | 8:d70e3e3690fd | 239 | } |
Condo2k4 | 8:d70e3e3690fd | 240 | |
Condo2k4 | 8:d70e3e3690fd | 241 | void draw_line() { |
Condo2k4 | 8:d70e3e3690fd | 242 | char xyxyc[5]; |
Condo2k4 | 8:d70e3e3690fd | 243 | pc.readData(xyxyc, 5); |
Condo2k4 | 8:d70e3e3690fd | 244 | lcd.line(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]); |
Condo2k4 | 8:d70e3e3690fd | 245 | lcd.copy_to_lcd(); |
Condo2k4 | 8:d70e3e3690fd | 246 | } |
Condo2k4 | 8:d70e3e3690fd | 247 | |
Condo2k4 | 8:d70e3e3690fd | 248 | void draw_rect() { |
Condo2k4 | 8:d70e3e3690fd | 249 | char xyxyc[5]; |
Condo2k4 | 8:d70e3e3690fd | 250 | pc.readData(xyxyc, 5); |
Condo2k4 | 8:d70e3e3690fd | 251 | lcd.rect(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]); |
Condo2k4 | 8:d70e3e3690fd | 252 | lcd.copy_to_lcd(); |
Condo2k4 | 8:d70e3e3690fd | 253 | } |
Condo2k4 | 8:d70e3e3690fd | 254 | |
Condo2k4 | 8:d70e3e3690fd | 255 | void fill_rect() { |
Condo2k4 | 8:d70e3e3690fd | 256 | char xyxyc[5]; |
Condo2k4 | 8:d70e3e3690fd | 257 | pc.readData(xyxyc, 5); |
Condo2k4 | 8:d70e3e3690fd | 258 | lcd.fillrect(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]); |
Condo2k4 | 8:d70e3e3690fd | 259 | lcd.copy_to_lcd(); |
Condo2k4 | 5:d9f8c2f63323 | 260 | } |
Condo2k4 | 5:d9f8c2f63323 | 261 | |
Condo2k4 | 5:d9f8c2f63323 | 262 | void clear_lcd() { //clear lcd |
Condo2k4 | 5:d9f8c2f63323 | 263 | lcd.cls(); |
Condo2k4 | 6:adf2837c1e7f | 264 | pc.sendBool(true); |
Condo2k4 | 5:d9f8c2f63323 | 265 | } |
Condo2k4 | 5:d9f8c2f63323 | 266 | |
Condo2k4 | 5:d9f8c2f63323 | 267 | void cleanup() { |
Condo2k4 | 5:d9f8c2f63323 | 268 | lr = lg = lb = 1; |
Condo2k4 | 5:d9f8c2f63323 | 269 | xr = xg = xb = 1; |
Condo2k4 | 5:d9f8c2f63323 | 270 | lcd.cls(); |
Condo2k4 | 5:d9f8c2f63323 | 271 | |
Condo2k4 | 5:d9f8c2f63323 | 272 | pc.sendChar(RECONNECT); |
Condo2k4 | 5:d9f8c2f63323 | 273 | } |
Condo2k4 | 5:d9f8c2f63323 | 274 | |
Condo2k4 | 5:d9f8c2f63323 | 275 | void reconnect() { //reconnection |
Condo2k4 | 5:d9f8c2f63323 | 276 | cleanup(); |
Condo2k4 | 3:990f8380da21 | 277 | } |
Condo2k4 | 3:990f8380da21 | 278 | |
Condo2k4 | 3:990f8380da21 | 279 | int main() { |
azazeal88 | 1:38f32fc3db2c | 280 | //SETUP |
Condo2k4 | 5:d9f8c2f63323 | 281 | pc.baud(115200); |
azazeal88 | 1:38f32fc3db2c | 282 | |
Condo2k4 | 3:990f8380da21 | 283 | lr = lg = lb = 1; |
Condo2k4 | 5:d9f8c2f63323 | 284 | xr = xg = xb = 1; |
Condo2k4 | 5:d9f8c2f63323 | 285 | |
Condo2k4 | 5:d9f8c2f63323 | 286 | bAcc.enable(); |
Condo2k4 | 5:d9f8c2f63323 | 287 | bMag.enable(); |
co657_mjrb6 | 0:6891aea05ef2 | 288 | |
Condo2k4 | 8:d70e3e3690fd | 289 | //Pretty wait |
Condo2k4 | 8:d70e3e3690fd | 290 | ctr=0; |
Condo2k4 | 8:d70e3e3690fd | 291 | lcd.locate(0,0); |
Condo2k4 | 8:d70e3e3690fd | 292 | lcd.printf("Awaiting connection..."); |
Condo2k4 | 8:d70e3e3690fd | 293 | waitTicker.attach(&waitTick,0.5); |
Condo2k4 | 8:d70e3e3690fd | 294 | while((!pc.readable()) && (pc.readChar()!=RECONNECT)) sleep(); |
Condo2k4 | 8:d70e3e3690fd | 295 | waitTicker.detach(); |
Condo2k4 | 8:d70e3e3690fd | 296 | cleanup(); |
Condo2k4 | 8:d70e3e3690fd | 297 | |
co657_mjrb6 | 0:6891aea05ef2 | 298 | sw2_int.mode (PullUp); |
co657_mjrb6 | 0:6891aea05ef2 | 299 | sw2_int.fall(&sw2Down); |
co657_mjrb6 | 0:6891aea05ef2 | 300 | sw2_int.rise(&sw2Up); |
co657_mjrb6 | 0:6891aea05ef2 | 301 | |
co657_mjrb6 | 0:6891aea05ef2 | 302 | sw3_int.mode (PullUp); |
co657_mjrb6 | 0:6891aea05ef2 | 303 | sw3_int.fall(&sw3Down); |
co657_mjrb6 | 0:6891aea05ef2 | 304 | sw3_int.rise(&sw3Up); |
co657_mjrb6 | 0:6891aea05ef2 | 305 | |
azazeal88 | 1:38f32fc3db2c | 306 | up_int.mode (PullUp); |
Condo2k4 | 4:39e949908fc5 | 307 | up_int.rise(&upDown); |
Condo2k4 | 4:39e949908fc5 | 308 | up_int.fall(&upUp); |
azazeal88 | 1:38f32fc3db2c | 309 | |
azazeal88 | 1:38f32fc3db2c | 310 | down_int.mode (PullUp); |
Condo2k4 | 4:39e949908fc5 | 311 | down_int.rise(&downDown); |
Condo2k4 | 4:39e949908fc5 | 312 | down_int.fall(&downUp); |
azazeal88 | 1:38f32fc3db2c | 313 | |
azazeal88 | 1:38f32fc3db2c | 314 | left_int.mode (PullUp); |
Condo2k4 | 4:39e949908fc5 | 315 | left_int.rise(&leftDown); |
Condo2k4 | 4:39e949908fc5 | 316 | left_int.fall(&leftUp); |
azazeal88 | 1:38f32fc3db2c | 317 | |
azazeal88 | 1:38f32fc3db2c | 318 | right_int.mode (PullUp); |
Condo2k4 | 4:39e949908fc5 | 319 | right_int.rise(&rightDown); |
Condo2k4 | 4:39e949908fc5 | 320 | right_int.fall(&rightUp); |
azazeal88 | 1:38f32fc3db2c | 321 | |
azazeal88 | 1:38f32fc3db2c | 322 | fire_int.mode (PullUp); |
Condo2k4 | 4:39e949908fc5 | 323 | fire_int.rise(&fireDown); |
Condo2k4 | 4:39e949908fc5 | 324 | fire_int.fall(&fireUp); |
co657_mjrb6 | 0:6891aea05ef2 | 325 | |
azazeal88 | 1:38f32fc3db2c | 326 | for(;;) { |
Condo2k4 | 2:2dcdbb85cae0 | 327 | //Check if any interrupts fired |
azazeal88 | 1:38f32fc3db2c | 328 | if(flags&SW2_UP) { |
Condo2k4 | 3:990f8380da21 | 329 | flags&=!SW2_UP; |
Condo2k4 | 4:39e949908fc5 | 330 | pc.sendSpecialCommand('2','u'); |
azazeal88 | 1:38f32fc3db2c | 331 | } |
azazeal88 | 1:38f32fc3db2c | 332 | if(flags&SW2_DOWN) { |
Condo2k4 | 3:990f8380da21 | 333 | flags&=!SW2_DOWN; |
Condo2k4 | 4:39e949908fc5 | 334 | pc.sendSpecialCommand('2','d'); |
azazeal88 | 1:38f32fc3db2c | 335 | } |
azazeal88 | 1:38f32fc3db2c | 336 | if(flags&SW3_UP) { |
Condo2k4 | 3:990f8380da21 | 337 | flags&=!SW3_UP; |
Condo2k4 | 4:39e949908fc5 | 338 | pc.sendSpecialCommand('3','u'); |
azazeal88 | 1:38f32fc3db2c | 339 | } |
azazeal88 | 1:38f32fc3db2c | 340 | if(flags&SW3_DOWN) { |
Condo2k4 | 3:990f8380da21 | 341 | flags&=!SW3_DOWN; |
Condo2k4 | 4:39e949908fc5 | 342 | pc.sendSpecialCommand('3','d'); |
azazeal88 | 1:38f32fc3db2c | 343 | } |
azazeal88 | 1:38f32fc3db2c | 344 | if(flags&UP_UP) { |
Condo2k4 | 3:990f8380da21 | 345 | flags&=!UP_UP; |
Condo2k4 | 4:39e949908fc5 | 346 | pc.sendSpecialCommand('u','u'); |
azazeal88 | 1:38f32fc3db2c | 347 | } |
azazeal88 | 1:38f32fc3db2c | 348 | if(flags&UP_DOWN) { |
Condo2k4 | 3:990f8380da21 | 349 | flags&=!UP_DOWN; |
Condo2k4 | 4:39e949908fc5 | 350 | pc.sendSpecialCommand('u','d'); |
co657_mjrb6 | 0:6891aea05ef2 | 351 | } |
azazeal88 | 1:38f32fc3db2c | 352 | if(flags&DOWN_UP) { |
Condo2k4 | 3:990f8380da21 | 353 | flags&=!DOWN_UP; |
Condo2k4 | 4:39e949908fc5 | 354 | pc.sendSpecialCommand('d','u'); |
azazeal88 | 1:38f32fc3db2c | 355 | } |
azazeal88 | 1:38f32fc3db2c | 356 | if(flags&DOWN_DOWN) { |
Condo2k4 | 3:990f8380da21 | 357 | flags&=!DOWN_DOWN; |
Condo2k4 | 4:39e949908fc5 | 358 | pc.sendSpecialCommand('d','d'); |
azazeal88 | 1:38f32fc3db2c | 359 | } |
azazeal88 | 1:38f32fc3db2c | 360 | if(flags&LEFT_UP) { |
Condo2k4 | 3:990f8380da21 | 361 | flags&=!LEFT_UP; |
Condo2k4 | 4:39e949908fc5 | 362 | pc.sendSpecialCommand('l','u'); |
azazeal88 | 1:38f32fc3db2c | 363 | } |
azazeal88 | 1:38f32fc3db2c | 364 | if(flags&LEFT_DOWN) { |
Condo2k4 | 3:990f8380da21 | 365 | flags&=!LEFT_DOWN; |
Condo2k4 | 4:39e949908fc5 | 366 | pc.sendSpecialCommand('l','d'); |
co657_mjrb6 | 0:6891aea05ef2 | 367 | } |
azazeal88 | 1:38f32fc3db2c | 368 | if(flags&RIGHT_UP) { |
Condo2k4 | 3:990f8380da21 | 369 | flags&=!RIGHT_UP; |
Condo2k4 | 4:39e949908fc5 | 370 | pc.sendSpecialCommand('r','u'); |
azazeal88 | 1:38f32fc3db2c | 371 | } |
azazeal88 | 1:38f32fc3db2c | 372 | if(flags&RIGHT_DOWN) { |
Condo2k4 | 3:990f8380da21 | 373 | flags&=!RIGHT_DOWN; |
Condo2k4 | 4:39e949908fc5 | 374 | pc.sendSpecialCommand('r','d'); |
azazeal88 | 1:38f32fc3db2c | 375 | } |
azazeal88 | 1:38f32fc3db2c | 376 | if(flags&FIRE_UP) { |
Condo2k4 | 3:990f8380da21 | 377 | flags&=!FIRE_UP; |
Condo2k4 | 4:39e949908fc5 | 378 | pc.sendSpecialCommand('f','u'); |
azazeal88 | 1:38f32fc3db2c | 379 | } |
azazeal88 | 1:38f32fc3db2c | 380 | if(flags&FIRE_DOWN) { |
Condo2k4 | 3:990f8380da21 | 381 | flags&=!FIRE_DOWN; |
Condo2k4 | 4:39e949908fc5 | 382 | pc.sendSpecialCommand('f','d'); |
co657_mjrb6 | 0:6891aea05ef2 | 383 | } |
azazeal88 | 1:38f32fc3db2c | 384 | |
azazeal88 | 1:38f32fc3db2c | 385 | //Check for host requests |
co657_mjrb6 | 0:6891aea05ef2 | 386 | if(pc.readable()) { |
Condo2k4 | 5:d9f8c2f63323 | 387 | unsigned char cmd = pc.readChar(); |
Condo2k4 | 5:d9f8c2f63323 | 388 | if(cmd<COMMAND_LENGTH) { |
Condo2k4 | 5:d9f8c2f63323 | 389 | commandFunctions[cmd](); |
co657_mjrb6 | 0:6891aea05ef2 | 390 | } |
co657_mjrb6 | 0:6891aea05ef2 | 391 | } |
co657_mjrb6 | 0:6891aea05ef2 | 392 | } |
Condo2k4 | 4:39e949908fc5 | 393 | } |