Simple wrapper object for LTC2606 1CH 16Bit DAC. Instantiate DacLtc2606 object instance passing reference to mbed.I2C object instance. Call write() method on DacLtc2606 instance passing 16Bit integer (0 [Off] to 32767/-32768 [Half-On] to -1 [Full-On]) to set DAC output.
DacLtc2606.cpp@0:896aaf4b80d0, 2012-09-13 (annotated)
- Committer:
- rkimble
- Date:
- Thu Sep 13 23:07:18 2012 +0000
- Revision:
- 0:896aaf4b80d0
- Child:
- 1:5924632f3344
Initial Release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rkimble | 0:896aaf4b80d0 | 1 | |
rkimble | 0:896aaf4b80d0 | 2 | #include "DacLtc2606.h" |
rkimble | 0:896aaf4b80d0 | 3 | #include "mbed.h" |
rkimble | 0:896aaf4b80d0 | 4 | |
rkimble | 0:896aaf4b80d0 | 5 | DacLtc2606::DacLtc2606(I2C i2c) : _i2c(i2c) |
rkimble | 0:896aaf4b80d0 | 6 | { |
rkimble | 0:896aaf4b80d0 | 7 | } |
rkimble | 0:896aaf4b80d0 | 8 | |
rkimble | 0:896aaf4b80d0 | 9 | bool DacLtc2606::write(int value) |
rkimble | 0:896aaf4b80d0 | 10 | { |
rkimble | 0:896aaf4b80d0 | 11 | int opR; |
rkimble | 0:896aaf4b80d0 | 12 | char args[3]; |
rkimble | 0:896aaf4b80d0 | 13 | args[0] = _command; |
rkimble | 0:896aaf4b80d0 | 14 | args[1] = (value >> 8) & 0xFF; |
rkimble | 0:896aaf4b80d0 | 15 | args[2] = value & 0xFF; |
rkimble | 0:896aaf4b80d0 | 16 | opR = _i2c.write(_slave, args, 3, false); |
rkimble | 0:896aaf4b80d0 | 17 | return (opR == 0) ? true : false; |
rkimble | 0:896aaf4b80d0 | 18 | } |
rkimble | 0:896aaf4b80d0 | 19 | |
rkimble | 0:896aaf4b80d0 | 20 | bool DacLtc2606::write(double percent) |
rkimble | 0:896aaf4b80d0 | 21 | { |
rkimble | 0:896aaf4b80d0 | 22 | if((percent >= 0.0) & (percent <= 1.0)) |
rkimble | 0:896aaf4b80d0 | 23 | { |
rkimble | 0:896aaf4b80d0 | 24 | int value = 0; |
rkimble | 0:896aaf4b80d0 | 25 | if(percent < 0.5) |
rkimble | 0:896aaf4b80d0 | 26 | { |
rkimble | 0:896aaf4b80d0 | 27 | value = 32767.0 * (percent * 2); |
rkimble | 0:896aaf4b80d0 | 28 | } |
rkimble | 0:896aaf4b80d0 | 29 | else |
rkimble | 0:896aaf4b80d0 | 30 | { |
rkimble | 0:896aaf4b80d0 | 31 | value = -32768.0 * ((1.0 - percent) * 2); |
rkimble | 0:896aaf4b80d0 | 32 | if(value == 0) {value = -1;} |
rkimble | 0:896aaf4b80d0 | 33 | } |
rkimble | 0:896aaf4b80d0 | 34 | return write(value); |
rkimble | 0:896aaf4b80d0 | 35 | } |
rkimble | 0:896aaf4b80d0 | 36 | return false; |
rkimble | 0:896aaf4b80d0 | 37 | } |