change code by hasegawa
jy901.cpp
- Committer:
- LVRhase01
- Date:
- 2020-09-29
- Revision:
- 3:ba9da7dbbd9a
- Parent:
- 0:f80d034ed481
File content as of revision 3:ba9da7dbbd9a:
#include "jy901.h" JY901::JY901(PinName sda, PinName scl) : I2C(sda, scl) { } void JY901::calibrateGyroAccel() { char calibrationRegistar[3]= {CALSW,0x01,0x00}; write(IICADDR,calibrationRegistar,3,false); } void JY901::calibrateMagnetic() { char calibrationRegistar[3]= {CALSW,0x02,0x00}; write(IICADDR,calibrationRegistar,3,false); } void JY901::calibrateHeight() { char calibrationRegistar[3]= {CALSW,0x03,0x00}; write(IICADDR,calibrationRegistar,3,false); } void JY901::endCalibrate() { char calibrationRegistar[3]= {CALSW,0x00,0x00}; write(IICADDR,calibrationRegistar,3,false); } //ここより下は長谷川が追加しました。不必要な場合は教えてください。2020/09/29 void JY901::yawcalibrate() { char calibrationRegistar[3]= {0x01,0x04,0x00}; write(IICADDR,calibrationRegistar,3,false); } void JY901::algorithmtrasition() { char calibrationRegistar[3]= {0x24,0x01,0x00}; write(IICADDR,calibrationRegistar,3,false); } void JY901::calibrateAll(int time) { calibrateGyroAccel(); wait_ms(time); calibrateMagnetic(); wait_ms(time); calibrateHeight(); wait_ms(time); endCalibrate(); wait_ms(time); algorithmtrasition(); wait_ms(time); yawcalibrate(); } float JY901::getXaxisAcceleration() { char *data = getdata(AX); return (float)((*(data+1) << 8) | *data) / 32768 * 16 * g; } float JY901::getYaxisAcceleration() { char *data = getdata(AY); return (float)((*(data+1) << 8) | *data) / 32768 * 16 * g; } float JY901::getZaxisAcceleration() { char *data = getdata(AZ); return (float)((*(data+1) << 8) | *data) / 32768 * 16 * g; } float JY901::getXaxisAngularVelocity() { char *data = getdata(GX); return (float)((*(data+1) << 8 ) | *data) / 32768 * 2000; } float JY901::getYaxisAngularVelocity() { char *data = getdata(GY); return (float)((*(data+1) << 8 ) | *data) / 32768 * 2000; } float JY901::getZaxisAngularVelocity() { char *data = getdata(GZ); return (float)((*(data+1) << 8 ) | *data) / 32768 * 2000; } float JY901::getXaxisMagnetic() { char *data = getdata(HX); return (float)((*(data+1) << 8) | *data); } float JY901::getYaxisMagnetic() { char *data = getdata(HY); return (float)((*(data+1) << 8) | *data); } float JY901::getZaxisMagnetic() { char *data = getdata(HZ); return (float)((*(data+1) << 8) | *data); } float JY901::getXaxisAngle() { char *data = getdata(Roll); return (float)((*(data+1) << 8) | *data) / 32768 * 180; } float JY901::getYaxisAngle() { char *data = getdata(Pitch); return (float)((*(data+1) << 8) | *data) / 32768 * 180; } float JY901::getZaxisAngle() { char *data = getdata(Yaw); return (float)((*(data+1) << 8) | *data) / 32768 * 180; } char *JY901::getdata(char registar) { char data[2] = {}; write(IICADDR,®istar,1,true); read(IICADDR,data,2,false); return data; }