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.

Revision:
2:d101ca4ae85e
Parent:
1:5924632f3344
--- a/DacLtc2606.cpp	Thu Sep 13 23:10:35 2012 +0000
+++ b/DacLtc2606.cpp	Fri Sep 14 17:23:05 2012 +0000
@@ -21,9 +21,15 @@
 
 DacLtc2606::DacLtc2606(I2C i2c) : _i2c(i2c)
 {
+    _currentValue = 0;
 }
 
-bool DacLtc2606::write(int value)
+unsigned short DacLtc2606::getCurrentValue()
+{
+    return _currentValue;
+}
+
+bool DacLtc2606::write(unsigned short value)
 {
     int opR;
     char args[3];
@@ -31,24 +37,16 @@
     args[1] = (value >> 8) & 0xFF;
     args[2] = value & 0xFF;
     opR = _i2c.write(_slave, args, 3, false);
+    if(opR == 0) {_currentValue = value;}
     return (opR == 0) ? true : false;
 }
 
 bool DacLtc2606::write(double percent)
 {
-    if((percent >= 0.0) & (percent <= 1.0))
-    {
-        int value = 0;
-        if(percent < 0.5)
-        {
-            value = 32767.0 * (percent * 2);
-        }
-        else
-        {
-            value = -32768.0 * ((1.0 - percent) * 2);
-            if(value == 0) {value = -1;}
-        }
-        return write(value);
-    }
-    return false;
+    if(percent < 0.0) {percent = 0.0;}
+    if(percent > 1.0) {percent = 1.0;}
+    unsigned short value = 0;
+    value = 65535 * percent;
+    _currentValue = value;
+    return write(value);
 }
\ No newline at end of file