Hepta UplinkData Q

Dependencies:   mbed PowerControl SDFileSystem

Fork of Hepta_UplinkData_Q by 智也 大野

Committer:
tomoya123
Date:
Tue Dec 13 09:54:46 2016 +0000
Revision:
1:d9b4d2303984
Parent:
0:edad9f0f386a
Xbee UplinkData Q

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tomoya123 0:edad9f0f386a 1 #include "HeptaAccel.h"
tomoya123 0:edad9f0f386a 2 #include "mbed.h"
tomoya123 0:edad9f0f386a 3
tomoya123 0:edad9f0f386a 4 HeptaAccel::HeptaAccel(PinName sda, PinName scl, int aaddr ) : accel(sda,scl),addr(aaddr)
tomoya123 0:edad9f0f386a 5 {
tomoya123 0:edad9f0f386a 6 _cmd[0] = 0x2A;//CTL_REG
tomoya123 0:edad9f0f386a 7 _cmd[1] = 0x01;//ACTIVE
tomoya123 0:edad9f0f386a 8 accel.write(addr, _cmd, 2);
tomoya123 0:edad9f0f386a 9 accel.start();
tomoya123 0:edad9f0f386a 10 accel.write(addr);
tomoya123 0:edad9f0f386a 11 accel.stop();
tomoya123 0:edad9f0f386a 12 }
tomoya123 0:edad9f0f386a 13
tomoya123 0:edad9f0f386a 14 void HeptaAccel::setup()
tomoya123 0:edad9f0f386a 15 {
tomoya123 0:edad9f0f386a 16 _cmd[0] = 0x2A;
tomoya123 0:edad9f0f386a 17 _cmd[1] = 0x01;
tomoya123 0:edad9f0f386a 18 accel.frequency(100000);
tomoya123 0:edad9f0f386a 19 accel.write(addr, _cmd, 2);
tomoya123 0:edad9f0f386a 20 accel.start();
tomoya123 0:edad9f0f386a 21 accel.write(addr);
tomoya123 0:edad9f0f386a 22 accel.stop();
tomoya123 0:edad9f0f386a 23 }
tomoya123 0:edad9f0f386a 24
tomoya123 0:edad9f0f386a 25 void HeptaAccel::sensing(float *ax,float *ay,float *az)
tomoya123 0:edad9f0f386a 26 {
tomoya123 0:edad9f0f386a 27 int16_t acc;
tomoya123 0:edad9f0f386a 28 accel.start();//start
tomoya123 0:edad9f0f386a 29 accel.write(addr);//write address
tomoya123 0:edad9f0f386a 30 accel.write(0x01);//X-axis_MSB_REG
tomoya123 0:edad9f0f386a 31 accel.start();//restart, switch from write to read
tomoya123 0:edad9f0f386a 32 accel.write(addr|0x01);//read address
tomoya123 0:edad9f0f386a 33 _xmsb = accel.read(0);//read from selected register with NACK
tomoya123 0:edad9f0f386a 34 accel.stop();
tomoya123 0:edad9f0f386a 35 accel.start();
tomoya123 0:edad9f0f386a 36 accel.write(addr);
tomoya123 0:edad9f0f386a 37 accel.write(0x02);//X-axis_LSB_REG
tomoya123 0:edad9f0f386a 38 accel.start();
tomoya123 0:edad9f0f386a 39 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 40 _xlsb = accel.read(0);
tomoya123 0:edad9f0f386a 41 accel.stop();
tomoya123 0:edad9f0f386a 42 acc = (_xmsb << 6) | (_xlsb >> 2);
tomoya123 0:edad9f0f386a 43 if (acc > UINT14_MAX/2)
tomoya123 0:edad9f0f386a 44 {
tomoya123 0:edad9f0f386a 45 acc -= UINT14_MAX;
tomoya123 0:edad9f0f386a 46 }
tomoya123 0:edad9f0f386a 47 *ax = acc/4096.0*9.81;
tomoya123 0:edad9f0f386a 48
tomoya123 0:edad9f0f386a 49 accel.start();
tomoya123 0:edad9f0f386a 50 accel.write(addr);
tomoya123 0:edad9f0f386a 51 accel.write(0x03);
tomoya123 0:edad9f0f386a 52 accel.start();
tomoya123 0:edad9f0f386a 53 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 54 _ymsb = accel.read(0);
tomoya123 0:edad9f0f386a 55 accel.stop();
tomoya123 0:edad9f0f386a 56 accel.start();
tomoya123 0:edad9f0f386a 57 accel.write(addr);
tomoya123 0:edad9f0f386a 58 accel.write(0x04);
tomoya123 0:edad9f0f386a 59 accel.start();
tomoya123 0:edad9f0f386a 60 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 61 _ylsb = accel.read(0);
tomoya123 0:edad9f0f386a 62 accel.stop();
tomoya123 0:edad9f0f386a 63 acc = (_ymsb << 6) | (_ylsb >> 2);
tomoya123 0:edad9f0f386a 64 if (acc > UINT14_MAX/2)
tomoya123 0:edad9f0f386a 65 {
tomoya123 0:edad9f0f386a 66 acc -= UINT14_MAX;
tomoya123 0:edad9f0f386a 67 }
tomoya123 0:edad9f0f386a 68 *ay = acc/4096.0*9.81;
tomoya123 0:edad9f0f386a 69
tomoya123 0:edad9f0f386a 70 accel.start();
tomoya123 0:edad9f0f386a 71 accel.write(addr);
tomoya123 0:edad9f0f386a 72 accel.write(0x05);
tomoya123 0:edad9f0f386a 73 accel.start();
tomoya123 0:edad9f0f386a 74 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 75 _zmsb = accel.read(0);
tomoya123 0:edad9f0f386a 76 accel.stop();
tomoya123 0:edad9f0f386a 77 accel.start();
tomoya123 0:edad9f0f386a 78 accel.write(addr);
tomoya123 0:edad9f0f386a 79 accel.write(0x06);
tomoya123 0:edad9f0f386a 80 accel.start();
tomoya123 0:edad9f0f386a 81 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 82 _zlsb = accel.read(0);
tomoya123 0:edad9f0f386a 83 accel.stop();
tomoya123 0:edad9f0f386a 84 acc = (_zmsb << 6) | (_zlsb >> 2);
tomoya123 0:edad9f0f386a 85 if (acc > UINT14_MAX/2)
tomoya123 0:edad9f0f386a 86 {
tomoya123 0:edad9f0f386a 87 acc -= UINT14_MAX;
tomoya123 0:edad9f0f386a 88 }
tomoya123 0:edad9f0f386a 89 *az = acc/4096.0*9.81;
tomoya123 0:edad9f0f386a 90 }
tomoya123 0:edad9f0f386a 91
tomoya123 0:edad9f0f386a 92 float HeptaAccel::x()
tomoya123 0:edad9f0f386a 93 {
tomoya123 0:edad9f0f386a 94 int16_t acc;
tomoya123 0:edad9f0f386a 95 float ax;
tomoya123 0:edad9f0f386a 96 accel.start();
tomoya123 0:edad9f0f386a 97 accel.write(addr);
tomoya123 0:edad9f0f386a 98 accel.write(0x01);
tomoya123 0:edad9f0f386a 99 accel.start();
tomoya123 0:edad9f0f386a 100 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 101 _xmsb = accel.read(0);
tomoya123 0:edad9f0f386a 102 accel.stop();
tomoya123 0:edad9f0f386a 103 accel.start();
tomoya123 0:edad9f0f386a 104 accel.write(addr);
tomoya123 0:edad9f0f386a 105 accel.write(0x02);
tomoya123 0:edad9f0f386a 106 accel.start();
tomoya123 0:edad9f0f386a 107 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 108 _xlsb = accel.read(0);
tomoya123 0:edad9f0f386a 109 accel.stop();
tomoya123 0:edad9f0f386a 110 acc = (_xmsb << 6) | (_xlsb >> 2);
tomoya123 0:edad9f0f386a 111 if (acc > UINT14_MAX/2)
tomoya123 0:edad9f0f386a 112 {
tomoya123 0:edad9f0f386a 113 acc -= UINT14_MAX;
tomoya123 0:edad9f0f386a 114 }
tomoya123 0:edad9f0f386a 115 ax = acc/4096.0*9.81;
tomoya123 0:edad9f0f386a 116 return(ax);
tomoya123 0:edad9f0f386a 117 }
tomoya123 0:edad9f0f386a 118
tomoya123 0:edad9f0f386a 119 float HeptaAccel::y()
tomoya123 0:edad9f0f386a 120 {
tomoya123 0:edad9f0f386a 121 int16_t acc;
tomoya123 0:edad9f0f386a 122 float ay;
tomoya123 0:edad9f0f386a 123 accel.start();
tomoya123 0:edad9f0f386a 124 accel.write(addr);
tomoya123 0:edad9f0f386a 125 accel.write(0x03);
tomoya123 0:edad9f0f386a 126 accel.start();
tomoya123 0:edad9f0f386a 127 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 128 _ymsb = accel.read(0);
tomoya123 0:edad9f0f386a 129 accel.stop();
tomoya123 0:edad9f0f386a 130 accel.start();
tomoya123 0:edad9f0f386a 131 accel.write(addr);
tomoya123 0:edad9f0f386a 132 accel.write(0x04);
tomoya123 0:edad9f0f386a 133 accel.start();
tomoya123 0:edad9f0f386a 134 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 135 _ylsb = accel.read(0);
tomoya123 0:edad9f0f386a 136 accel.stop();
tomoya123 0:edad9f0f386a 137 acc = (_ymsb << 6) | (_ylsb >> 2);
tomoya123 0:edad9f0f386a 138 if (acc > UINT14_MAX/2)
tomoya123 0:edad9f0f386a 139 {
tomoya123 0:edad9f0f386a 140 acc -= UINT14_MAX;
tomoya123 0:edad9f0f386a 141 }
tomoya123 0:edad9f0f386a 142 ay = acc/4096.0*9.81;
tomoya123 0:edad9f0f386a 143 return(ay);
tomoya123 0:edad9f0f386a 144 }
tomoya123 0:edad9f0f386a 145
tomoya123 0:edad9f0f386a 146 float HeptaAccel::z()
tomoya123 0:edad9f0f386a 147 {
tomoya123 0:edad9f0f386a 148 int16_t acc;
tomoya123 0:edad9f0f386a 149 float az;
tomoya123 0:edad9f0f386a 150 accel.start();
tomoya123 0:edad9f0f386a 151 accel.write(addr);
tomoya123 0:edad9f0f386a 152 accel.write(0x2C);
tomoya123 0:edad9f0f386a 153 accel.start();
tomoya123 0:edad9f0f386a 154 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 155 _zmsb = accel.read(0);
tomoya123 0:edad9f0f386a 156 accel.stop();
tomoya123 0:edad9f0f386a 157 accel.start();
tomoya123 0:edad9f0f386a 158 accel.write(addr);
tomoya123 0:edad9f0f386a 159 accel.write(0x2D);
tomoya123 0:edad9f0f386a 160 accel.start();
tomoya123 0:edad9f0f386a 161 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 162 _zlsb = accel.read(0);
tomoya123 0:edad9f0f386a 163 accel.stop();
tomoya123 0:edad9f0f386a 164 acc = (_zmsb << 6) | (_zlsb >> 2);
tomoya123 0:edad9f0f386a 165 if (acc > UINT14_MAX/2)
tomoya123 0:edad9f0f386a 166 {
tomoya123 0:edad9f0f386a 167 acc -= UINT14_MAX;
tomoya123 0:edad9f0f386a 168 }
tomoya123 0:edad9f0f386a 169 az = acc/4096.0*9.81;
tomoya123 0:edad9f0f386a 170 return(az);
tomoya123 0:edad9f0f386a 171 }
tomoya123 0:edad9f0f386a 172
tomoya123 1:d9b4d2303984 173 void HeptaAccel::sensing_u16(char* ax_u16,char* ay_u16,char* az_u16)
tomoya123 0:edad9f0f386a 174 {
tomoya123 0:edad9f0f386a 175 char a1[8]={0x00},a2[8]={0x00};
tomoya123 0:edad9f0f386a 176 accel.start();
tomoya123 0:edad9f0f386a 177 accel.write(addr);
tomoya123 0:edad9f0f386a 178 accel.write(0x01);
tomoya123 0:edad9f0f386a 179 accel.start();
tomoya123 0:edad9f0f386a 180 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 181 _xmsb = accel.read(0);
tomoya123 0:edad9f0f386a 182 accel.stop();
tomoya123 0:edad9f0f386a 183 accel.start();
tomoya123 0:edad9f0f386a 184 accel.write(addr);
tomoya123 0:edad9f0f386a 185 accel.write(0x02);
tomoya123 0:edad9f0f386a 186 accel.start();
tomoya123 0:edad9f0f386a 187 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 188 _xlsb = accel.read(0);
tomoya123 0:edad9f0f386a 189 accel.stop();
tomoya123 0:edad9f0f386a 190 sprintf( a1, "%02X", ((_xmsb)) & 0xFF);
tomoya123 0:edad9f0f386a 191 sprintf( a2, "%02X", ((_xlsb)) & 0xFF);
tomoya123 0:edad9f0f386a 192 ax_u16[0]=a1[0];
tomoya123 0:edad9f0f386a 193 ax_u16[1]=a1[1];
tomoya123 0:edad9f0f386a 194 ax_u16[2]=a2[0];
tomoya123 0:edad9f0f386a 195 ax_u16[3]=a2[1];
tomoya123 0:edad9f0f386a 196
tomoya123 0:edad9f0f386a 197 accel.start();
tomoya123 0:edad9f0f386a 198 accel.write(addr);
tomoya123 0:edad9f0f386a 199 accel.write(0x03);
tomoya123 0:edad9f0f386a 200 accel.start();
tomoya123 0:edad9f0f386a 201 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 202 _ymsb = accel.read(0);
tomoya123 0:edad9f0f386a 203 accel.stop();
tomoya123 0:edad9f0f386a 204 accel.start();
tomoya123 0:edad9f0f386a 205 accel.write(addr);
tomoya123 0:edad9f0f386a 206 accel.write(0x04);
tomoya123 0:edad9f0f386a 207 accel.start();
tomoya123 0:edad9f0f386a 208 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 209 _ylsb = accel.read(0);
tomoya123 0:edad9f0f386a 210 accel.stop();
tomoya123 0:edad9f0f386a 211 sprintf( a1, "%02X", ((_ymsb)) & 0xFF);
tomoya123 0:edad9f0f386a 212 sprintf( a2, "%02X", ((_ylsb)) & 0xFF);
tomoya123 0:edad9f0f386a 213 ay_u16[0]=a1[0];
tomoya123 0:edad9f0f386a 214 ay_u16[1]=a1[1];
tomoya123 0:edad9f0f386a 215 ay_u16[2]=a2[0];
tomoya123 0:edad9f0f386a 216 ay_u16[3]=a2[1];
tomoya123 0:edad9f0f386a 217
tomoya123 0:edad9f0f386a 218 accel.start();
tomoya123 0:edad9f0f386a 219 accel.write(addr);
tomoya123 0:edad9f0f386a 220 accel.write(0x05);
tomoya123 0:edad9f0f386a 221 accel.start();
tomoya123 0:edad9f0f386a 222 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 223 _zmsb = accel.read(0);
tomoya123 0:edad9f0f386a 224 accel.stop();
tomoya123 0:edad9f0f386a 225 accel.start();
tomoya123 0:edad9f0f386a 226 accel.write(addr);
tomoya123 0:edad9f0f386a 227 accel.write(0x06);
tomoya123 0:edad9f0f386a 228 accel.start();
tomoya123 0:edad9f0f386a 229 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 230 _zlsb = accel.read(0);
tomoya123 0:edad9f0f386a 231 accel.stop();
tomoya123 0:edad9f0f386a 232 sprintf( a1, "%02X", ((_zmsb)) & 0xFF);
tomoya123 0:edad9f0f386a 233 sprintf( a2, "%02X", ((_zlsb)) & 0xFF);
tomoya123 0:edad9f0f386a 234 az_u16[0]=a1[0];
tomoya123 0:edad9f0f386a 235 az_u16[1]=a1[1];
tomoya123 0:edad9f0f386a 236 az_u16[2]=a2[0];
tomoya123 0:edad9f0f386a 237 az_u16[3]=a2[1];
tomoya123 1:d9b4d2303984 238 //*dsize = 4;
tomoya123 0:edad9f0f386a 239 }
tomoya123 0:edad9f0f386a 240
tomoya123 0:edad9f0f386a 241 void HeptaAccel::x_u16(char* a_u16, int *dsize)
tomoya123 0:edad9f0f386a 242 {
tomoya123 0:edad9f0f386a 243 char a1[8]={0x00},a2[8]={0x00};
tomoya123 0:edad9f0f386a 244 accel.start();
tomoya123 0:edad9f0f386a 245 accel.write(addr);
tomoya123 0:edad9f0f386a 246 accel.write(0x01);
tomoya123 0:edad9f0f386a 247 accel.start();
tomoya123 0:edad9f0f386a 248 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 249 _xmsb = accel.read(0);
tomoya123 0:edad9f0f386a 250 accel.stop();
tomoya123 0:edad9f0f386a 251 accel.start();
tomoya123 0:edad9f0f386a 252 accel.write(addr);
tomoya123 0:edad9f0f386a 253 accel.write(0x02);
tomoya123 0:edad9f0f386a 254 accel.start();
tomoya123 0:edad9f0f386a 255 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 256 _xlsb = accel.read(0);
tomoya123 0:edad9f0f386a 257 accel.stop();
tomoya123 0:edad9f0f386a 258 sprintf( a1, "%02X", ((_xmsb)) & 0xFF);
tomoya123 0:edad9f0f386a 259 sprintf( a2, "%02X", ((_xlsb)) & 0xFF);
tomoya123 0:edad9f0f386a 260 a_u16[0]=a1[0];
tomoya123 0:edad9f0f386a 261 a_u16[1]=a1[1];
tomoya123 0:edad9f0f386a 262 a_u16[2]=a2[0];
tomoya123 0:edad9f0f386a 263 a_u16[3]=a2[1];
tomoya123 0:edad9f0f386a 264 *dsize = 4;
tomoya123 0:edad9f0f386a 265 }
tomoya123 0:edad9f0f386a 266
tomoya123 0:edad9f0f386a 267 void HeptaAccel::y_u16(char* a_u16, int *dsize)
tomoya123 0:edad9f0f386a 268 {
tomoya123 0:edad9f0f386a 269 char a1[8]={0x00},a2[8]={0x00};
tomoya123 0:edad9f0f386a 270 accel.start();
tomoya123 0:edad9f0f386a 271 accel.write(addr);
tomoya123 0:edad9f0f386a 272 accel.write(0x03);
tomoya123 0:edad9f0f386a 273 accel.start();
tomoya123 0:edad9f0f386a 274 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 275 _ymsb = accel.read(0);
tomoya123 0:edad9f0f386a 276 accel.stop();
tomoya123 0:edad9f0f386a 277 accel.start();
tomoya123 0:edad9f0f386a 278 accel.write(addr);
tomoya123 0:edad9f0f386a 279 accel.write(0x04);
tomoya123 0:edad9f0f386a 280 accel.start();
tomoya123 0:edad9f0f386a 281 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 282 _ylsb = accel.read(0);
tomoya123 0:edad9f0f386a 283 accel.stop();
tomoya123 0:edad9f0f386a 284 sprintf( a1, "%02X", ((_ymsb)) & 0xFF);
tomoya123 0:edad9f0f386a 285 sprintf( a2, "%02X", ((_ylsb)) & 0xFF);
tomoya123 0:edad9f0f386a 286 a_u16[0]=a1[0];
tomoya123 0:edad9f0f386a 287 a_u16[1]=a1[1];
tomoya123 0:edad9f0f386a 288 a_u16[2]=a2[0];
tomoya123 0:edad9f0f386a 289 a_u16[3]=a2[1];
tomoya123 0:edad9f0f386a 290 *dsize = 4;
tomoya123 0:edad9f0f386a 291 }
tomoya123 0:edad9f0f386a 292
tomoya123 0:edad9f0f386a 293 void HeptaAccel::z_u16(char* a_u16, int *dsize)
tomoya123 0:edad9f0f386a 294 {
tomoya123 0:edad9f0f386a 295 char a1[8]={0x00},a2[8]={0x00};
tomoya123 0:edad9f0f386a 296 accel.start();
tomoya123 0:edad9f0f386a 297 accel.write(addr);
tomoya123 0:edad9f0f386a 298 accel.write(0x05);
tomoya123 0:edad9f0f386a 299 accel.start();
tomoya123 0:edad9f0f386a 300 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 301 _zmsb = accel.read(0);
tomoya123 0:edad9f0f386a 302 accel.stop();
tomoya123 0:edad9f0f386a 303 accel.start();
tomoya123 0:edad9f0f386a 304 accel.write(addr);
tomoya123 0:edad9f0f386a 305 accel.write(0x06);
tomoya123 0:edad9f0f386a 306 accel.start();
tomoya123 0:edad9f0f386a 307 accel.write(addr|0x01);
tomoya123 0:edad9f0f386a 308 _zlsb = accel.read(0);
tomoya123 0:edad9f0f386a 309 accel.stop();
tomoya123 0:edad9f0f386a 310 sprintf( a1, "%02X", ((_zmsb)) & 0xFF);
tomoya123 0:edad9f0f386a 311 sprintf( a2, "%02X", ((_zlsb)) & 0xFF);
tomoya123 0:edad9f0f386a 312 a_u16[0]=a1[0];
tomoya123 0:edad9f0f386a 313 a_u16[1]=a1[1];
tomoya123 0:edad9f0f386a 314 a_u16[2]=a2[0];
tomoya123 0:edad9f0f386a 315 a_u16[3]=a2[1];
tomoya123 0:edad9f0f386a 316 *dsize = 4;
tomoya123 0:edad9f0f386a 317 }