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:
azazeal88
Date:
Fri Nov 20 15:50:38 2015 +0000
Revision:
1:38f32fc3db2c
Parent:
0:6891aea05ef2
Child:
2:2dcdbb85cae0
First commit

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"
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);
azazeal88 1:38f32fc3db2c 15 MMA7660 accel(SDA,SCL);
azazeal88 1:38f32fc3db2c 16 FXOS8700CQ magAccel(SDA,SCL,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);
azazeal88 1:38f32fc3db2c 19 DigitalIn sw2(PTC6), sw3(PTA4), up(A2), down(A2A3, 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
azazeal88 1:38f32fc3db2c 45 void sw2Down(){ flags |= SW2_DOWN; }
azazeal88 1:38f32fc3db2c 46 void sw2Up() { flags |= SW2_UP; }
azazeal88 1:38f32fc3db2c 47
azazeal88 1:38f32fc3db2c 48 void sw3Down(){ flags |= SW3_DOWN; }
azazeal88 1:38f32fc3db2c 49 void sw3Up() { flags |= SW3_UP; }
azazeal88 1:38f32fc3db2c 50
azazeal88 1:38f32fc3db2c 51 void upDown(){ flags |= UP_DOWN; }
azazeal88 1:38f32fc3db2c 52 void upUp() { flags |= UP_UP; }
azazeal88 1:38f32fc3db2c 53
azazeal88 1:38f32fc3db2c 54 void downDown(){ flags |= DOWN_DOWN; }
azazeal88 1:38f32fc3db2c 55 void downUp() { flags |= DOWN_UP; }
azazeal88 1:38f32fc3db2c 56
azazeal88 1:38f32fc3db2c 57 void leftDown(){ flags |= LEFT_DOWN; }
azazeal88 1:38f32fc3db2c 58 void leftUp() { flags |= LEFT_UP; }
azazeal88 1:38f32fc3db2c 59
azazeal88 1:38f32fc3db2c 60 void rightDown(){ flags |= RIGHT_DOWN; }
azazeal88 1:38f32fc3db2c 61 void rightUp() { flags |= RIGHT_UP; }
azazeal88 1:38f32fc3db2c 62
azazeal88 1:38f32fc3db2c 63 void fireDown(){ flags |= FIRE_DOWN; }
azazeal88 1:38f32fc3db2c 64 void fireUp() { flags |= FIRE_UP; }
azazeal88 1:38f32fc3db2c 65
azazeal88 1:38f32fc3db2c 66 void readDigitalIn() {
azazeal88 1:38f32fc3db2c 67 bool val;
azazeal88 1:38f32fc3db2c 68 switch(pc.getc()) {
azazeal88 1:38f32fc3db2c 69 case '2': val=sw2; break;
azazeal88 1:38f32fc3db2c 70 case '3': val=sw3 break;
azazeal88 1:38f32fc3db2c 71 case 'u': val=up; break;
azazeal88 1:38f32fc3db2c 72 case 'd': val=down; break;
azazeal88 1:38f32fc3db2c 73 case 'l': val=left; break;
azazeal88 1:38f32fc3db2c 74 case 'r': val=right; break;
azazeal88 1:38f32fc3db2c 75 case 'f': val=fire; break;
azazeal88 1:38f32fc3db2c 76 default: return;
co657_mjrb6 0:6891aea05ef2 77 }
azazeal88 1:38f32fc3db2c 78 pc.printf(val?"t;":"f;");
co657_mjrb6 0:6891aea05ef2 79 }
co657_mjrb6 0:6891aea05ef2 80
azazeal88 1:38f32fc3db2c 81 void readPot() {
azazeal88 1:38f32fc3db2c 82 float val;
azazeal88 1:38f32fc3db2c 83 switch(pc.getc()) {
azazeal88 1:38f32fc3db2c 84 case '1': val=pot1; break;
azazeal88 1:38f32fc3db2c 85 case '2': val=pot2; break;
azazeal88 1:38f32fc3db2c 86 default: return;
azazeal88 1:38f32fc3db2c 87 }
azazeal88 1:38f32fc3db2c 88 pc.printf("%6.4f;",val);
co657_mjrb6 0:6891aea05ef2 89 }
co657_mjrb6 0:6891aea05ef2 90
co657_mjrb6 0:6891aea05ef2 91 int main() {
azazeal88 1:38f32fc3db2c 92 //SETUP
azazeal88 1:38f32fc3db2c 93
azazeal88 1:38f32fc3db2c 94 xr = xg = xb = 0;
azazeal88 1:38f32fc3db2c 95 lr = lg = lb = 0;
co657_mjrb6 0:6891aea05ef2 96
co657_mjrb6 0:6891aea05ef2 97 sw2_int.mode (PullUp);
co657_mjrb6 0:6891aea05ef2 98 sw2_int.fall(&sw2Down);
co657_mjrb6 0:6891aea05ef2 99 sw2_int.rise(&sw2Up);
co657_mjrb6 0:6891aea05ef2 100
co657_mjrb6 0:6891aea05ef2 101 sw3_int.mode (PullUp);
co657_mjrb6 0:6891aea05ef2 102 sw3_int.fall(&sw3Down);
co657_mjrb6 0:6891aea05ef2 103 sw3_int.rise(&sw3Up);
co657_mjrb6 0:6891aea05ef2 104
azazeal88 1:38f32fc3db2c 105 up_int.mode (PullUp);
azazeal88 1:38f32fc3db2c 106 up_int.fall(&upDown);
azazeal88 1:38f32fc3db2c 107 up_int.rise(&upUp);
azazeal88 1:38f32fc3db2c 108 up_int.disable_irq();
azazeal88 1:38f32fc3db2c 109
azazeal88 1:38f32fc3db2c 110 down_int.mode (PullUp);
azazeal88 1:38f32fc3db2c 111 down_int.fall(&downDown);
azazeal88 1:38f32fc3db2c 112 down_int.rise(&downUp);
azazeal88 1:38f32fc3db2c 113
azazeal88 1:38f32fc3db2c 114 left_int.mode (PullUp);
azazeal88 1:38f32fc3db2c 115 left_int.fall(&leftDown);
azazeal88 1:38f32fc3db2c 116 left_int.rise(&leftUp);
azazeal88 1:38f32fc3db2c 117
azazeal88 1:38f32fc3db2c 118 right_int.mode (PullUp);
azazeal88 1:38f32fc3db2c 119 right_int.fall(&rightDown);
azazeal88 1:38f32fc3db2c 120 right_int.rise(&rightUp);
azazeal88 1:38f32fc3db2c 121
azazeal88 1:38f32fc3db2c 122 fire_int.mode (PullUp);
azazeal88 1:38f32fc3db2c 123 fire_int.fall(&fireDown);
azazeal88 1:38f32fc3db2c 124 fire_int.rise(&fireUp);
azazeal88 1:38f32fc3db2c 125
co657_mjrb6 0:6891aea05ef2 126 tempSender.attach(&sendTemp, 2.0);
co657_mjrb6 0:6891aea05ef2 127
co657_mjrb6 0:6891aea05ef2 128 pc.baud(115200);
azazeal88 1:38f32fc3db2c 129
azazeal88 1:38f32fc3db2c 130 for(;;) {
azazeal88 1:38f32fc3db2c 131 //Check for interrupts
azazeal88 1:38f32fc3db2c 132 if(flags&SW2_UP) {
azazeal88 1:38f32fc3db2c 133 pc.printf("!2u;"); flags&=!SW2_UP;
azazeal88 1:38f32fc3db2c 134 }
azazeal88 1:38f32fc3db2c 135 if(flags&SW2_DOWN) {
azazeal88 1:38f32fc3db2c 136 pc.printf("!2d;"); flags&=!SW2_DOWN;
azazeal88 1:38f32fc3db2c 137 }
azazeal88 1:38f32fc3db2c 138 if(flags&SW3_UP) {
azazeal88 1:38f32fc3db2c 139 pc.printf("!3u;"); flags&=!SW3_UP;
azazeal88 1:38f32fc3db2c 140 }
azazeal88 1:38f32fc3db2c 141 if(flags&SW3_DOWN) {
azazeal88 1:38f32fc3db2c 142 pc.printf("!3d;"); flags&=!SW3_DOWN;
azazeal88 1:38f32fc3db2c 143 }
azazeal88 1:38f32fc3db2c 144 if(flags&UP_UP) {
azazeal88 1:38f32fc3db2c 145 pc.printf("!uu;"); flags&=!UP_UP;
azazeal88 1:38f32fc3db2c 146 }
azazeal88 1:38f32fc3db2c 147 if(flags&UP_DOWN) {
azazeal88 1:38f32fc3db2c 148 pc.printf("!ud;"); flags&=!UP_DOWN;
co657_mjrb6 0:6891aea05ef2 149 }
azazeal88 1:38f32fc3db2c 150 if(flags&DOWN_UP) {
azazeal88 1:38f32fc3db2c 151 pc.printf("!du;"); flags&=!DOWN_UP;
azazeal88 1:38f32fc3db2c 152 }
azazeal88 1:38f32fc3db2c 153 if(flags&DOWN_DOWN) {
azazeal88 1:38f32fc3db2c 154 pc.printf("!dd;"); flags&=!DOWN_DOWN;
azazeal88 1:38f32fc3db2c 155 }
azazeal88 1:38f32fc3db2c 156 if(flags&LEFT_UP) {
azazeal88 1:38f32fc3db2c 157 pc.printf("!lu;"); flags&=!LEFT_UP;
azazeal88 1:38f32fc3db2c 158 }
azazeal88 1:38f32fc3db2c 159 if(flags&LEFT_DOWN) {
azazeal88 1:38f32fc3db2c 160 pc.printf("!ld;"); flags&=!LEFT_DOWN;
co657_mjrb6 0:6891aea05ef2 161 }
azazeal88 1:38f32fc3db2c 162 if(flags&RIGHT_UP) {
azazeal88 1:38f32fc3db2c 163 pc.printf("!ru;"); flags&=!RIGHT_UP;
azazeal88 1:38f32fc3db2c 164 }
azazeal88 1:38f32fc3db2c 165 if(flags&RIGHT_DOWN) {
azazeal88 1:38f32fc3db2c 166 pc.printf("!rd;"); flags&=!RIGHT_DOWN;
azazeal88 1:38f32fc3db2c 167 }
azazeal88 1:38f32fc3db2c 168 if(flags&FIRE_UP) {
azazeal88 1:38f32fc3db2c 169 pc.printf("!fu;"); flags&=!FIRE_UP;
azazeal88 1:38f32fc3db2c 170 }
azazeal88 1:38f32fc3db2c 171 if(flags&FIRE_DOWN) {
azazeal88 1:38f32fc3db2c 172 pc.printf("!fd;"); flags&=!FIRE_DOWN;
co657_mjrb6 0:6891aea05ef2 173 }
azazeal88 1:38f32fc3db2c 174
azazeal88 1:38f32fc3db2c 175 //Check for host requests
co657_mjrb6 0:6891aea05ef2 176 if(pc.readable()) {
azazeal88 1:38f32fc3db2c 177 switch(pc.getc()) {
azazeal88 1:38f32fc3db2c 178 case 'R': { //read digital input
azazeal88 1:38f32fc3db2c 179 readDigitalIn();
azazeal88 1:38f32fc3db2c 180 break;
azazeal88 1:38f32fc3db2c 181 }
azazeal88 1:38f32fc3db2c 182 case 'p': {
azazeal88 1:38f32fc3db2c 183 readPot();
azazeal88 1:38f32fc3db2c 184 }
azazeal88 1:38f32fc3db2c 185 case 't': { //read temp
azazeal88 1:38f32fc3db2c 186 pc.printf("%.4f;",temp.temp());
azazeal88 1:38f32fc3db2c 187 break;
azazeal88 1:38f32fc3db2c 188 }
azazeal88 1:38f32fc3db2c 189 case 'a': {//read shield accel
azazeal88 1:38f32fc3db2c 190 pc.printf("%.4f;%.4f;%.4f;",accel.x(),accel.y(),accel.z());
azazeal88 1:38f32fc3db2c 191 break;
azazeal88 1:38f32fc3db2c 192 }
azazeal88 1:38f32fc3db2c 193 case 'l': { //shield led
azazeal88 1:38f32fc3db2c 194 float r, g, b;
azazeal88 1:38f32fc3db2c 195 pc.scanf("%f;%f;%f", &r, &g, &b);
azazeal88 1:38f32fc3db2c 196 xr = r; xg = g; xb = b;
azazeal88 1:38f32fc3db2c 197 break;
azazeal88 1:38f32fc3db2c 198 }
azazeal88 1:38f32fc3db2c 199 case 'L': { // board 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 lr = r; lg = g; lb = b;
azazeal88 1:38f32fc3db2c 203 break;
azazeal88 1:38f32fc3db2c 204 }
azazeal88 1:38f32fc3db2c 205 case 'M': { //read board magno
azazeal88 1:38f32fc3db2c 206 SRAWDATA m, a;
azazeal88 1:38f32fc3db2c 207 magAccel.get_data(&a,&m);
azazeal88 1:38f32fc3db2c 208 pc.printf("%d;%d;%d;",m.x,m.y,m.z);
azazeal88 1:38f32fc3db2c 209 break;
azazeal88 1:38f32fc3db2c 210 }
azazeal88 1:38f32fc3db2c 211 case 'A': { //read board accel
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;",a.x,a.y,a.z);
azazeal88 1:38f32fc3db2c 215 break;
azazeal88 1:38f32fc3db2c 216 }
azazeal88 1:38f32fc3db2c 217 case 'P': { //set lcd position
azazeal88 1:38f32fc3db2c 218 int x, y;
azazeal88 1:38f32fc3db2c 219 pc.scanf("%d;%d", &x, &y);
azazeal88 1:38f32fc3db2c 220 lcd.locate(x,y);
azazeal88 1:38f32fc3db2c 221 }
azazeal88 1:38f32fc3db2c 222 case 'S': { //print lcd text
azazeal88 1:38f32fc3db2c 223 int x, y;
azazeal88 1:38f32fc3db2c 224 char c = pc.getc();
azazeal88 1:38f32fc3db2c 225 while(c!='"') {
azazeal88 1:38f32fc3db2c 226 if(c=='\\') lcd.putc(pc.getc());
azazeal88 1:38f32fc3db2c 227 else lcd.putc(c);
azazeal88 1:38f32fc3db2c 228 }
azazeal88 1:38f32fc3db2c 229 }
azazeal88 1:38f32fc3db2c 230 case 'D': { //print lcd text
azazeal88 1:38f32fc3db2c 231 int x, y, c;
azazeal88 1:38f32fc3db2c 232 pc.scanf("%d;%d;%d", &x, &y, &c);
azazeal88 1:38f32fc3db2c 233 lcd.pixel(x,y,c);
azazeal88 1:38f32fc3db2c 234 }
azazeal88 1:38f32fc3db2c 235 case 'C': { //clear lcd
azazeal88 1:38f32fc3db2c 236 lcd.cls();
azazeal88 1:38f32fc3db2c 237 }
azazeal88 1:38f32fc3db2c 238 default: break;
co657_mjrb6 0:6891aea05ef2 239 }
co657_mjrb6 0:6891aea05ef2 240 }
co657_mjrb6 0:6891aea05ef2 241 }
co657_mjrb6 0:6891aea05ef2 242 }
co657_mjrb6 0:6891aea05ef2 243