Hepta_template_program

Dependencies:   mbed PowerControl SDFileSystem

Fork of Hepta_UplinkData by HEPTA-Sat Hands-On

Committer:
MEXT1
Date:
Fri Sep 22 06:27:51 2017 +0000
Revision:
5:862413879d84
Parent:
1:2a3dc618aef7
Hepta_template

Who changed what in which revision?

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