2021 nhk A team

Dependencies:   mbed QEI led beep softPWM Servo_softpwm IR2302 lpf

Committer:
THtakahiro702286
Date:
Sun Oct 31 13:45:53 2021 +0000
Revision:
31:ce079259f559
Parent:
1:ba598e6ff285
10/31 last parameter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
THtakahiro702286 1:ba598e6ff285 1 #include "jy901.h"
THtakahiro702286 1:ba598e6ff285 2
THtakahiro702286 1:ba598e6ff285 3 JY901::JY901(PinName sda, PinName scl) : I2C(sda, scl)
THtakahiro702286 1:ba598e6ff285 4 {
THtakahiro702286 1:ba598e6ff285 5 }
THtakahiro702286 1:ba598e6ff285 6
THtakahiro702286 1:ba598e6ff285 7 void JY901::calibrateGyroAccel()
THtakahiro702286 1:ba598e6ff285 8 {
THtakahiro702286 1:ba598e6ff285 9 char calibrationRegistar[3]= {CALSW,0x01,0x00};
THtakahiro702286 1:ba598e6ff285 10 write(IICADDR,calibrationRegistar,3,false);
THtakahiro702286 1:ba598e6ff285 11 }
THtakahiro702286 1:ba598e6ff285 12
THtakahiro702286 1:ba598e6ff285 13 void JY901::calibrateMagnetic()
THtakahiro702286 1:ba598e6ff285 14 {
THtakahiro702286 1:ba598e6ff285 15 char calibrationRegistar[3]= {CALSW,0x02,0x00};
THtakahiro702286 1:ba598e6ff285 16 write(IICADDR,calibrationRegistar,3,false);
THtakahiro702286 1:ba598e6ff285 17 }
THtakahiro702286 1:ba598e6ff285 18
THtakahiro702286 1:ba598e6ff285 19 void JY901::calibrateHeight()
THtakahiro702286 1:ba598e6ff285 20 {
THtakahiro702286 1:ba598e6ff285 21 char calibrationRegistar[3]= {CALSW,0x03,0x00};
THtakahiro702286 1:ba598e6ff285 22 write(IICADDR,calibrationRegistar,3,false);
THtakahiro702286 1:ba598e6ff285 23 }
THtakahiro702286 1:ba598e6ff285 24
THtakahiro702286 1:ba598e6ff285 25 void JY901::yawcalibrate()
THtakahiro702286 1:ba598e6ff285 26 {
THtakahiro702286 1:ba598e6ff285 27 char calibrationRegistar[3]= {CALSW,0x04,0x00};
THtakahiro702286 1:ba598e6ff285 28 write(IICADDR,calibrationRegistar,3,false);
THtakahiro702286 1:ba598e6ff285 29 }
THtakahiro702286 1:ba598e6ff285 30
THtakahiro702286 1:ba598e6ff285 31 void JY901::algorithmtrasition()
THtakahiro702286 1:ba598e6ff285 32 {
THtakahiro702286 1:ba598e6ff285 33 char calibrationRegistar[3]= {0x24,0x01,0x00};
THtakahiro702286 1:ba598e6ff285 34 write(IICADDR,calibrationRegistar,3,false);
THtakahiro702286 1:ba598e6ff285 35 }
THtakahiro702286 1:ba598e6ff285 36
THtakahiro702286 1:ba598e6ff285 37 void JY901::endCalibrate()
THtakahiro702286 1:ba598e6ff285 38 {
THtakahiro702286 1:ba598e6ff285 39 char calibrationRegistar[3]= {CALSW,0x00,0x00};
THtakahiro702286 1:ba598e6ff285 40 write(IICADDR,calibrationRegistar,3,false);
THtakahiro702286 1:ba598e6ff285 41 }
THtakahiro702286 1:ba598e6ff285 42
THtakahiro702286 1:ba598e6ff285 43 void JY901::calibrateAll(int time)
THtakahiro702286 1:ba598e6ff285 44 {
THtakahiro702286 1:ba598e6ff285 45 calibrateGyroAccel();
THtakahiro702286 1:ba598e6ff285 46 wait_ms(time);
THtakahiro702286 1:ba598e6ff285 47 calibrateMagnetic();
THtakahiro702286 1:ba598e6ff285 48 wait_ms(time);
THtakahiro702286 1:ba598e6ff285 49 calibrateHeight();
THtakahiro702286 1:ba598e6ff285 50 wait_ms(time);
THtakahiro702286 1:ba598e6ff285 51 endCalibrate();
THtakahiro702286 1:ba598e6ff285 52 wait_ms(time);
THtakahiro702286 1:ba598e6ff285 53 algorithmtrasition();
THtakahiro702286 1:ba598e6ff285 54 wait_ms(time);
THtakahiro702286 1:ba598e6ff285 55 yawcalibrate();
THtakahiro702286 1:ba598e6ff285 56 }
THtakahiro702286 1:ba598e6ff285 57
THtakahiro702286 1:ba598e6ff285 58 float JY901::getXaxisAcceleration()
THtakahiro702286 1:ba598e6ff285 59 {
THtakahiro702286 1:ba598e6ff285 60 char *data = getdata(AX);
THtakahiro702286 1:ba598e6ff285 61 return (float)((*(data+1) << 8) | *data) / 32768 * 16 * g;
THtakahiro702286 1:ba598e6ff285 62 }
THtakahiro702286 1:ba598e6ff285 63
THtakahiro702286 1:ba598e6ff285 64 float JY901::getYaxisAcceleration()
THtakahiro702286 1:ba598e6ff285 65 {
THtakahiro702286 1:ba598e6ff285 66 char *data = getdata(AY);
THtakahiro702286 1:ba598e6ff285 67 return (float)((*(data+1) << 8) | *data) / 32768 * 16 * g;
THtakahiro702286 1:ba598e6ff285 68 }
THtakahiro702286 1:ba598e6ff285 69
THtakahiro702286 1:ba598e6ff285 70 float JY901::getZaxisAcceleration()
THtakahiro702286 1:ba598e6ff285 71 {
THtakahiro702286 1:ba598e6ff285 72 char *data = getdata(AZ);
THtakahiro702286 1:ba598e6ff285 73 return (float)((*(data+1) << 8) | *data) / 32768 * 16 * g;
THtakahiro702286 1:ba598e6ff285 74 }
THtakahiro702286 1:ba598e6ff285 75
THtakahiro702286 1:ba598e6ff285 76 float JY901::getXaxisAngularVelocity()
THtakahiro702286 1:ba598e6ff285 77 {
THtakahiro702286 1:ba598e6ff285 78 char *data = getdata(GX);
THtakahiro702286 1:ba598e6ff285 79 return (float)((*(data+1) << 8 ) | *data) / 32768 * 2000;
THtakahiro702286 1:ba598e6ff285 80 }
THtakahiro702286 1:ba598e6ff285 81
THtakahiro702286 1:ba598e6ff285 82 float JY901::getYaxisAngularVelocity()
THtakahiro702286 1:ba598e6ff285 83 {
THtakahiro702286 1:ba598e6ff285 84 char *data = getdata(GY);
THtakahiro702286 1:ba598e6ff285 85 return (float)((*(data+1) << 8 ) | *data) / 32768 * 2000;
THtakahiro702286 1:ba598e6ff285 86 }
THtakahiro702286 1:ba598e6ff285 87
THtakahiro702286 1:ba598e6ff285 88 float JY901::getZaxisAngularVelocity()
THtakahiro702286 1:ba598e6ff285 89 {
THtakahiro702286 1:ba598e6ff285 90 char *data = getdata(GZ);
THtakahiro702286 1:ba598e6ff285 91 return (float)((*(data+1) << 8 ) | *data) / 32768 * 2000;
THtakahiro702286 1:ba598e6ff285 92 }
THtakahiro702286 1:ba598e6ff285 93
THtakahiro702286 1:ba598e6ff285 94 float JY901::getXaxisMagnetic()
THtakahiro702286 1:ba598e6ff285 95 {
THtakahiro702286 1:ba598e6ff285 96 char *data = getdata(HX);
THtakahiro702286 1:ba598e6ff285 97 return (float)((*(data+1) << 8) | *data);
THtakahiro702286 1:ba598e6ff285 98 }
THtakahiro702286 1:ba598e6ff285 99
THtakahiro702286 1:ba598e6ff285 100 float JY901::getYaxisMagnetic()
THtakahiro702286 1:ba598e6ff285 101 {
THtakahiro702286 1:ba598e6ff285 102 char *data = getdata(HY);
THtakahiro702286 1:ba598e6ff285 103 return (float)((*(data+1) << 8) | *data);
THtakahiro702286 1:ba598e6ff285 104 }
THtakahiro702286 1:ba598e6ff285 105
THtakahiro702286 1:ba598e6ff285 106 float JY901::getZaxisMagnetic()
THtakahiro702286 1:ba598e6ff285 107 {
THtakahiro702286 1:ba598e6ff285 108 char *data = getdata(HZ);
THtakahiro702286 1:ba598e6ff285 109 return (float)((*(data+1) << 8) | *data);
THtakahiro702286 1:ba598e6ff285 110 }
THtakahiro702286 1:ba598e6ff285 111
THtakahiro702286 1:ba598e6ff285 112 float JY901::getXaxisAngle()
THtakahiro702286 1:ba598e6ff285 113 {
THtakahiro702286 1:ba598e6ff285 114 char *data = getdata(Roll);
THtakahiro702286 1:ba598e6ff285 115 return (float)((*(data+1) << 8) | *data) / 32768 * 180;
THtakahiro702286 1:ba598e6ff285 116 }
THtakahiro702286 1:ba598e6ff285 117
THtakahiro702286 1:ba598e6ff285 118 float JY901::getYaxisAngle()
THtakahiro702286 1:ba598e6ff285 119 {
THtakahiro702286 1:ba598e6ff285 120 char *data = getdata(Pitch);
THtakahiro702286 1:ba598e6ff285 121 return (float)((*(data+1) << 8) | *data) / 32768 * 180;
THtakahiro702286 1:ba598e6ff285 122 }
THtakahiro702286 1:ba598e6ff285 123
THtakahiro702286 1:ba598e6ff285 124 float JY901::getZaxisAngle()
THtakahiro702286 1:ba598e6ff285 125 {
THtakahiro702286 1:ba598e6ff285 126 char *data = getdata(Yaw);
THtakahiro702286 1:ba598e6ff285 127 return (float)((*(data+1) << 8) | *data) / 32768 * 180;
THtakahiro702286 1:ba598e6ff285 128 }
THtakahiro702286 1:ba598e6ff285 129
THtakahiro702286 1:ba598e6ff285 130
THtakahiro702286 1:ba598e6ff285 131
THtakahiro702286 1:ba598e6ff285 132 char *JY901::getdata(char registar)
THtakahiro702286 1:ba598e6ff285 133 {
THtakahiro702286 1:ba598e6ff285 134 char data[2] = {};
THtakahiro702286 1:ba598e6ff285 135 write(IICADDR,&registar,1,true);
THtakahiro702286 1:ba598e6ff285 136 read(IICADDR,data,2,false);
THtakahiro702286 1:ba598e6ff285 137 return data;
THtakahiro702286 1:ba598e6ff285 138 }