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
- Committer:
- rkimble
- Date:
- 2012-09-13
- Revision:
- 1:5924632f3344
- Parent:
- 0:896aaf4b80d0
- Child:
- 2:d101ca4ae85e
File content as of revision 1:5924632f3344:
/* Copyright (c) 2012 Reed Kimble, MIT License * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software * and associated documentation files (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, publish, distribute, * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or * substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "DacLtc2606.h" #include "mbed.h" DacLtc2606::DacLtc2606(I2C i2c) : _i2c(i2c) { } bool DacLtc2606::write(int value) { int opR; char args[3]; args[0] = _command; args[1] = (value >> 8) & 0xFF; args[2] = value & 0xFF; opR = _i2c.write(_slave, args, 3, false); 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; }