Interface layer for the mbed boards ready for the JAVA library
Dependencies: C12832 LM75B MMA7660 mbed FXOS8700Q
Fork of frdm_serial by
Diff: main.cpp
- Revision:
- 8:d70e3e3690fd
- Parent:
- 7:238c6fd5c209
diff -r 238c6fd5c209 -r d70e3e3690fd main.cpp --- a/main.cpp Tue Feb 16 23:07:10 2016 +0000 +++ b/main.cpp Fri Jan 06 11:08:56 2017 +0000 @@ -17,8 +17,13 @@ LM75B temp(D14, D15); MMA7660 sAcc(D14, D15); -FXOS8700Q_acc bAcc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board -FXOS8700Q_mag bMag( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board +I2C i2c(PTE25, PTE24); +//FXOS8700Q fxos(i2c, FXOS8700CQ_SLAVE_ADDR1); +FXOS8700QAccelerometer bAcc(i2c, FXOS8700CQ_SLAVE_ADDR1); // Configured for the FRDM-K64F with onboard sensors +FXOS8700QMagnetometer bMag(i2c, FXOS8700CQ_SLAVE_ADDR1); + +//FXOS8700Q_acc bAcc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board +//FXOS8700Q_mag bMag( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); // Proper Ports and I2C Address for K64F Freedom board InterruptIn sw2_int(SW2), sw3_int(SW3), up_int(A2), down_int(A3), left_int(A4), right_int(A5), fire_int(D4); DigitalIn sw2(SW2), sw3(SW3), up(A2), down(A3), left(A4), right(A5), fire(D4); @@ -159,7 +164,7 @@ } void get_heading() { - MotionSensorDataUnits mag; + motion_data_units_t mag; bMag.getAxis(mag); float heading = atan2(-(mag.x-20.0f),mag.y-5.0f)*180.0f/M_PI; if(heading<0) heading+=360.0f; @@ -174,8 +179,15 @@ lr = r; lg = g; lb = b; } +void set_piezo() { // set piezo buzzer + float vol = pc.readFloat(); + float period = 1.0f/pc.readFloat(); + spkr=vol*0.5f; //convert volume to duty cycle + spkr.period(period); +} + void read_board_magno() { //read board magno - MotionSensorDataUnits mag; + motion_data_units_t mag; bMag.getAxis(mag); pc.sendFloat(mag.x); pc.sendFloat(mag.y); @@ -183,10 +195,11 @@ } void read_board_accel() { //read board accel - float f; - bAcc.getX(&f); pc.sendFloat(f); - bAcc.getY(&f); pc.sendFloat(f); - bAcc.getZ(&f); pc.sendFloat(f); + motion_data_units_t acc; + bAcc.getAxis(acc); + pc.sendFloat(acc.x); + pc.sendFloat(acc.y); + pc.sendFloat(acc.z); } void set_lcd_position() { //set lcd position @@ -211,11 +224,39 @@ lcd.copy_to_lcd(); } -void set_piezo() { // set piezo buzzer - float vol = pc.readFloat(); - float period = 1.0f/pc.readFloat(); - spkr=vol*0.5f; //convert volume to duty cycle - spkr.period(period); +void draw_circle() { + char xyrc[4]; + pc.readData(xyrc, 4); + lcd.circle(xyrc[0],xyrc[1],xyrc[2],xyrc[3]); + lcd.copy_to_lcd(); +} + +void fill_circle() { + char xyrc[4]; + pc.readData(xyrc, 4); + lcd.fillcircle(xyrc[0],xyrc[1],xyrc[2],xyrc[3]); + lcd.copy_to_lcd(); +} + +void draw_line() { + char xyxyc[5]; + pc.readData(xyxyc, 5); + lcd.line(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]); + lcd.copy_to_lcd(); +} + +void draw_rect() { + char xyxyc[5]; + pc.readData(xyxyc, 5); + lcd.rect(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]); + lcd.copy_to_lcd(); +} + +void fill_rect() { + char xyxyc[5]; + pc.readData(xyxyc, 5); + lcd.fillrect(xyxyc[0],xyxyc[1],xyxyc[2],xyxyc[3],xyxyc[4]); + lcd.copy_to_lcd(); } void clear_lcd() { //clear lcd @@ -245,6 +286,15 @@ bAcc.enable(); bMag.enable(); + //Pretty wait + ctr=0; + lcd.locate(0,0); + lcd.printf("Awaiting connection..."); + waitTicker.attach(&waitTick,0.5); + while((!pc.readable()) && (pc.readChar()!=RECONNECT)) sleep(); + waitTicker.detach(); + cleanup(); + sw2_int.mode (PullUp); sw2_int.fall(&sw2Down); sw2_int.rise(&sw2Up); @@ -273,15 +323,6 @@ fire_int.rise(&fireDown); fire_int.fall(&fireUp); - //Pretty wait - ctr=0; - lcd.locate(0,0); - lcd.printf("Awaiting connection..."); - waitTicker.attach(&waitTick,0.5); - while((!pc.readable()) && (pc.readChar()!=RECONNECT)) sleep(); - waitTicker.detach(); - cleanup(); - for(;;) { //Check if any interrupts fired if(flags&SW2_UP) {