Committer:
inst
Date:
Fri Aug 21 04:51:40 2015 +0000
Revision:
1:e06cf312e9f0
Parent:
0:d4e07340fb0e
Child:
2:0f03a5729afc
y evol

Who changed what in which revision?

UserRevisionLine numberNew contents of line
inst 0:d4e07340fb0e 1 #include "mbed.h"
inst 0:d4e07340fb0e 2 #include "I2CServo.h"
inst 1:e06cf312e9f0 3 #include "I2CDevice.h"
inst 1:e06cf312e9f0 4 #include "Math.h"
inst 0:d4e07340fb0e 5
inst 1:e06cf312e9f0 6 const float I2CServo::mRangeMin[] = {
inst 1:e06cf312e9f0 7 // Steering
inst 1:e06cf312e9f0 8 0.18f,
inst 1:e06cf312e9f0 9 0.21f,
inst 1:e06cf312e9f0 10 0.15f,
inst 1:e06cf312e9f0 11 0.16f,
inst 1:e06cf312e9f0 12 // AngleManager
inst 1:e06cf312e9f0 13 0.20f,
inst 1:e06cf312e9f0 14 // PositionManager
inst 1:e06cf312e9f0 15 0.20f
inst 1:e06cf312e9f0 16 };
inst 1:e06cf312e9f0 17 const float I2CServo::mRangeMax[] = {
inst 1:e06cf312e9f0 18 // Steering
inst 1:e06cf312e9f0 19 0.81f,
inst 1:e06cf312e9f0 20 0.82f,
inst 1:e06cf312e9f0 21 0.80f,
inst 1:e06cf312e9f0 22 0.82f,
inst 1:e06cf312e9f0 23 // AngleManager
inst 1:e06cf312e9f0 24 0.80f,
inst 1:e06cf312e9f0 25 // PositionManager
inst 1:e06cf312e9f0 26 0.80f
inst 1:e06cf312e9f0 27 };
inst 1:e06cf312e9f0 28
inst 1:e06cf312e9f0 29 I2CServo::I2CServo( char address, int id ) : I2CDevice( address ){
inst 1:e06cf312e9f0 30 mTargetPosition = 0.5f;
inst 1:e06cf312e9f0 31 mPosition = 0.5f;
inst 1:e06cf312e9f0 32 mIsStop = false;
inst 1:e06cf312e9f0 33 mID = id;
inst 0:d4e07340fb0e 34 }
inst 0:d4e07340fb0e 35
inst 0:d4e07340fb0e 36 void I2CServo::write(){
inst 1:e06cf312e9f0 37 float pos = convertRange( mTargetPosition, 0.0f, 1.0f, mRangeMin[ mID ], mRangeMax[ mID ] );
inst 1:e06cf312e9f0 38 char buf = static_cast< char >( pos * 255.0f );
inst 1:e06cf312e9f0 39 I2CDevice::write( &buf, 1 );
inst 1:e06cf312e9f0 40 }
inst 1:e06cf312e9f0 41
inst 1:e06cf312e9f0 42 void I2CServo::read(){
inst 1:e06cf312e9f0 43 char buf[ 2 ];
inst 1:e06cf312e9f0 44 mI2C->read( mAddress, buf, 2 );
inst 1:e06cf312e9f0 45
inst 1:e06cf312e9f0 46 mIsStop = buf[ 0 ];
inst 1:e06cf312e9f0 47 mPosition = static_cast< float >( buf[ 1 ] ) / 255.0f;
inst 1:e06cf312e9f0 48 //mPosition = convertRange( mPosition, mRangeMin[ mID ], mRangeMax[ mID ], 0.0f, 1.0f );
inst 1:e06cf312e9f0 49 mPosition = convertRange( mPosition, mRangeMin[ mID ], mRangeMax[ mID ], 0.0f, 1.0f );
inst 1:e06cf312e9f0 50 }