I2CServo.cpp@1:e06cf312e9f0, 2015-08-21 (annotated)
- 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?
User | Revision | Line number | New 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 | } |