unfinished

Dependents:   WRS_mechanamu_test WRS2019_master mbed_2018 mbed_2019_rx3 ... more

Committer:
sgrsn
Date:
Thu Aug 23 05:33:30 2018 +0000
Revision:
4:cd62e2d69f62
Parent:
2:5af50b300137
Child:
5:a492cfb18242
saving memory

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sgrsn 0:6ff4cad60b67 1 #include "JY901.h"
sgrsn 0:6ff4cad60b67 2
sgrsn 4:cd62e2d69f62 3 JY901::JY901(I2C *i2c)
sgrsn 0:6ff4cad60b67 4 {
sgrsn 4:cd62e2d69f62 5 _i2c = i2c;
sgrsn 0:6ff4cad60b67 6 }
sgrsn 0:6ff4cad60b67 7
sgrsn 1:6bcbd18a719a 8 void JY901::calibrateGyroAccel()
sgrsn 0:6ff4cad60b67 9 {
sgrsn 4:cd62e2d69f62 10 _i2c->start();
sgrsn 4:cd62e2d69f62 11 _i2c->write(IICADDR);
sgrsn 4:cd62e2d69f62 12 _i2c->write(CALSW);
sgrsn 4:cd62e2d69f62 13 _i2c->write(0x01);
sgrsn 4:cd62e2d69f62 14 _i2c->write(0x00);
sgrsn 4:cd62e2d69f62 15 _i2c->stop();
sgrsn 0:6ff4cad60b67 16 }
sgrsn 0:6ff4cad60b67 17
sgrsn 1:6bcbd18a719a 18 void JY901::calibrateMagnetic()
sgrsn 0:6ff4cad60b67 19 {
sgrsn 4:cd62e2d69f62 20 _i2c->start();
sgrsn 4:cd62e2d69f62 21 _i2c->write(IICADDR);
sgrsn 4:cd62e2d69f62 22 _i2c->write(CALSW);
sgrsn 4:cd62e2d69f62 23 _i2c->write(0x02);
sgrsn 4:cd62e2d69f62 24 _i2c->write(0x00);
sgrsn 4:cd62e2d69f62 25 _i2c->stop();
sgrsn 0:6ff4cad60b67 26 }
sgrsn 0:6ff4cad60b67 27
sgrsn 1:6bcbd18a719a 28 void JY901::calibrateHeight()
sgrsn 0:6ff4cad60b67 29 {
sgrsn 4:cd62e2d69f62 30 _i2c->start();
sgrsn 4:cd62e2d69f62 31 _i2c->write(IICADDR);
sgrsn 4:cd62e2d69f62 32 _i2c->write(CALSW);
sgrsn 4:cd62e2d69f62 33 _i2c->write(0x03);
sgrsn 4:cd62e2d69f62 34 _i2c->write(0x00);
sgrsn 4:cd62e2d69f62 35 _i2c->stop();
sgrsn 0:6ff4cad60b67 36 }
sgrsn 0:6ff4cad60b67 37
sgrsn 1:6bcbd18a719a 38 void JY901::endCalibrate()
sgrsn 0:6ff4cad60b67 39 {
sgrsn 4:cd62e2d69f62 40 _i2c->start();
sgrsn 4:cd62e2d69f62 41 _i2c->write(IICADDR);
sgrsn 4:cd62e2d69f62 42 _i2c->write(CALSW);
sgrsn 4:cd62e2d69f62 43 _i2c->write(0x00);
sgrsn 4:cd62e2d69f62 44 _i2c->write(0x00);
sgrsn 4:cd62e2d69f62 45 _i2c->stop();
sgrsn 0:6ff4cad60b67 46 }
sgrsn 0:6ff4cad60b67 47
sgrsn 1:6bcbd18a719a 48 void JY901::calibrateAll(int time_ms)
sgrsn 0:6ff4cad60b67 49 {
sgrsn 1:6bcbd18a719a 50 calibrateGyroAccel();
sgrsn 1:6bcbd18a719a 51 calibrateMagnetic();
sgrsn 1:6bcbd18a719a 52 calibrateHeight();
sgrsn 1:6bcbd18a719a 53 wait_ms(time_ms);
sgrsn 1:6bcbd18a719a 54 endCalibrate();
sgrsn 0:6ff4cad60b67 55 }
sgrsn 0:6ff4cad60b67 56
sgrsn 0:6ff4cad60b67 57 int JY901::getYear()
sgrsn 0:6ff4cad60b67 58 {
sgrsn 0:6ff4cad60b67 59 char *data = getdata(YYMM);
sgrsn 0:6ff4cad60b67 60 return (int)(*data);
sgrsn 0:6ff4cad60b67 61 }
sgrsn 0:6ff4cad60b67 62
sgrsn 0:6ff4cad60b67 63 int JY901::getMonth()
sgrsn 0:6ff4cad60b67 64 {
sgrsn 0:6ff4cad60b67 65 char *data = getdata(YYMM);
sgrsn 0:6ff4cad60b67 66 return (int)(*(data+1));
sgrsn 0:6ff4cad60b67 67 }
sgrsn 0:6ff4cad60b67 68
sgrsn 0:6ff4cad60b67 69 int JY901::getDay()
sgrsn 0:6ff4cad60b67 70 {
sgrsn 0:6ff4cad60b67 71 char *data = getdata(DDHH);
sgrsn 0:6ff4cad60b67 72 return (int)(*data);
sgrsn 0:6ff4cad60b67 73 }
sgrsn 0:6ff4cad60b67 74
sgrsn 0:6ff4cad60b67 75 int JY901::getHour()
sgrsn 0:6ff4cad60b67 76 {
sgrsn 0:6ff4cad60b67 77 char *data = getdata(DDHH);
sgrsn 0:6ff4cad60b67 78 return (int)(*(data+1));
sgrsn 0:6ff4cad60b67 79 }
sgrsn 0:6ff4cad60b67 80
sgrsn 0:6ff4cad60b67 81 int JY901::getMinute()
sgrsn 0:6ff4cad60b67 82 {
sgrsn 0:6ff4cad60b67 83 char *data = getdata(MMSS);
sgrsn 0:6ff4cad60b67 84 return (int)(*data);
sgrsn 0:6ff4cad60b67 85 }
sgrsn 0:6ff4cad60b67 86
sgrsn 0:6ff4cad60b67 87 int JY901::getSecond()
sgrsn 0:6ff4cad60b67 88 {
sgrsn 0:6ff4cad60b67 89 char *data = getdata(MMSS);
sgrsn 0:6ff4cad60b67 90 return (int)(*(data+1));
sgrsn 0:6ff4cad60b67 91 }
sgrsn 0:6ff4cad60b67 92
sgrsn 0:6ff4cad60b67 93 int JY901::getMillisecond()
sgrsn 0:6ff4cad60b67 94 {
sgrsn 0:6ff4cad60b67 95 char *data = getdata(MS);
sgrsn 0:6ff4cad60b67 96 return (int)((*(data+1) << 8) | *data);
sgrsn 0:6ff4cad60b67 97 }
sgrsn 0:6ff4cad60b67 98
sgrsn 0:6ff4cad60b67 99 float JY901::getXaxisAcceleration()
sgrsn 0:6ff4cad60b67 100 {
sgrsn 0:6ff4cad60b67 101 char *data = getdata(AX);
sgrsn 0:6ff4cad60b67 102 return (float)((*(data+1) << 8) | *data) / 32768 * 16 * g;
sgrsn 0:6ff4cad60b67 103 }
sgrsn 0:6ff4cad60b67 104
sgrsn 0:6ff4cad60b67 105 float JY901::getYaxisAcceleration()
sgrsn 0:6ff4cad60b67 106 {
sgrsn 0:6ff4cad60b67 107 char *data = getdata(AY);
sgrsn 0:6ff4cad60b67 108 return (float)((*(data+1) << 8) | *data) / 32768 * 16 * g;
sgrsn 0:6ff4cad60b67 109 }
sgrsn 0:6ff4cad60b67 110
sgrsn 0:6ff4cad60b67 111 float JY901::getZaxisAcceleration()
sgrsn 0:6ff4cad60b67 112 {
sgrsn 0:6ff4cad60b67 113 char *data = getdata(AZ);
sgrsn 0:6ff4cad60b67 114 return (float)((*(data+1) << 8) | *data) / 32768 * 16 * g;
sgrsn 0:6ff4cad60b67 115 }
sgrsn 0:6ff4cad60b67 116
sgrsn 0:6ff4cad60b67 117 float JY901::getXaxisAngularVelocity()
sgrsn 0:6ff4cad60b67 118 {
sgrsn 0:6ff4cad60b67 119 char *data = getdata(GX);
sgrsn 0:6ff4cad60b67 120 return (float)((*(data+1) << 8 ) | *data) / 32768 * 2000;
sgrsn 0:6ff4cad60b67 121 }
sgrsn 0:6ff4cad60b67 122
sgrsn 0:6ff4cad60b67 123 float JY901::getYaxisAngularVelocity()
sgrsn 0:6ff4cad60b67 124 {
sgrsn 0:6ff4cad60b67 125 char *data = getdata(GY);
sgrsn 0:6ff4cad60b67 126 return (float)((*(data+1) << 8 ) | *data) / 32768 * 2000;
sgrsn 0:6ff4cad60b67 127 }
sgrsn 0:6ff4cad60b67 128
sgrsn 0:6ff4cad60b67 129 float JY901::getZaxisAngularVelocity()
sgrsn 0:6ff4cad60b67 130 {
sgrsn 0:6ff4cad60b67 131 char *data = getdata(GZ);
sgrsn 0:6ff4cad60b67 132 return (float)((*(data+1) << 8 ) | *data) / 32768 * 2000;
sgrsn 0:6ff4cad60b67 133 }
sgrsn 0:6ff4cad60b67 134
sgrsn 0:6ff4cad60b67 135 float JY901::getXaxisMagnetic()
sgrsn 0:6ff4cad60b67 136 {
sgrsn 0:6ff4cad60b67 137 char *data = getdata(HX);
sgrsn 0:6ff4cad60b67 138 return (float)((*(data+1) << 8) | *data);
sgrsn 0:6ff4cad60b67 139 }
sgrsn 0:6ff4cad60b67 140
sgrsn 0:6ff4cad60b67 141 float JY901::getYaxisMagnetic()
sgrsn 0:6ff4cad60b67 142 {
sgrsn 0:6ff4cad60b67 143 char *data = getdata(HY);
sgrsn 0:6ff4cad60b67 144 return (float)((*(data+1) << 8) | *data);
sgrsn 0:6ff4cad60b67 145 }
sgrsn 0:6ff4cad60b67 146
sgrsn 0:6ff4cad60b67 147 float JY901::getZaxisMagnetic()
sgrsn 0:6ff4cad60b67 148 {
sgrsn 0:6ff4cad60b67 149 char *data = getdata(HZ);
sgrsn 0:6ff4cad60b67 150 return (float)((*(data+1) << 8) | *data);
sgrsn 0:6ff4cad60b67 151 }
sgrsn 0:6ff4cad60b67 152
sgrsn 0:6ff4cad60b67 153 float JY901::getXaxisAngle()
sgrsn 0:6ff4cad60b67 154 {
sgrsn 0:6ff4cad60b67 155 char *data = getdata(Roll);
sgrsn 0:6ff4cad60b67 156 return (float)((*(data+1) << 8) | *data) / 32768 * 180;
sgrsn 0:6ff4cad60b67 157 }
sgrsn 0:6ff4cad60b67 158
sgrsn 0:6ff4cad60b67 159 float JY901::getYaxisAngle()
sgrsn 0:6ff4cad60b67 160 {
sgrsn 0:6ff4cad60b67 161 char *data = getdata(Pitch);
sgrsn 0:6ff4cad60b67 162 return (float)((*(data+1) << 8) | *data) / 32768 * 180;
sgrsn 0:6ff4cad60b67 163 }
sgrsn 0:6ff4cad60b67 164
sgrsn 0:6ff4cad60b67 165 float JY901::getZaxisAngle()
sgrsn 0:6ff4cad60b67 166 {
sgrsn 0:6ff4cad60b67 167 char *data = getdata(Yaw);
sgrsn 0:6ff4cad60b67 168 return (float)((*(data+1) << 8) | *data) / 32768 * 180;
sgrsn 0:6ff4cad60b67 169 }
sgrsn 0:6ff4cad60b67 170
sgrsn 0:6ff4cad60b67 171 float JY901::getTemperature()
sgrsn 0:6ff4cad60b67 172 {
sgrsn 0:6ff4cad60b67 173 char *data = getdata(TEMP);
sgrsn 0:6ff4cad60b67 174 return (float)((*(data+1) << 8) | *data) / 100;
sgrsn 0:6ff4cad60b67 175 }
sgrsn 0:6ff4cad60b67 176
sgrsn 0:6ff4cad60b67 177 float JY901::getD0Status()
sgrsn 0:6ff4cad60b67 178 {
sgrsn 0:6ff4cad60b67 179 char *data = getdata(D0Status);
sgrsn 0:6ff4cad60b67 180 return (float)((*(data+1) << 8) | *data) / 4095;
sgrsn 0:6ff4cad60b67 181 }
sgrsn 0:6ff4cad60b67 182
sgrsn 0:6ff4cad60b67 183 float JY901::getD1Status()
sgrsn 0:6ff4cad60b67 184 {
sgrsn 0:6ff4cad60b67 185 char *data = getdata(D1Status);
sgrsn 0:6ff4cad60b67 186 return (float)((*(data+1) << 8) | *data) / 4095;
sgrsn 0:6ff4cad60b67 187 }
sgrsn 0:6ff4cad60b67 188
sgrsn 0:6ff4cad60b67 189 float JY901::getD2Status()
sgrsn 0:6ff4cad60b67 190 {
sgrsn 0:6ff4cad60b67 191 char *data = getdata(D2Status);
sgrsn 0:6ff4cad60b67 192 return (float)((*(data+1) << 8) | *data) / 4095;
sgrsn 0:6ff4cad60b67 193 }
sgrsn 0:6ff4cad60b67 194
sgrsn 0:6ff4cad60b67 195 float JY901::getD3Status()
sgrsn 0:6ff4cad60b67 196 {
sgrsn 0:6ff4cad60b67 197 char *data = getdata(D3Status);
sgrsn 0:6ff4cad60b67 198 return (float)((*(data+1) << 8) | *data) / 4095;
sgrsn 0:6ff4cad60b67 199 }
sgrsn 0:6ff4cad60b67 200
sgrsn 0:6ff4cad60b67 201 float JY901::getPressure() //not use
sgrsn 0:6ff4cad60b67 202 {
sgrsn 0:6ff4cad60b67 203 char *dataL = getdata(PressureL);
sgrsn 0:6ff4cad60b67 204 char *dataH = getdata(PressureH);
sgrsn 0:6ff4cad60b67 205 return (float)((*(dataH+1) << 24) | (*dataH << 16) | (*(dataL+1) << 8) | *dataL);
sgrsn 0:6ff4cad60b67 206 }
sgrsn 0:6ff4cad60b67 207
sgrsn 0:6ff4cad60b67 208 float JY901::getHeight() //not use
sgrsn 0:6ff4cad60b67 209 {
sgrsn 0:6ff4cad60b67 210 char *dataL = getdata(HeightL);
sgrsn 0:6ff4cad60b67 211 char *dataH = getdata(HeightH);
sgrsn 0:6ff4cad60b67 212 return (float)( ( *(dataH+1) << 24) | (*dataH << 16) | (*(dataL+1) << 8) | *dataL );
sgrsn 0:6ff4cad60b67 213 }
sgrsn 0:6ff4cad60b67 214
sgrsn 0:6ff4cad60b67 215 float JY901::getLongitude() //not use
sgrsn 0:6ff4cad60b67 216 {
sgrsn 0:6ff4cad60b67 217 char *dataL = getdata(LonL);
sgrsn 0:6ff4cad60b67 218 char *dataH = getdata(LonH);
sgrsn 0:6ff4cad60b67 219 return (float)( ( *(dataH+1) << 24) | (*dataH << 16) | (*(dataL+1) << 8) | *dataL );
sgrsn 0:6ff4cad60b67 220 }
sgrsn 0:6ff4cad60b67 221
sgrsn 0:6ff4cad60b67 222 float JY901::getLatitude() //not use
sgrsn 0:6ff4cad60b67 223 {
sgrsn 0:6ff4cad60b67 224 char *dataL = getdata(LatL);
sgrsn 0:6ff4cad60b67 225 char *dataH = getdata(LatH);
sgrsn 0:6ff4cad60b67 226 return (float)( ( *(dataH+1) << 24) | (*dataH << 16) | (*(dataL+1) << 8) | *dataL );
sgrsn 0:6ff4cad60b67 227 }
sgrsn 0:6ff4cad60b67 228
sgrsn 0:6ff4cad60b67 229 float JY901::getGPSHeight()
sgrsn 0:6ff4cad60b67 230 {
sgrsn 0:6ff4cad60b67 231 char *data = getdata(GPSHeight);
sgrsn 0:6ff4cad60b67 232 return (float)((*(data+1) << 8) | *data);
sgrsn 0:6ff4cad60b67 233 }
sgrsn 0:6ff4cad60b67 234 float JY901::getGPSYaw()
sgrsn 0:6ff4cad60b67 235 {
sgrsn 0:6ff4cad60b67 236 char *data = getdata(GPSYaw);
sgrsn 0:6ff4cad60b67 237 return (float)((*(data+1) << 8) | *data);
sgrsn 0:6ff4cad60b67 238 }
sgrsn 0:6ff4cad60b67 239 float JY901::getGPSspeed()
sgrsn 0:6ff4cad60b67 240 {
sgrsn 0:6ff4cad60b67 241 char *dataL = getdata(GPSVL);
sgrsn 0:6ff4cad60b67 242 char *dataH = getdata(GPSVH);
sgrsn 0:6ff4cad60b67 243 return (float)( ( *(dataH+1) << 24) | (*dataH << 16) | (*(dataL+1) << 8) | *dataL );
sgrsn 0:6ff4cad60b67 244 }
sgrsn 0:6ff4cad60b67 245
sgrsn 0:6ff4cad60b67 246 char *JY901::getdata(char registar)
sgrsn 0:6ff4cad60b67 247 {
sgrsn 0:6ff4cad60b67 248 char data[2] = {};
sgrsn 4:cd62e2d69f62 249 _i2c->start();
sgrsn 4:cd62e2d69f62 250 _i2c->write(IICADDR);
sgrsn 4:cd62e2d69f62 251 _i2c->write(registar);
sgrsn 4:cd62e2d69f62 252 _i2c->read(IICADDR, data, 2);
sgrsn 4:cd62e2d69f62 253 _i2c->stop();
sgrsn 0:6ff4cad60b67 254 return data;
sgrsn 0:6ff4cad60b67 255 }