NXP Lego plotter demo code using FRDM-34931S-EVB, FRDM-STBC-AGM01, and FRDM-K64F (accelerometer/client side).
Dependencies: EthernetInterface mbed-rtos mbed
Fork of DEMO_plotter_acc-client by
main.cpp@0:65cab7b6fd7a, 2016-05-27 (annotated)
- Committer:
- mareikeFSL
- Date:
- Fri May 27 21:07:24 2016 +0000
- Revision:
- 0:65cab7b6fd7a
Initial publication
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mareikeFSL | 0:65cab7b6fd7a | 1 | /*--------------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 2 | /* Plotter Demo Code for K64F (Accelerometer, Ethernet Client) */ |
mareikeFSL | 0:65cab7b6fd7a | 3 | /*--------------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 4 | |
mareikeFSL | 0:65cab7b6fd7a | 5 | /*--COMPANY-----AUTHOR------DATE------------REVISION----NOTES---------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 6 | /* NXP mareikeFSL 2016.02.05 rev 1.0 initial */ |
mareikeFSL | 0:65cab7b6fd7a | 7 | /* NXP mareikeFSL 2016.03.02 rev 1.1 added feedback / enable */ |
mareikeFSL | 0:65cab7b6fd7a | 8 | /* */ |
mareikeFSL | 0:65cab7b6fd7a | 9 | /*--------------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 10 | |
mareikeFSL | 0:65cab7b6fd7a | 11 | /*--PROGRAM FLOW------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 12 | /* MAIN */ |
mareikeFSL | 0:65cab7b6fd7a | 13 | /* -> */ |
mareikeFSL | 0:65cab7b6fd7a | 14 | /*--------------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 15 | |
mareikeFSL | 0:65cab7b6fd7a | 16 | /*--HARDWARE----------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 17 | /* FRDM-K64F #2 REV: 700-28163 REV C, SCH-28163 REV E */ |
mareikeFSL | 0:65cab7b6fd7a | 18 | /* FRDM-STBC-AGM01 REV: 700-28556 REV B, SCH-28566 REV C */ |
mareikeFSL | 0:65cab7b6fd7a | 19 | /* FRDM-STBC-AGM01 J5 is (1-2), J6 is (1-2), J7 is (1-2) */ |
mareikeFSL | 0:65cab7b6fd7a | 20 | /* Ethernet cable from FRDM-K64F (#1) to FRDM-K64F (#2) */ |
mareikeFSL | 0:65cab7b6fd7a | 21 | /*--------------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 22 | |
mareikeFSL | 0:65cab7b6fd7a | 23 | /*--GPIO--------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 24 | /* INT1_8700 (INT1) = PTB19 (J1-3) */ |
mareikeFSL | 0:65cab7b6fd7a | 25 | /* INT2_8700 (INT2) = PTC1 (J1-5) */ |
mareikeFSL | 0:65cab7b6fd7a | 26 | /* INT1_21002 (INT1_G) = PTB9 (J1-6) */ |
mareikeFSL | 0:65cab7b6fd7a | 27 | /* INT2_21002 (INT2_G) = PTE26 (J2-1) */ |
mareikeFSL | 0:65cab7b6fd7a | 28 | /* SPI_CSB_21002 (CS_G) = PTD0 (J2-6) */ |
mareikeFSL | 0:65cab7b6fd7a | 29 | /* RST_GPIO (RESET) = PTB11 (J10-4) */ |
mareikeFSL | 0:65cab7b6fd7a | 30 | /* SA1_CSB_8700 (CS) = PTB10 (J10-3) */ |
mareikeFSL | 0:65cab7b6fd7a | 31 | /* RST_MCU (U_RESET) = RESET (J9-3) */ |
mareikeFSL | 0:65cab7b6fd7a | 32 | /*--------------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 33 | /*--SPI---------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 34 | /* SPI_MOSI (MOSI) = PTD2 (J2-4) */ |
mareikeFSL | 0:65cab7b6fd7a | 35 | /* SA0_MISO (MISO) = PTD3 (J2-5) */ |
mareikeFSL | 0:65cab7b6fd7a | 36 | /* SPI_SCLK (CLK) = PTD1 (J2-6) */ |
mareikeFSL | 0:65cab7b6fd7a | 37 | /*--------------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 38 | /*--I2C---------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 39 | /* I2C_SDA0 (DATA0) = PTE25 (J2-9) */ |
mareikeFSL | 0:65cab7b6fd7a | 40 | /* I2C_SCL0 (CLK0) = PTE24 (J2-10) */ |
mareikeFSL | 0:65cab7b6fd7a | 41 | /* I2C_SCL1 (CLK1) = PTC10 (J10-6) */ |
mareikeFSL | 0:65cab7b6fd7a | 42 | /* I2C_SDA1 (DATA1) = PTC11 (J10-5) */ |
mareikeFSL | 0:65cab7b6fd7a | 43 | /*--------------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 44 | /*--OTHER-------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 45 | /* GND (GND) = GND (J2-8) */ |
mareikeFSL | 0:65cab7b6fd7a | 46 | /* GND (GND) = GND (J9-7) */ |
mareikeFSL | 0:65cab7b6fd7a | 47 | /* GND (GND) = GND (J9-6) */ |
mareikeFSL | 0:65cab7b6fd7a | 48 | /* VDD (VDD) = VDD (J9-4) */ |
mareikeFSL | 0:65cab7b6fd7a | 49 | /* VDD (VDD) = VDD (J9-2) */ |
mareikeFSL | 0:65cab7b6fd7a | 50 | /*--------------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 51 | |
mareikeFSL | 0:65cab7b6fd7a | 52 | |
mareikeFSL | 0:65cab7b6fd7a | 53 | /*--INCLUDES----------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 54 | #include "mbed.h" |
mareikeFSL | 0:65cab7b6fd7a | 55 | #include "EthernetInterface.h" |
mareikeFSL | 0:65cab7b6fd7a | 56 | #include <string> |
mareikeFSL | 0:65cab7b6fd7a | 57 | |
mareikeFSL | 0:65cab7b6fd7a | 58 | |
mareikeFSL | 0:65cab7b6fd7a | 59 | /*--DEFINES-----------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 60 | #define STATUS 0x00 //read |
mareikeFSL | 0:65cab7b6fd7a | 61 | #define OUT_X_MSB 0x01 //read |
mareikeFSL | 0:65cab7b6fd7a | 62 | #define OUT_Y_MSB 0x03 //read |
mareikeFSL | 0:65cab7b6fd7a | 63 | #define OUT_Z_MSB 0x05 //read |
mareikeFSL | 0:65cab7b6fd7a | 64 | #define WHO_AM_I 0x0D //read |
mareikeFSL | 0:65cab7b6fd7a | 65 | #define CTRL_REG1 0x2A //read/write |
mareikeFSL | 0:65cab7b6fd7a | 66 | #define ADDRESS 0x3A //address of FXOS8700CQ (on schematic) |
mareikeFSL | 0:65cab7b6fd7a | 67 | #define WHO_AM_I_VALUE 0xC7 //value of who_am_i |
mareikeFSL | 0:65cab7b6fd7a | 68 | |
mareikeFSL | 0:65cab7b6fd7a | 69 | #define CODE_MASK_CLEAR 0x3F; |
mareikeFSL | 0:65cab7b6fd7a | 70 | #define BOARD1_PWMA 0x00 //board 1, pwm a = 0b0000 |
mareikeFSL | 0:65cab7b6fd7a | 71 | #define BOARD1_PWMB 0x40 //board 1, pwm b = 0b0100 |
mareikeFSL | 0:65cab7b6fd7a | 72 | #define BOARD2_PWMA 0x80 //board 2, pwm a = 0x1000 |
mareikeFSL | 0:65cab7b6fd7a | 73 | #define BOARD2_PWMB 0xC0 //board 2, pwm b = 0x1100 |
mareikeFSL | 0:65cab7b6fd7a | 74 | #define X_STOP 0xFA |
mareikeFSL | 0:65cab7b6fd7a | 75 | #define Y_STOP 0xFB |
mareikeFSL | 0:65cab7b6fd7a | 76 | |
mareikeFSL | 0:65cab7b6fd7a | 77 | #define BL_0_max 0x0A |
mareikeFSL | 0:65cab7b6fd7a | 78 | #define BL_80_max 0x1D |
mareikeFSL | 0:65cab7b6fd7a | 79 | #define BL_90_max 0x31 |
mareikeFSL | 0:65cab7b6fd7a | 80 | #define BL_100_max 0x80 |
mareikeFSL | 0:65cab7b6fd7a | 81 | |
mareikeFSL | 0:65cab7b6fd7a | 82 | #define BL_0to80_lim 0x06 |
mareikeFSL | 0:65cab7b6fd7a | 83 | #define BL_80to0_lim 0x0F |
mareikeFSL | 0:65cab7b6fd7a | 84 | #define BL_80to90_lim 0x19 |
mareikeFSL | 0:65cab7b6fd7a | 85 | #define BL_90to80_lim 0x22 |
mareikeFSL | 0:65cab7b6fd7a | 86 | #define BL_90to100_lim 0x2D |
mareikeFSL | 0:65cab7b6fd7a | 87 | #define BL_100to90_lim 0x36 |
mareikeFSL | 0:65cab7b6fd7a | 88 | |
mareikeFSL | 0:65cab7b6fd7a | 89 | #define FR_80_max 0xF4 |
mareikeFSL | 0:65cab7b6fd7a | 90 | #define FR_90_max 0xE1 |
mareikeFSL | 0:65cab7b6fd7a | 91 | #define FR_100_max 0xCD |
mareikeFSL | 0:65cab7b6fd7a | 92 | |
mareikeFSL | 0:65cab7b6fd7a | 93 | #define FR_0to80_lim 0xF9 |
mareikeFSL | 0:65cab7b6fd7a | 94 | #define FR_80to0_lim 0xF0 |
mareikeFSL | 0:65cab7b6fd7a | 95 | #define FR_80to90_lim 0xE6 |
mareikeFSL | 0:65cab7b6fd7a | 96 | #define FR_90to80_lim 0xDD |
mareikeFSL | 0:65cab7b6fd7a | 97 | #define FR_90to100_lim 0xD2 |
mareikeFSL | 0:65cab7b6fd7a | 98 | #define FR_100to90_lim 0xC9 |
mareikeFSL | 0:65cab7b6fd7a | 99 | |
mareikeFSL | 0:65cab7b6fd7a | 100 | #define DC_0 0x00 |
mareikeFSL | 0:65cab7b6fd7a | 101 | #define DC_80 0x19 //0x28 = 80, 0x19 = 50 |
mareikeFSL | 0:65cab7b6fd7a | 102 | #define DC_90 0x23 //0x2D = 90, 0x23 = 70 |
mareikeFSL | 0:65cab7b6fd7a | 103 | #define DC_100 0x32 |
mareikeFSL | 0:65cab7b6fd7a | 104 | |
mareikeFSL | 0:65cab7b6fd7a | 105 | |
mareikeFSL | 0:65cab7b6fd7a | 106 | /*--CONSTANTS---------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 107 | const int PORT = 7; |
mareikeFSL | 0:65cab7b6fd7a | 108 | static const char* SERVER_IP = "192.168.1.101"; //IP of motor board |
mareikeFSL | 0:65cab7b6fd7a | 109 | static const char* CLIENT_IP = "192.168.1.102"; //IP of accelerometer board |
mareikeFSL | 0:65cab7b6fd7a | 110 | static const char* MASK = "255.255.255.0"; //mask |
mareikeFSL | 0:65cab7b6fd7a | 111 | static const char* GATEWAY = "192.168.1.1"; //gateway |
mareikeFSL | 0:65cab7b6fd7a | 112 | |
mareikeFSL | 0:65cab7b6fd7a | 113 | |
mareikeFSL | 0:65cab7b6fd7a | 114 | /*--INITS-------------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 115 | DigitalOut red(LED_RED); //debug led |
mareikeFSL | 0:65cab7b6fd7a | 116 | DigitalOut green(LED_GREEN); //debug led |
mareikeFSL | 0:65cab7b6fd7a | 117 | DigitalOut blue(LED_BLUE); //debug led |
mareikeFSL | 0:65cab7b6fd7a | 118 | |
mareikeFSL | 0:65cab7b6fd7a | 119 | EthernetInterface eth; //create ethernet |
mareikeFSL | 0:65cab7b6fd7a | 120 | UDPSocket sock; //creat socket |
mareikeFSL | 0:65cab7b6fd7a | 121 | Endpoint server; //create endpoint |
mareikeFSL | 0:65cab7b6fd7a | 122 | |
mareikeFSL | 0:65cab7b6fd7a | 123 | I2C i2c0(PTE25, PTE24); //I2C0 |
mareikeFSL | 0:65cab7b6fd7a | 124 | |
mareikeFSL | 0:65cab7b6fd7a | 125 | |
mareikeFSL | 0:65cab7b6fd7a | 126 | /*--VARIABLES---------------------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 127 | int n; //size of received message |
mareikeFSL | 0:65cab7b6fd7a | 128 | char in_buffer[1]; //create receive buffer |
mareikeFSL | 0:65cab7b6fd7a | 129 | char counter1[1] = {0}; //sample send buffer |
mareikeFSL | 0:65cab7b6fd7a | 130 | char counter2[1] = {5}; //sample send buffer |
mareikeFSL | 0:65cab7b6fd7a | 131 | char X_MSB_data[1] = {0x00}; |
mareikeFSL | 0:65cab7b6fd7a | 132 | char Y_MSB_data[1] = {0x00}; |
mareikeFSL | 0:65cab7b6fd7a | 133 | char x_axis = 1; |
mareikeFSL | 0:65cab7b6fd7a | 134 | char y_axis = 0; |
mareikeFSL | 0:65cab7b6fd7a | 135 | char prev_X = 0; |
mareikeFSL | 0:65cab7b6fd7a | 136 | char prev_Y = 0; |
mareikeFSL | 0:65cab7b6fd7a | 137 | |
mareikeFSL | 0:65cab7b6fd7a | 138 | |
mareikeFSL | 0:65cab7b6fd7a | 139 | /*--FUNCTION DECLARATIONS---------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 140 | void init_eth(void); //initializes ethernet |
mareikeFSL | 0:65cab7b6fd7a | 141 | |
mareikeFSL | 0:65cab7b6fd7a | 142 | void init_i2c0(void); //initializes I2C0 |
mareikeFSL | 0:65cab7b6fd7a | 143 | void init_acc(void); |
mareikeFSL | 0:65cab7b6fd7a | 144 | char read_register(char address, //reads from register |
mareikeFSL | 0:65cab7b6fd7a | 145 | char reg, |
mareikeFSL | 0:65cab7b6fd7a | 146 | char if_print); |
mareikeFSL | 0:65cab7b6fd7a | 147 | void write_register(char address, //writes to register |
mareikeFSL | 0:65cab7b6fd7a | 148 | char reg, |
mareikeFSL | 0:65cab7b6fd7a | 149 | char write_data, |
mareikeFSL | 0:65cab7b6fd7a | 150 | bool if_print); |
mareikeFSL | 0:65cab7b6fd7a | 151 | void read_acc(void); |
mareikeFSL | 0:65cab7b6fd7a | 152 | char convert_acc_to_pwm(char input, char axis); |
mareikeFSL | 0:65cab7b6fd7a | 153 | int main(void); |
mareikeFSL | 0:65cab7b6fd7a | 154 | |
mareikeFSL | 0:65cab7b6fd7a | 155 | |
mareikeFSL | 0:65cab7b6fd7a | 156 | /*--FUNCTION DEFINITIONS----------------------------------------------------------*/ |
mareikeFSL | 0:65cab7b6fd7a | 157 | |
mareikeFSL | 0:65cab7b6fd7a | 158 | /***********************************************************************INIT_ETH***/ |
mareikeFSL | 0:65cab7b6fd7a | 159 | void init_eth(void) |
mareikeFSL | 0:65cab7b6fd7a | 160 | { |
mareikeFSL | 0:65cab7b6fd7a | 161 | eth.init(CLIENT_IP, MASK, GATEWAY); //set up IP |
mareikeFSL | 0:65cab7b6fd7a | 162 | eth.connect(); //connect ethernet, takes ~15s |
mareikeFSL | 0:65cab7b6fd7a | 163 | sock.init(); //initialize socket |
mareikeFSL | 0:65cab7b6fd7a | 164 | server.set_address(SERVER_IP, PORT); //set address of server |
mareikeFSL | 0:65cab7b6fd7a | 165 | |
mareikeFSL | 0:65cab7b6fd7a | 166 | } //end init_eth() |
mareikeFSL | 0:65cab7b6fd7a | 167 | |
mareikeFSL | 0:65cab7b6fd7a | 168 | /**********************************************************************INIT_I2C0***/ |
mareikeFSL | 0:65cab7b6fd7a | 169 | void init_i2c0(void) |
mareikeFSL | 0:65cab7b6fd7a | 170 | { |
mareikeFSL | 0:65cab7b6fd7a | 171 | i2c0.frequency(100000); //freq (100kHz) |
mareikeFSL | 0:65cab7b6fd7a | 172 | |
mareikeFSL | 0:65cab7b6fd7a | 173 | } //end init_i2c0() |
mareikeFSL | 0:65cab7b6fd7a | 174 | |
mareikeFSL | 0:65cab7b6fd7a | 175 | /******************************************************************READ REGISTER***/ |
mareikeFSL | 0:65cab7b6fd7a | 176 | char read_register(char address, char reg, bool if_print) |
mareikeFSL | 0:65cab7b6fd7a | 177 | { |
mareikeFSL | 0:65cab7b6fd7a | 178 | char return_data = 0; |
mareikeFSL | 0:65cab7b6fd7a | 179 | char data[1] = {reg}; |
mareikeFSL | 0:65cab7b6fd7a | 180 | |
mareikeFSL | 0:65cab7b6fd7a | 181 | i2c0.write(address, data, 1, true); //write I2C address, then register to read |
mareikeFSL | 0:65cab7b6fd7a | 182 | i2c0.read(address, data, 1); //read from register, store result in data |
mareikeFSL | 0:65cab7b6fd7a | 183 | |
mareikeFSL | 0:65cab7b6fd7a | 184 | return_data = data[0]; |
mareikeFSL | 0:65cab7b6fd7a | 185 | |
mareikeFSL | 0:65cab7b6fd7a | 186 | return return_data; |
mareikeFSL | 0:65cab7b6fd7a | 187 | |
mareikeFSL | 0:65cab7b6fd7a | 188 | } //end read_register() |
mareikeFSL | 0:65cab7b6fd7a | 189 | |
mareikeFSL | 0:65cab7b6fd7a | 190 | /*****************************************************************WRITE REGISTER***/ |
mareikeFSL | 0:65cab7b6fd7a | 191 | void write_register(char address, char reg, char write_data, bool if_print) |
mareikeFSL | 0:65cab7b6fd7a | 192 | { |
mareikeFSL | 0:65cab7b6fd7a | 193 | char data[2] = {reg, write_data}; |
mareikeFSL | 0:65cab7b6fd7a | 194 | |
mareikeFSL | 0:65cab7b6fd7a | 195 | i2c0.write(address, data, 2); //write I2C address, then register, then data |
mareikeFSL | 0:65cab7b6fd7a | 196 | |
mareikeFSL | 0:65cab7b6fd7a | 197 | } //end write_register() |
mareikeFSL | 0:65cab7b6fd7a | 198 | |
mareikeFSL | 0:65cab7b6fd7a | 199 | /***********************************************************************INIT_ACC***/ |
mareikeFSL | 0:65cab7b6fd7a | 200 | void init_acc(void) |
mareikeFSL | 0:65cab7b6fd7a | 201 | { |
mareikeFSL | 0:65cab7b6fd7a | 202 | write_register(ADDRESS, CTRL_REG1, 0x00, false); //standby |
mareikeFSL | 0:65cab7b6fd7a | 203 | write_register(ADDRESS, CTRL_REG1, 0x01, false); //enable |
mareikeFSL | 0:65cab7b6fd7a | 204 | char success = read_register(ADDRESS, WHO_AM_I, false); |
mareikeFSL | 0:65cab7b6fd7a | 205 | |
mareikeFSL | 0:65cab7b6fd7a | 206 | } //end init_acc() |
mareikeFSL | 0:65cab7b6fd7a | 207 | |
mareikeFSL | 0:65cab7b6fd7a | 208 | /***********************************************************************READ_ACC***/ |
mareikeFSL | 0:65cab7b6fd7a | 209 | void read_acc(void) |
mareikeFSL | 0:65cab7b6fd7a | 210 | { |
mareikeFSL | 0:65cab7b6fd7a | 211 | X_MSB_data[0] = read_register(ADDRESS, OUT_X_MSB, false); |
mareikeFSL | 0:65cab7b6fd7a | 212 | |
mareikeFSL | 0:65cab7b6fd7a | 213 | Y_MSB_data[0] = read_register(ADDRESS, OUT_Y_MSB, false); |
mareikeFSL | 0:65cab7b6fd7a | 214 | |
mareikeFSL | 0:65cab7b6fd7a | 215 | } //end read_acc() |
mareikeFSL | 0:65cab7b6fd7a | 216 | |
mareikeFSL | 0:65cab7b6fd7a | 217 | /*************************************************************CONVERT ACC TO PWM***/ |
mareikeFSL | 0:65cab7b6fd7a | 218 | char convert_acc_to_pwm(char input, char axis) |
mareikeFSL | 0:65cab7b6fd7a | 219 | { |
mareikeFSL | 0:65cab7b6fd7a | 220 | char send; |
mareikeFSL | 0:65cab7b6fd7a | 221 | |
mareikeFSL | 0:65cab7b6fd7a | 222 | if(input <= BL_0_max) //- - - - - - - - - - - - - - - - - - - - - - - - BL_0_max |
mareikeFSL | 0:65cab7b6fd7a | 223 | { |
mareikeFSL | 0:65cab7b6fd7a | 224 | if(axis) |
mareikeFSL | 0:65cab7b6fd7a | 225 | { |
mareikeFSL | 0:65cab7b6fd7a | 226 | if((prev_X == DC_80) && (input >= BL_0to80_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 227 | send = BOARD1_PWMA | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 228 | else |
mareikeFSL | 0:65cab7b6fd7a | 229 | { |
mareikeFSL | 0:65cab7b6fd7a | 230 | send = X_STOP; /*BOARD1_PWMA | DC_0;*/ |
mareikeFSL | 0:65cab7b6fd7a | 231 | prev_X = DC_0; |
mareikeFSL | 0:65cab7b6fd7a | 232 | } |
mareikeFSL | 0:65cab7b6fd7a | 233 | } |
mareikeFSL | 0:65cab7b6fd7a | 234 | else |
mareikeFSL | 0:65cab7b6fd7a | 235 | { |
mareikeFSL | 0:65cab7b6fd7a | 236 | if((prev_Y == DC_80) && (input >= BL_0to80_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 237 | send = BOARD2_PWMB | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 238 | else |
mareikeFSL | 0:65cab7b6fd7a | 239 | { |
mareikeFSL | 0:65cab7b6fd7a | 240 | send = Y_STOP; /*BOARD2_PWMB | DC_0;*/ |
mareikeFSL | 0:65cab7b6fd7a | 241 | prev_Y = DC_0; |
mareikeFSL | 0:65cab7b6fd7a | 242 | } |
mareikeFSL | 0:65cab7b6fd7a | 243 | } |
mareikeFSL | 0:65cab7b6fd7a | 244 | } |
mareikeFSL | 0:65cab7b6fd7a | 245 | else if(input <= BL_80_max) //- - - - - - - - - - - - - - - - - - - - -BL_80_max |
mareikeFSL | 0:65cab7b6fd7a | 246 | { |
mareikeFSL | 0:65cab7b6fd7a | 247 | if(axis) |
mareikeFSL | 0:65cab7b6fd7a | 248 | { |
mareikeFSL | 0:65cab7b6fd7a | 249 | if((prev_X == DC_90) && (input >= BL_80to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 250 | send = BOARD1_PWMA | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 251 | else if((prev_X == DC_0) && input <= (BL_80to0_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 252 | send = X_STOP; /*BOARD1_PWMA | DC_0;*/ |
mareikeFSL | 0:65cab7b6fd7a | 253 | else |
mareikeFSL | 0:65cab7b6fd7a | 254 | { |
mareikeFSL | 0:65cab7b6fd7a | 255 | send = BOARD1_PWMA | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 256 | prev_X = DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 257 | } |
mareikeFSL | 0:65cab7b6fd7a | 258 | } |
mareikeFSL | 0:65cab7b6fd7a | 259 | else |
mareikeFSL | 0:65cab7b6fd7a | 260 | { |
mareikeFSL | 0:65cab7b6fd7a | 261 | if((prev_Y == DC_90) && (input >= BL_80to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 262 | send = BOARD2_PWMB | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 263 | else if((prev_Y == DC_0) && input <= (BL_80to0_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 264 | send = Y_STOP; /*BOARD2_PWMB | DC_0;*/ |
mareikeFSL | 0:65cab7b6fd7a | 265 | else |
mareikeFSL | 0:65cab7b6fd7a | 266 | { |
mareikeFSL | 0:65cab7b6fd7a | 267 | send = BOARD2_PWMB | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 268 | prev_Y = DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 269 | } |
mareikeFSL | 0:65cab7b6fd7a | 270 | } |
mareikeFSL | 0:65cab7b6fd7a | 271 | } |
mareikeFSL | 0:65cab7b6fd7a | 272 | else if(input <= BL_90_max) //- - - - - - - - - - - - - - - - - - - - -BL_90_max |
mareikeFSL | 0:65cab7b6fd7a | 273 | { |
mareikeFSL | 0:65cab7b6fd7a | 274 | if(axis) |
mareikeFSL | 0:65cab7b6fd7a | 275 | { |
mareikeFSL | 0:65cab7b6fd7a | 276 | if((prev_X == DC_100) && (input >= BL_90to100_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 277 | send = BOARD1_PWMA | DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 278 | else if((prev_X == DC_80) && input <= (BL_90to80_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 279 | send = BOARD1_PWMA | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 280 | else |
mareikeFSL | 0:65cab7b6fd7a | 281 | { |
mareikeFSL | 0:65cab7b6fd7a | 282 | send = BOARD1_PWMA | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 283 | prev_X = DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 284 | } |
mareikeFSL | 0:65cab7b6fd7a | 285 | } |
mareikeFSL | 0:65cab7b6fd7a | 286 | else |
mareikeFSL | 0:65cab7b6fd7a | 287 | { |
mareikeFSL | 0:65cab7b6fd7a | 288 | if((prev_Y == DC_100) && (input >= BL_90to100_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 289 | send = BOARD2_PWMB | DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 290 | else if((prev_Y == DC_80) && input <= (BL_90to80_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 291 | send = BOARD2_PWMB | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 292 | else |
mareikeFSL | 0:65cab7b6fd7a | 293 | { |
mareikeFSL | 0:65cab7b6fd7a | 294 | send = BOARD2_PWMB | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 295 | prev_Y = DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 296 | } |
mareikeFSL | 0:65cab7b6fd7a | 297 | } |
mareikeFSL | 0:65cab7b6fd7a | 298 | } |
mareikeFSL | 0:65cab7b6fd7a | 299 | else if(input <= BL_100_max) //- - - - - - - - - - - - - - - - - - - -BL_100_max |
mareikeFSL | 0:65cab7b6fd7a | 300 | { |
mareikeFSL | 0:65cab7b6fd7a | 301 | if(axis) |
mareikeFSL | 0:65cab7b6fd7a | 302 | { |
mareikeFSL | 0:65cab7b6fd7a | 303 | if((prev_X == DC_90) && input <= (BL_100to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 304 | send = BOARD1_PWMA | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 305 | else |
mareikeFSL | 0:65cab7b6fd7a | 306 | { |
mareikeFSL | 0:65cab7b6fd7a | 307 | send = BOARD1_PWMA | DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 308 | prev_X = DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 309 | } |
mareikeFSL | 0:65cab7b6fd7a | 310 | } |
mareikeFSL | 0:65cab7b6fd7a | 311 | else |
mareikeFSL | 0:65cab7b6fd7a | 312 | { |
mareikeFSL | 0:65cab7b6fd7a | 313 | if((prev_Y == DC_90) && input <= (BL_100to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 314 | send = BOARD2_PWMB | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 315 | else |
mareikeFSL | 0:65cab7b6fd7a | 316 | { |
mareikeFSL | 0:65cab7b6fd7a | 317 | send = BOARD2_PWMB | DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 318 | prev_Y = DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 319 | } |
mareikeFSL | 0:65cab7b6fd7a | 320 | } |
mareikeFSL | 0:65cab7b6fd7a | 321 | } |
mareikeFSL | 0:65cab7b6fd7a | 322 | else if(input <= FR_100_max) //- - - - - - - - - - - - - - - - - - - -FR_100_max |
mareikeFSL | 0:65cab7b6fd7a | 323 | { |
mareikeFSL | 0:65cab7b6fd7a | 324 | if(axis) |
mareikeFSL | 0:65cab7b6fd7a | 325 | { |
mareikeFSL | 0:65cab7b6fd7a | 326 | if((prev_X == DC_90) && input >= (FR_100to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 327 | send = BOARD1_PWMB | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 328 | else |
mareikeFSL | 0:65cab7b6fd7a | 329 | { |
mareikeFSL | 0:65cab7b6fd7a | 330 | send = BOARD1_PWMB | DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 331 | prev_X = DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 332 | } |
mareikeFSL | 0:65cab7b6fd7a | 333 | } |
mareikeFSL | 0:65cab7b6fd7a | 334 | else |
mareikeFSL | 0:65cab7b6fd7a | 335 | { |
mareikeFSL | 0:65cab7b6fd7a | 336 | if((prev_Y == DC_90) && input >= (FR_100to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 337 | send = BOARD2_PWMA | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 338 | else |
mareikeFSL | 0:65cab7b6fd7a | 339 | { |
mareikeFSL | 0:65cab7b6fd7a | 340 | send = BOARD2_PWMA | DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 341 | prev_Y = DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 342 | } |
mareikeFSL | 0:65cab7b6fd7a | 343 | } |
mareikeFSL | 0:65cab7b6fd7a | 344 | } |
mareikeFSL | 0:65cab7b6fd7a | 345 | else if(input <= FR_90_max) //- - - - - - - - - - - - - - - - - - - - -FR_90_max |
mareikeFSL | 0:65cab7b6fd7a | 346 | { |
mareikeFSL | 0:65cab7b6fd7a | 347 | if(axis) |
mareikeFSL | 0:65cab7b6fd7a | 348 | { |
mareikeFSL | 0:65cab7b6fd7a | 349 | if((prev_X == DC_80) && (input >= FR_90to80_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 350 | send = BOARD1_PWMB | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 351 | else if((prev_X == DC_100) && input <= (FR_100to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 352 | send = BOARD1_PWMB | DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 353 | else |
mareikeFSL | 0:65cab7b6fd7a | 354 | { |
mareikeFSL | 0:65cab7b6fd7a | 355 | send = BOARD1_PWMB | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 356 | prev_X = DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 357 | } |
mareikeFSL | 0:65cab7b6fd7a | 358 | } |
mareikeFSL | 0:65cab7b6fd7a | 359 | else |
mareikeFSL | 0:65cab7b6fd7a | 360 | { |
mareikeFSL | 0:65cab7b6fd7a | 361 | if((prev_Y == DC_80) && (input >= FR_90to80_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 362 | send = BOARD2_PWMA | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 363 | else if((prev_Y == DC_100) && input <= (FR_100to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 364 | send = BOARD2_PWMA | DC_100; |
mareikeFSL | 0:65cab7b6fd7a | 365 | else |
mareikeFSL | 0:65cab7b6fd7a | 366 | { |
mareikeFSL | 0:65cab7b6fd7a | 367 | send = BOARD2_PWMA | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 368 | prev_Y = DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 369 | } |
mareikeFSL | 0:65cab7b6fd7a | 370 | } |
mareikeFSL | 0:65cab7b6fd7a | 371 | } |
mareikeFSL | 0:65cab7b6fd7a | 372 | else if(input <= FR_80_max) //- - - - - - - - - - - - - - - - - - - - -FR_80_max |
mareikeFSL | 0:65cab7b6fd7a | 373 | { |
mareikeFSL | 0:65cab7b6fd7a | 374 | if(axis) |
mareikeFSL | 0:65cab7b6fd7a | 375 | { |
mareikeFSL | 0:65cab7b6fd7a | 376 | if((prev_X == DC_0) && (input >= FR_80to0_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 377 | send = X_STOP; /*BOARD1_PWMB | DC_0;*/ |
mareikeFSL | 0:65cab7b6fd7a | 378 | else if((prev_X == DC_90) && input <= (FR_80to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 379 | send = BOARD1_PWMB | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 380 | else |
mareikeFSL | 0:65cab7b6fd7a | 381 | { |
mareikeFSL | 0:65cab7b6fd7a | 382 | send = BOARD1_PWMB | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 383 | prev_X = DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 384 | } |
mareikeFSL | 0:65cab7b6fd7a | 385 | } |
mareikeFSL | 0:65cab7b6fd7a | 386 | else |
mareikeFSL | 0:65cab7b6fd7a | 387 | { |
mareikeFSL | 0:65cab7b6fd7a | 388 | if((prev_Y == DC_0) && (input >= FR_80to0_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 389 | send = Y_STOP; /*BOARD2_PWMA | DC_0;*/ |
mareikeFSL | 0:65cab7b6fd7a | 390 | else if((prev_Y == DC_90) && input <= (FR_80to90_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 391 | send = BOARD2_PWMA | DC_90; |
mareikeFSL | 0:65cab7b6fd7a | 392 | else |
mareikeFSL | 0:65cab7b6fd7a | 393 | { |
mareikeFSL | 0:65cab7b6fd7a | 394 | send = BOARD2_PWMA | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 395 | prev_Y = DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 396 | } |
mareikeFSL | 0:65cab7b6fd7a | 397 | } |
mareikeFSL | 0:65cab7b6fd7a | 398 | } |
mareikeFSL | 0:65cab7b6fd7a | 399 | else /*if(input <= FR_0_max)*/ //- - - - - - - - - - - - - - - - - - - -FR_0_max |
mareikeFSL | 0:65cab7b6fd7a | 400 | { |
mareikeFSL | 0:65cab7b6fd7a | 401 | if(axis) |
mareikeFSL | 0:65cab7b6fd7a | 402 | { |
mareikeFSL | 0:65cab7b6fd7a | 403 | if((prev_X == DC_80) && input <= (FR_0to80_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 404 | send = BOARD1_PWMB | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 405 | else |
mareikeFSL | 0:65cab7b6fd7a | 406 | { |
mareikeFSL | 0:65cab7b6fd7a | 407 | send = X_STOP; /*BOARD1_PWMB | DC_0;*/ |
mareikeFSL | 0:65cab7b6fd7a | 408 | prev_X = DC_0; |
mareikeFSL | 0:65cab7b6fd7a | 409 | } |
mareikeFSL | 0:65cab7b6fd7a | 410 | } |
mareikeFSL | 0:65cab7b6fd7a | 411 | else |
mareikeFSL | 0:65cab7b6fd7a | 412 | { |
mareikeFSL | 0:65cab7b6fd7a | 413 | if((prev_Y == DC_80) && input <= (FR_0to80_lim)) |
mareikeFSL | 0:65cab7b6fd7a | 414 | send = BOARD2_PWMA | DC_80; |
mareikeFSL | 0:65cab7b6fd7a | 415 | else |
mareikeFSL | 0:65cab7b6fd7a | 416 | { |
mareikeFSL | 0:65cab7b6fd7a | 417 | send = Y_STOP; /*BOARD2_PWMA | DC_0;*/ |
mareikeFSL | 0:65cab7b6fd7a | 418 | prev_Y = DC_0; |
mareikeFSL | 0:65cab7b6fd7a | 419 | } |
mareikeFSL | 0:65cab7b6fd7a | 420 | } |
mareikeFSL | 0:65cab7b6fd7a | 421 | } |
mareikeFSL | 0:65cab7b6fd7a | 422 | |
mareikeFSL | 0:65cab7b6fd7a | 423 | return send; |
mareikeFSL | 0:65cab7b6fd7a | 424 | |
mareikeFSL | 0:65cab7b6fd7a | 425 | } //end convert_acc_to_pwm() |
mareikeFSL | 0:65cab7b6fd7a | 426 | |
mareikeFSL | 0:65cab7b6fd7a | 427 | |
mareikeFSL | 0:65cab7b6fd7a | 428 | /**********************************************************************************/ |
mareikeFSL | 0:65cab7b6fd7a | 429 | /***************************************************************************MAIN***/ |
mareikeFSL | 0:65cab7b6fd7a | 430 | /**********************************************************************************/ |
mareikeFSL | 0:65cab7b6fd7a | 431 | int main(void) |
mareikeFSL | 0:65cab7b6fd7a | 432 | { |
mareikeFSL | 0:65cab7b6fd7a | 433 | red = 0; |
mareikeFSL | 0:65cab7b6fd7a | 434 | green = 0; |
mareikeFSL | 0:65cab7b6fd7a | 435 | blue = 0; |
mareikeFSL | 0:65cab7b6fd7a | 436 | |
mareikeFSL | 0:65cab7b6fd7a | 437 | init_i2c0(); |
mareikeFSL | 0:65cab7b6fd7a | 438 | init_acc(); |
mareikeFSL | 0:65cab7b6fd7a | 439 | init_eth(); //initialize the Ethernet connection |
mareikeFSL | 0:65cab7b6fd7a | 440 | |
mareikeFSL | 0:65cab7b6fd7a | 441 | red = 0; //client = red |
mareikeFSL | 0:65cab7b6fd7a | 442 | green = 1; |
mareikeFSL | 0:65cab7b6fd7a | 443 | blue = 1; |
mareikeFSL | 0:65cab7b6fd7a | 444 | |
mareikeFSL | 0:65cab7b6fd7a | 445 | while(true) |
mareikeFSL | 0:65cab7b6fd7a | 446 | { |
mareikeFSL | 0:65cab7b6fd7a | 447 | read_acc(); |
mareikeFSL | 0:65cab7b6fd7a | 448 | |
mareikeFSL | 0:65cab7b6fd7a | 449 | X_MSB_data[0] = convert_acc_to_pwm(X_MSB_data[0], x_axis); |
mareikeFSL | 0:65cab7b6fd7a | 450 | Y_MSB_data[0] = convert_acc_to_pwm(Y_MSB_data[0], y_axis); |
mareikeFSL | 0:65cab7b6fd7a | 451 | |
mareikeFSL | 0:65cab7b6fd7a | 452 | sock.sendTo(server, X_MSB_data, sizeof(X_MSB_data)); |
mareikeFSL | 0:65cab7b6fd7a | 453 | sock.sendTo(server, Y_MSB_data, sizeof(Y_MSB_data)); |
mareikeFSL | 0:65cab7b6fd7a | 454 | } |
mareikeFSL | 0:65cab7b6fd7a | 455 | |
mareikeFSL | 0:65cab7b6fd7a | 456 | } //end main() |