Abstract class for LED driver component. Including "LedPwmOut API" class.

Dependents:   PCA962x PCA9632

Committer:
nxp_ip
Date:
Thu Mar 19 10:02:44 2015 +0000
Revision:
1:8a0aa36b236c
Parent:
0:a0e4342d3b3d
API document update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nxp_ip 0:a0e4342d3b3d 1 /** LedPwmOut class for LED driver component
nxp_ip 0:a0e4342d3b3d 2 *
nxp_ip 0:a0e4342d3b3d 3 * @author Akifumi (Tedd) OKANO, NXP Semiconductors
nxp_ip 0:a0e4342d3b3d 4 * @version 0.5
nxp_ip 0:a0e4342d3b3d 5 * @date 04-Mar-2015
nxp_ip 0:a0e4342d3b3d 6 *
nxp_ip 0:a0e4342d3b3d 7 * Released under the Apache 2 license License
nxp_ip 0:a0e4342d3b3d 8 */
nxp_ip 0:a0e4342d3b3d 9
nxp_ip 0:a0e4342d3b3d 10 #ifndef MBED_LedPwmOut
nxp_ip 0:a0e4342d3b3d 11 #define MBED_LedPwmOut
nxp_ip 0:a0e4342d3b3d 12
nxp_ip 0:a0e4342d3b3d 13 #include "mbed.h"
nxp_ip 0:a0e4342d3b3d 14 #include "CompLedDvr.h"
nxp_ip 0:a0e4342d3b3d 15
nxp_ip 0:a0e4342d3b3d 16 /** LedPwmOut class
nxp_ip 0:a0e4342d3b3d 17 *
nxp_ip 0:a0e4342d3b3d 18 * @class LedPwmOut
nxp_ip 0:a0e4342d3b3d 19 *
nxp_ip 0:a0e4342d3b3d 20 * "LedPwmOut" class works like "PwmOut" class of mbed-SDK.
nxp_ip 0:a0e4342d3b3d 21 * This class provides API on device's pin level with abstracting the LED controller.
nxp_ip 0:a0e4342d3b3d 22 *
nxp_ip 0:a0e4342d3b3d 23 * Example:
nxp_ip 0:a0e4342d3b3d 24 * @code
nxp_ip 0:a0e4342d3b3d 25 * #include "mbed.h"
nxp_ip 0:a0e4342d3b3d 26 * #include "PCA9626.h"
nxp_ip 0:a0e4342d3b3d 27 *
nxp_ip 0:a0e4342d3b3d 28 * PCA9626 led_cntlr( p28, p27, 0xC4 ); // SDA, SCL, Slave_address(option)
nxp_ip 0:a0e4342d3b3d 29 * LedPwmOut led( led_cntlr, L0 );
nxp_ip 0:a0e4342d3b3d 30 *
nxp_ip 0:a0e4342d3b3d 31 * int main()
nxp_ip 0:a0e4342d3b3d 32 * {
nxp_ip 0:a0e4342d3b3d 33 * while( 1 ) {
nxp_ip 0:a0e4342d3b3d 34 * for( float p = 0.0f; p < 1.0f; p += 0.1f ) {
nxp_ip 0:a0e4342d3b3d 35 * led = p;
nxp_ip 0:a0e4342d3b3d 36 * wait( 0.1 );
nxp_ip 0:a0e4342d3b3d 37 * }
nxp_ip 0:a0e4342d3b3d 38 * }
nxp_ip 0:a0e4342d3b3d 39 * }
nxp_ip 0:a0e4342d3b3d 40 * @endcode
nxp_ip 0:a0e4342d3b3d 41 */
nxp_ip 0:a0e4342d3b3d 42 class LedPwmOut
nxp_ip 0:a0e4342d3b3d 43 {
nxp_ip 0:a0e4342d3b3d 44 public:
nxp_ip 0:a0e4342d3b3d 45
nxp_ip 0:a0e4342d3b3d 46 /** Create a LedPwmOutCC instance connected to a pin on the LED driver
nxp_ip 0:a0e4342d3b3d 47 * A pin which performs PWM and constant current sink
nxp_ip 0:a0e4342d3b3d 48 *
nxp_ip 0:a0e4342d3b3d 49 * @param ledp Instance of a device (LED driver)
nxp_ip 0:a0e4342d3b3d 50 * @param pin_name Specifying pin by LedPinName like 'L7'.
nxp_ip 0:a0e4342d3b3d 51 *
nxp_ip 0:a0e4342d3b3d 52 * @note
nxp_ip 0:a0e4342d3b3d 53 * Pin names of LED driver are defined like L0, L1, L2.. It is not like "LED0".
nxp_ip 0:a0e4342d3b3d 54 * Because we cannot use mbed reserved symbols.
nxp_ip 0:a0e4342d3b3d 55 */
nxp_ip 0:a0e4342d3b3d 56 LedPwmOut( CompLedDvr &ledp, LedPinName pin_name );
nxp_ip 0:a0e4342d3b3d 57
nxp_ip 0:a0e4342d3b3d 58 /** Destractor
nxp_ip 0:a0e4342d3b3d 59 */
nxp_ip 0:a0e4342d3b3d 60 virtual ~LedPwmOut();
nxp_ip 0:a0e4342d3b3d 61
nxp_ip 0:a0e4342d3b3d 62 /** Set PWM duty-cycle
nxp_ip 0:a0e4342d3b3d 63 *
nxp_ip 0:a0e4342d3b3d 64 * @param v Ratio of duty-cycle. '0.0' for 0 %. '1.0' for 99.6 % on PCA9956A and 100 % for PCA9955A.
nxp_ip 0:a0e4342d3b3d 65 */
nxp_ip 0:a0e4342d3b3d 66 virtual void pwm( float v );
nxp_ip 0:a0e4342d3b3d 67
nxp_ip 0:a0e4342d3b3d 68 /** A shorthand for pwm()
nxp_ip 0:a0e4342d3b3d 69 */
nxp_ip 0:a0e4342d3b3d 70 LedPwmOut& operator= ( float rhs );
nxp_ip 0:a0e4342d3b3d 71
nxp_ip 0:a0e4342d3b3d 72 private:
nxp_ip 0:a0e4342d3b3d 73 CompLedDvr *leddvrp;
nxp_ip 0:a0e4342d3b3d 74 LedPinName pin;
nxp_ip 0:a0e4342d3b3d 75
nxp_ip 0:a0e4342d3b3d 76 void pwm( int pin, float value );
nxp_ip 0:a0e4342d3b3d 77 }
nxp_ip 0:a0e4342d3b3d 78 ;
nxp_ip 0:a0e4342d3b3d 79
nxp_ip 0:a0e4342d3b3d 80 #endif // MBED_LedPwmOut