![](/media/cache/profiles/a8806a7fa519efb09f5e1d662957418e.jpg.50x50_q85.jpg)
Interface layer for the mbed boards ready for the JAVA library
Dependencies: C12832 LM75B MMA7660 mbed FXOS8700Q
Fork of frdm_serial by
main.cpp@2:2dcdbb85cae0, 2015-11-20 (annotated)
- Committer:
- Condo2k4
- Date:
- Fri Nov 20 22:10:58 2015 +0000
- Revision:
- 2:2dcdbb85cae0
- Parent:
- 1:38f32fc3db2c
- Child:
- 3:990f8380da21
It actually compiles now...
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" |
azazeal88 | 1:38f32fc3db2c | 5 | #include "FXOS8700CQ.h" |
azazeal88 | 1:38f32fc3db2c | 6 | |
azazeal88 | 1:38f32fc3db2c | 7 | //OUTPUTS |
azazeal88 | 1:38f32fc3db2c | 8 | |
azazeal88 | 1:38f32fc3db2c | 9 | PwmOut lr(LED_RED), lg(LED_GREEN), lb(LED_BLUE), xr(D5), xg(D9), xb(PTC12); |
azazeal88 | 1:38f32fc3db2c | 10 | C12832 lcd(D11, D13, D12, D7, D10); |
co657_mjrb6 | 0:6891aea05ef2 | 11 | |
azazeal88 | 1:38f32fc3db2c | 12 | //INPUTS |
azazeal88 | 1:38f32fc3db2c | 13 | |
azazeal88 | 1:38f32fc3db2c | 14 | LM75B temp(D14, D15); |
Condo2k4 | 2:2dcdbb85cae0 | 15 | MMA7660 accel(D14, D15); |
Condo2k4 | 2:2dcdbb85cae0 | 16 | FXOS8700CQ magAccel(D14, D15, FXOS8700CQ_SLAVE_ADDR1); |
azazeal88 | 1:38f32fc3db2c | 17 | |
azazeal88 | 1:38f32fc3db2c | 18 | InterruptIn sw2_int(PTC6), sw3_int(PTA4), up_int(A2), down_int(A3), left_int(A4), right_int(A5), fire_int(D5); |
Condo2k4 | 2:2dcdbb85cae0 | 19 | DigitalIn sw2(PTC6), sw3(PTA4), up(A2), down(A3), left(A4), right(A5), fire(D5); |
azazeal88 | 1:38f32fc3db2c | 20 | |
azazeal88 | 1:38f32fc3db2c | 21 | AnalogIn pot1(A0), pot2(A1); |
co657_mjrb6 | 0:6891aea05ef2 | 22 | |
azazeal88 | 1:38f32fc3db2c | 23 | //FLAGS |
co657_mjrb6 | 0:6891aea05ef2 | 24 | |
azazeal88 | 1:38f32fc3db2c | 25 | uint16_t flags; |
azazeal88 | 1:38f32fc3db2c | 26 | #define SW2_DOWN 0x0001 |
azazeal88 | 1:38f32fc3db2c | 27 | #define SW2_UP 0x0002 |
azazeal88 | 1:38f32fc3db2c | 28 | #define SW3_UP 0x0004 |
azazeal88 | 1:38f32fc3db2c | 29 | #define SW3_DOWN 0x0008 |
azazeal88 | 1:38f32fc3db2c | 30 | #define UP_UP 0x0010 |
azazeal88 | 1:38f32fc3db2c | 31 | #define UP_DOWN 0x0020 |
azazeal88 | 1:38f32fc3db2c | 32 | #define DOWN_UP 0x0040 |
azazeal88 | 1:38f32fc3db2c | 33 | #define DOWN_DOWN 0x0080 |
azazeal88 | 1:38f32fc3db2c | 34 | #define LEFT_UP 0x0100 |
azazeal88 | 1:38f32fc3db2c | 35 | #define LEFT_DOWN 0x0200 |
azazeal88 | 1:38f32fc3db2c | 36 | #define RIGHT_UP 0x0400 |
azazeal88 | 1:38f32fc3db2c | 37 | #define RIGHT_DOWN 0x0800 |
azazeal88 | 1:38f32fc3db2c | 38 | #define FIRE_UP 0x1000 |
azazeal88 | 1:38f32fc3db2c | 39 | #define FIRE_DOWN 0x2000 |
co657_mjrb6 | 0:6891aea05ef2 | 40 | |
azazeal88 | 1:38f32fc3db2c | 41 | //COMMS |
co657_mjrb6 | 0:6891aea05ef2 | 42 | |
co657_mjrb6 | 0:6891aea05ef2 | 43 | Serial pc(USBTX, USBRX); |
co657_mjrb6 | 0:6891aea05ef2 | 44 | |
Condo2k4 | 2:2dcdbb85cae0 | 45 | //INTERRUPT HANDLERS |
Condo2k4 | 2:2dcdbb85cae0 | 46 | |
azazeal88 | 1:38f32fc3db2c | 47 | void sw2Down(){ flags |= SW2_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 48 | void sw2Up() { flags |= SW2_UP; } |
azazeal88 | 1:38f32fc3db2c | 49 | |
azazeal88 | 1:38f32fc3db2c | 50 | void sw3Down(){ flags |= SW3_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 51 | void sw3Up() { flags |= SW3_UP; } |
azazeal88 | 1:38f32fc3db2c | 52 | |
azazeal88 | 1:38f32fc3db2c | 53 | void upDown(){ flags |= UP_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 54 | void upUp() { flags |= UP_UP; } |
azazeal88 | 1:38f32fc3db2c | 55 | |
azazeal88 | 1:38f32fc3db2c | 56 | void downDown(){ flags |= DOWN_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 57 | void downUp() { flags |= DOWN_UP; } |
azazeal88 | 1:38f32fc3db2c | 58 | |
azazeal88 | 1:38f32fc3db2c | 59 | void leftDown(){ flags |= LEFT_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 60 | void leftUp() { flags |= LEFT_UP; } |
azazeal88 | 1:38f32fc3db2c | 61 | |
azazeal88 | 1:38f32fc3db2c | 62 | void rightDown(){ flags |= RIGHT_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 63 | void rightUp() { flags |= RIGHT_UP; } |
azazeal88 | 1:38f32fc3db2c | 64 | |
azazeal88 | 1:38f32fc3db2c | 65 | void fireDown(){ flags |= FIRE_DOWN; } |
azazeal88 | 1:38f32fc3db2c | 66 | void fireUp() { flags |= FIRE_UP; } |
azazeal88 | 1:38f32fc3db2c | 67 | |
Condo2k4 | 2:2dcdbb85cae0 | 68 | /* |
Condo2k4 | 2:2dcdbb85cae0 | 69 | Return the state of a requested pin |
Condo2k4 | 2:2dcdbb85cae0 | 70 | */ |
azazeal88 | 1:38f32fc3db2c | 71 | void readDigitalIn() { |
azazeal88 | 1:38f32fc3db2c | 72 | bool val; |
azazeal88 | 1:38f32fc3db2c | 73 | switch(pc.getc()) { |
azazeal88 | 1:38f32fc3db2c | 74 | case '2': val=sw2; break; |
Condo2k4 | 2:2dcdbb85cae0 | 75 | case '3': val=sw3; break; |
azazeal88 | 1:38f32fc3db2c | 76 | case 'u': val=up; break; |
azazeal88 | 1:38f32fc3db2c | 77 | case 'd': val=down; break; |
azazeal88 | 1:38f32fc3db2c | 78 | case 'l': val=left; break; |
azazeal88 | 1:38f32fc3db2c | 79 | case 'r': val=right; break; |
azazeal88 | 1:38f32fc3db2c | 80 | case 'f': val=fire; break; |
azazeal88 | 1:38f32fc3db2c | 81 | default: return; |
co657_mjrb6 | 0:6891aea05ef2 | 82 | } |
azazeal88 | 1:38f32fc3db2c | 83 | pc.printf(val?"t;":"f;"); |
co657_mjrb6 | 0:6891aea05ef2 | 84 | } |
co657_mjrb6 | 0:6891aea05ef2 | 85 | |
Condo2k4 | 2:2dcdbb85cae0 | 86 | /* |
Condo2k4 | 2:2dcdbb85cae0 | 87 | Return the state of a requested potentiometer |
Condo2k4 | 2:2dcdbb85cae0 | 88 | */ |
azazeal88 | 1:38f32fc3db2c | 89 | void readPot() { |
azazeal88 | 1:38f32fc3db2c | 90 | float val; |
azazeal88 | 1:38f32fc3db2c | 91 | switch(pc.getc()) { |
azazeal88 | 1:38f32fc3db2c | 92 | case '1': val=pot1; break; |
azazeal88 | 1:38f32fc3db2c | 93 | case '2': val=pot2; break; |
azazeal88 | 1:38f32fc3db2c | 94 | default: return; |
azazeal88 | 1:38f32fc3db2c | 95 | } |
azazeal88 | 1:38f32fc3db2c | 96 | pc.printf("%6.4f;",val); |
co657_mjrb6 | 0:6891aea05ef2 | 97 | } |
co657_mjrb6 | 0:6891aea05ef2 | 98 | |
co657_mjrb6 | 0:6891aea05ef2 | 99 | int main() { |
azazeal88 | 1:38f32fc3db2c | 100 | //SETUP |
azazeal88 | 1:38f32fc3db2c | 101 | |
azazeal88 | 1:38f32fc3db2c | 102 | xr = xg = xb = 0; |
azazeal88 | 1:38f32fc3db2c | 103 | lr = lg = lb = 0; |
co657_mjrb6 | 0:6891aea05ef2 | 104 | |
co657_mjrb6 | 0:6891aea05ef2 | 105 | sw2_int.mode (PullUp); |
co657_mjrb6 | 0:6891aea05ef2 | 106 | sw2_int.fall(&sw2Down); |
co657_mjrb6 | 0:6891aea05ef2 | 107 | sw2_int.rise(&sw2Up); |
co657_mjrb6 | 0:6891aea05ef2 | 108 | |
co657_mjrb6 | 0:6891aea05ef2 | 109 | sw3_int.mode (PullUp); |
co657_mjrb6 | 0:6891aea05ef2 | 110 | sw3_int.fall(&sw3Down); |
co657_mjrb6 | 0:6891aea05ef2 | 111 | sw3_int.rise(&sw3Up); |
co657_mjrb6 | 0:6891aea05ef2 | 112 | |
azazeal88 | 1:38f32fc3db2c | 113 | up_int.mode (PullUp); |
azazeal88 | 1:38f32fc3db2c | 114 | up_int.fall(&upDown); |
azazeal88 | 1:38f32fc3db2c | 115 | up_int.rise(&upUp); |
azazeal88 | 1:38f32fc3db2c | 116 | up_int.disable_irq(); |
azazeal88 | 1:38f32fc3db2c | 117 | |
azazeal88 | 1:38f32fc3db2c | 118 | down_int.mode (PullUp); |
azazeal88 | 1:38f32fc3db2c | 119 | down_int.fall(&downDown); |
azazeal88 | 1:38f32fc3db2c | 120 | down_int.rise(&downUp); |
azazeal88 | 1:38f32fc3db2c | 121 | |
azazeal88 | 1:38f32fc3db2c | 122 | left_int.mode (PullUp); |
azazeal88 | 1:38f32fc3db2c | 123 | left_int.fall(&leftDown); |
azazeal88 | 1:38f32fc3db2c | 124 | left_int.rise(&leftUp); |
azazeal88 | 1:38f32fc3db2c | 125 | |
azazeal88 | 1:38f32fc3db2c | 126 | right_int.mode (PullUp); |
azazeal88 | 1:38f32fc3db2c | 127 | right_int.fall(&rightDown); |
azazeal88 | 1:38f32fc3db2c | 128 | right_int.rise(&rightUp); |
azazeal88 | 1:38f32fc3db2c | 129 | |
azazeal88 | 1:38f32fc3db2c | 130 | fire_int.mode (PullUp); |
azazeal88 | 1:38f32fc3db2c | 131 | fire_int.fall(&fireDown); |
azazeal88 | 1:38f32fc3db2c | 132 | fire_int.rise(&fireUp); |
co657_mjrb6 | 0:6891aea05ef2 | 133 | |
co657_mjrb6 | 0:6891aea05ef2 | 134 | pc.baud(115200); |
azazeal88 | 1:38f32fc3db2c | 135 | |
azazeal88 | 1:38f32fc3db2c | 136 | for(;;) { |
Condo2k4 | 2:2dcdbb85cae0 | 137 | //Check if any interrupts fired |
azazeal88 | 1:38f32fc3db2c | 138 | if(flags&SW2_UP) { |
azazeal88 | 1:38f32fc3db2c | 139 | pc.printf("!2u;"); flags&=!SW2_UP; |
azazeal88 | 1:38f32fc3db2c | 140 | } |
azazeal88 | 1:38f32fc3db2c | 141 | if(flags&SW2_DOWN) { |
azazeal88 | 1:38f32fc3db2c | 142 | pc.printf("!2d;"); flags&=!SW2_DOWN; |
azazeal88 | 1:38f32fc3db2c | 143 | } |
azazeal88 | 1:38f32fc3db2c | 144 | if(flags&SW3_UP) { |
azazeal88 | 1:38f32fc3db2c | 145 | pc.printf("!3u;"); flags&=!SW3_UP; |
azazeal88 | 1:38f32fc3db2c | 146 | } |
azazeal88 | 1:38f32fc3db2c | 147 | if(flags&SW3_DOWN) { |
azazeal88 | 1:38f32fc3db2c | 148 | pc.printf("!3d;"); flags&=!SW3_DOWN; |
azazeal88 | 1:38f32fc3db2c | 149 | } |
azazeal88 | 1:38f32fc3db2c | 150 | if(flags&UP_UP) { |
azazeal88 | 1:38f32fc3db2c | 151 | pc.printf("!uu;"); flags&=!UP_UP; |
azazeal88 | 1:38f32fc3db2c | 152 | } |
azazeal88 | 1:38f32fc3db2c | 153 | if(flags&UP_DOWN) { |
azazeal88 | 1:38f32fc3db2c | 154 | pc.printf("!ud;"); flags&=!UP_DOWN; |
co657_mjrb6 | 0:6891aea05ef2 | 155 | } |
azazeal88 | 1:38f32fc3db2c | 156 | if(flags&DOWN_UP) { |
azazeal88 | 1:38f32fc3db2c | 157 | pc.printf("!du;"); flags&=!DOWN_UP; |
azazeal88 | 1:38f32fc3db2c | 158 | } |
azazeal88 | 1:38f32fc3db2c | 159 | if(flags&DOWN_DOWN) { |
azazeal88 | 1:38f32fc3db2c | 160 | pc.printf("!dd;"); flags&=!DOWN_DOWN; |
azazeal88 | 1:38f32fc3db2c | 161 | } |
azazeal88 | 1:38f32fc3db2c | 162 | if(flags&LEFT_UP) { |
azazeal88 | 1:38f32fc3db2c | 163 | pc.printf("!lu;"); flags&=!LEFT_UP; |
azazeal88 | 1:38f32fc3db2c | 164 | } |
azazeal88 | 1:38f32fc3db2c | 165 | if(flags&LEFT_DOWN) { |
azazeal88 | 1:38f32fc3db2c | 166 | pc.printf("!ld;"); flags&=!LEFT_DOWN; |
co657_mjrb6 | 0:6891aea05ef2 | 167 | } |
azazeal88 | 1:38f32fc3db2c | 168 | if(flags&RIGHT_UP) { |
azazeal88 | 1:38f32fc3db2c | 169 | pc.printf("!ru;"); flags&=!RIGHT_UP; |
azazeal88 | 1:38f32fc3db2c | 170 | } |
azazeal88 | 1:38f32fc3db2c | 171 | if(flags&RIGHT_DOWN) { |
azazeal88 | 1:38f32fc3db2c | 172 | pc.printf("!rd;"); flags&=!RIGHT_DOWN; |
azazeal88 | 1:38f32fc3db2c | 173 | } |
azazeal88 | 1:38f32fc3db2c | 174 | if(flags&FIRE_UP) { |
azazeal88 | 1:38f32fc3db2c | 175 | pc.printf("!fu;"); flags&=!FIRE_UP; |
azazeal88 | 1:38f32fc3db2c | 176 | } |
azazeal88 | 1:38f32fc3db2c | 177 | if(flags&FIRE_DOWN) { |
azazeal88 | 1:38f32fc3db2c | 178 | pc.printf("!fd;"); flags&=!FIRE_DOWN; |
co657_mjrb6 | 0:6891aea05ef2 | 179 | } |
azazeal88 | 1:38f32fc3db2c | 180 | |
azazeal88 | 1:38f32fc3db2c | 181 | //Check for host requests |
co657_mjrb6 | 0:6891aea05ef2 | 182 | if(pc.readable()) { |
azazeal88 | 1:38f32fc3db2c | 183 | switch(pc.getc()) { |
azazeal88 | 1:38f32fc3db2c | 184 | case 'R': { //read digital input |
azazeal88 | 1:38f32fc3db2c | 185 | readDigitalIn(); |
azazeal88 | 1:38f32fc3db2c | 186 | break; |
azazeal88 | 1:38f32fc3db2c | 187 | } |
azazeal88 | 1:38f32fc3db2c | 188 | case 'p': { |
azazeal88 | 1:38f32fc3db2c | 189 | readPot(); |
azazeal88 | 1:38f32fc3db2c | 190 | } |
azazeal88 | 1:38f32fc3db2c | 191 | case 't': { //read temp |
Condo2k4 | 2:2dcdbb85cae0 | 192 | pc.printf("%.4f;",temp.read()); |
azazeal88 | 1:38f32fc3db2c | 193 | break; |
azazeal88 | 1:38f32fc3db2c | 194 | } |
azazeal88 | 1:38f32fc3db2c | 195 | case 'a': {//read shield accel |
azazeal88 | 1:38f32fc3db2c | 196 | pc.printf("%.4f;%.4f;%.4f;",accel.x(),accel.y(),accel.z()); |
azazeal88 | 1:38f32fc3db2c | 197 | break; |
azazeal88 | 1:38f32fc3db2c | 198 | } |
azazeal88 | 1:38f32fc3db2c | 199 | case 'l': { //shield led |
azazeal88 | 1:38f32fc3db2c | 200 | float r, g, b; |
azazeal88 | 1:38f32fc3db2c | 201 | pc.scanf("%f;%f;%f", &r, &g, &b); |
azazeal88 | 1:38f32fc3db2c | 202 | xr = r; xg = g; xb = b; |
azazeal88 | 1:38f32fc3db2c | 203 | break; |
azazeal88 | 1:38f32fc3db2c | 204 | } |
azazeal88 | 1:38f32fc3db2c | 205 | case 'L': { // board led |
azazeal88 | 1:38f32fc3db2c | 206 | float r, g, b; |
azazeal88 | 1:38f32fc3db2c | 207 | pc.scanf("%f;%f;%f", &r, &g, &b); |
azazeal88 | 1:38f32fc3db2c | 208 | lr = r; lg = g; lb = b; |
azazeal88 | 1:38f32fc3db2c | 209 | break; |
azazeal88 | 1:38f32fc3db2c | 210 | } |
azazeal88 | 1:38f32fc3db2c | 211 | case 'M': { //read board magno |
azazeal88 | 1:38f32fc3db2c | 212 | SRAWDATA m, a; |
azazeal88 | 1:38f32fc3db2c | 213 | magAccel.get_data(&a,&m); |
azazeal88 | 1:38f32fc3db2c | 214 | pc.printf("%d;%d;%d;",m.x,m.y,m.z); |
azazeal88 | 1:38f32fc3db2c | 215 | break; |
azazeal88 | 1:38f32fc3db2c | 216 | } |
azazeal88 | 1:38f32fc3db2c | 217 | case 'A': { //read board accel |
azazeal88 | 1:38f32fc3db2c | 218 | SRAWDATA m, a; |
azazeal88 | 1:38f32fc3db2c | 219 | magAccel.get_data(&a,&m); |
azazeal88 | 1:38f32fc3db2c | 220 | pc.printf("%d;%d;%d;",a.x,a.y,a.z); |
azazeal88 | 1:38f32fc3db2c | 221 | break; |
azazeal88 | 1:38f32fc3db2c | 222 | } |
azazeal88 | 1:38f32fc3db2c | 223 | case 'P': { //set lcd position |
azazeal88 | 1:38f32fc3db2c | 224 | int x, y; |
azazeal88 | 1:38f32fc3db2c | 225 | pc.scanf("%d;%d", &x, &y); |
azazeal88 | 1:38f32fc3db2c | 226 | lcd.locate(x,y); |
azazeal88 | 1:38f32fc3db2c | 227 | } |
azazeal88 | 1:38f32fc3db2c | 228 | case 'S': { //print lcd text |
azazeal88 | 1:38f32fc3db2c | 229 | char c = pc.getc(); |
azazeal88 | 1:38f32fc3db2c | 230 | while(c!='"') { |
azazeal88 | 1:38f32fc3db2c | 231 | if(c=='\\') lcd.putc(pc.getc()); |
azazeal88 | 1:38f32fc3db2c | 232 | else lcd.putc(c); |
azazeal88 | 1:38f32fc3db2c | 233 | } |
azazeal88 | 1:38f32fc3db2c | 234 | } |
azazeal88 | 1:38f32fc3db2c | 235 | case 'D': { //print lcd text |
azazeal88 | 1:38f32fc3db2c | 236 | int x, y, c; |
azazeal88 | 1:38f32fc3db2c | 237 | pc.scanf("%d;%d;%d", &x, &y, &c); |
azazeal88 | 1:38f32fc3db2c | 238 | lcd.pixel(x,y,c); |
azazeal88 | 1:38f32fc3db2c | 239 | } |
azazeal88 | 1:38f32fc3db2c | 240 | case 'C': { //clear lcd |
azazeal88 | 1:38f32fc3db2c | 241 | lcd.cls(); |
azazeal88 | 1:38f32fc3db2c | 242 | } |
azazeal88 | 1:38f32fc3db2c | 243 | default: break; |
co657_mjrb6 | 0:6891aea05ef2 | 244 | } |
co657_mjrb6 | 0:6891aea05ef2 | 245 | } |
co657_mjrb6 | 0:6891aea05ef2 | 246 | } |
co657_mjrb6 | 0:6891aea05ef2 | 247 | } |
co657_mjrb6 | 0:6891aea05ef2 | 248 |