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.

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?

UserRevisionLine numberNew 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 }