Driver to control leds one at a time or in group

Dependents:   handling_leds leds toggle writing ... more

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Hotboards_leds.h Source File

Hotboards_leds.h

00001 /*
00002   Hotboards_leds.cpp - Driver to control leds one at a time or in group
00003   Hotboards leds board (http://hotboards.org)
00004   Created by Diego Perez, January 16, 2016.
00005   Released into the public domain.
00006 */
00007 #ifndef Hotboards_leds_h
00008 #define Hotboards_leds_h
00009 
00010 #include "mbed.h"
00011 
00012 /** Hotboards_leds class.
00013  *  Used to control general purpose leds
00014  *
00015  * Example:
00016  * @code
00017  * #include "mbed.h"
00018  * #include "Hotboards_leds.h"
00019  *
00020  * Hotboards_leds led( PB_5 );
00021  * 
00022  * int main( void ) 
00023  * {
00024  *     for(;;){  
00025  *         led.toggle( );
00026  *         wait( 0.2 );
00027  *     }
00028  * }
00029  * @endcode
00030  */
00031 class Hotboards_leds
00032 {
00033     public :
00034         /** Create Hotboards_leds instance for one led
00035           * @param led0 pin where the led 0 will be connected
00036           * @param on logic level to turn on the led
00037           * 
00038           * Example:
00039           * @code
00040           *   // instance one led on pin 5
00041           *   Hotboards_leds led( 5 );
00042           * @endcode
00043           */
00044         Hotboards_leds( PinName led0, bool on=1 );
00045         
00046         /** Create Hotboards_leds instance for two leds
00047           * @param led1 pin where the led 1 will be connected
00048           * @param led0 pin where the led 0 will be connected
00049           * @param on logic level to turn on the leds
00050           * 
00051           * Example:
00052           * @code
00053           *   // one instance with 2 leds on pins 5 and 6
00054           *   Hotboards_leds led( 5, 6 );
00055           * @endcode
00056           */
00057         Hotboards_leds( PinName led1, PinName led0, bool on=1 );
00058         
00059         /** Create Hotboards_leds instance for three leds
00060           * @param led2 pin where the led 2 will be connected
00061           * @param led1 pin where the led 1 will be connected
00062           * @param led0 pin where the led 0 will be connected
00063           * @param on logic level to turn on the leds
00064           * 
00065           * Example:
00066           * @code
00067           *   // one instance with 3 leds on pins 5, 6 and 7
00068           *   Hotboards_leds led( 5, 6, 7 );
00069           * @endcode
00070           */
00071         Hotboards_leds( PinName led2, PinName led1, PinName led0, bool on=1 );
00072         
00073         /** Create Hotboards_leds instance for four leds
00074           * @param led3 pin where the led 3 will be connected
00075           * @param led2 pin where the led 2 will be connected
00076           * @param led1 pin where the led 1 will be connected
00077           * @param led0 pin where the led 0 will be connected
00078           * @param on logic level to turn on the leds
00079           * 
00080           * Example:
00081           * @code
00082           *   // one instance with 4 leds on pins 5, 6, 7 and 8
00083           *   Hotboards_leds led( 5, 6, 7, 8 );
00084           * @endcode
00085           */
00086         Hotboards_leds( PinName led3, PinName led2, PinName led1, PinName led0, bool on=1 );
00087         
00088         /** Create Hotboards_leds instance for five leds
00089           * @param led4 pin where the led 4 will be connected
00090           * @param led3 pin where the led 3 will be connected
00091           * @param led2 pin where the led 2 will be connected
00092           * @param led1 pin where the led 1 will be connected
00093           * @param led0 pin where the led 0 will be connected
00094           * @param on logic level to turn on the leds
00095           * 
00096           * Example:
00097           * @code
00098           *   // one instance with 5 leds on pins 5, 6, 7, 8 and 9
00099           *   Hotboards_leds led( 5, 6, 7, 8, 9 );
00100           * @endcode
00101           */
00102         Hotboards_leds( PinName led4, PinName led3, PinName led2, PinName led1, PinName led0, bool on=1 );
00103         
00104         /** Create Hotboards_leds instance for six leds
00105           * @param led5 pin where the led 5 will be connected
00106           * @param led4 pin where the led 4 will be connected
00107           * @param led3 pin where the led 3 will be connected
00108           * @param led2 pin where the led 2 will be connected
00109           * @param led1 pin where the led 1 will be connected
00110           * @param led0 pin where the led 0 will be connected
00111           * @param on logic level to turn on the leds
00112           * 
00113           * Example:
00114           * @code
00115           *   // one instance with 6 leds on pins 5, 6, 7, 8, 9 and 10
00116           *   Hotboards_leds led( 5, 6, 7, 8, 9, 10 );
00117           * @endcode
00118           */
00119         Hotboards_leds( PinName led5, PinName led4, PinName led3, PinName led2, PinName led1, PinName led0, bool on=1 );
00120         
00121         /** Create Hotboards_leds instance for seven leds
00122           * @param led6 pin where the led 6 will be connected
00123           * @param led5 pin where the led 5 will be connected
00124           * @param led4 pin where the led 4 will be connected
00125           * @param led3 pin where the led 3 will be connected
00126           * @param led2 pin where the led 2 will be connected
00127           * @param led1 pin where the led 1 will be connected
00128           * @param led0 pin where the led 0 will be connected
00129           * @param on logic level to turn on the leds
00130           * 
00131           * Example:
00132           * @code
00133           *   // one instance with 7 leds on pins 5, 6, 7, 8, 9, 10 and 11
00134           *   Hotboards_leds led( 5, 6, 7, 8, 9, 10, 11 );
00135           * @endcode
00136           */
00137         Hotboards_leds( PinName led6, PinName led5, PinName led4, PinName led3, PinName led2, PinName led1, PinName led0, bool on=1 );
00138         
00139         /** Create Hotboards_leds instance for eight leds
00140           * @param led7 pin where the led 7 will be connected
00141           * @param led6 pin where the led 6 will be connected
00142           * @param led5 pin where the led 5 will be connected
00143           * @param led4 pin where the led 4 will be connected
00144           * @param led3 pin where the led 3 will be connected
00145           * @param led2 pin where the led 2 will be connected
00146           * @param led1 pin where the led 1 will be connected
00147           * @param led0 pin where the led 0 will be connected
00148           * @param on logic level to turn on the leds
00149           * 
00150           * Example:
00151           * @code
00152           *   // one instance with 8 leds on pins 5, 6, 7, 8, 9, 10, 11 and 12
00153           *   Hotboards_leds led( 5, 6, 7, 8, 9, 10, 11, 12 );
00154           * @endcode
00155           */
00156         Hotboards_leds( PinName led7, PinName led6, PinName led5, PinName led4, PinName led3, PinName led2, PinName led1, PinName led0, bool on=1 );
00157         
00158         /** Turn on a single led
00159           * @param led led number to be turn on
00160           * 
00161           * Example:
00162           * @code
00163           *   // instance one led on pin 5 and turn it on
00164           *   Hotboards_leds led( 5 );
00165           *   led.turnOn( );
00166           *     
00167           *   // instance a bus with 4 leds
00168           *   Hotboards_leds leds( 8, 7, 6, 5 );
00169           *   // turn on led 2 on pin 7
00170           *   leds.turnOn( 2 );
00171           *   // turn on led 0 on pin 5
00172           *   leds.turnOn( 0 );
00173           * @endcode
00174           */
00175         void turnOn( uint8_t led=0 );
00176         
00177         /** Turn off a single led
00178           * @param led led number to be turn off
00179           * 
00180           * Example:
00181           * @code
00182           *   // instance one led on pin 5 and turn it off
00183           *   Hotboards_leds led( 5 );
00184           *   led.turnOff( );
00185           *     
00186           *   // instance a bus with 4 leds
00187           *   Hotboards_leds leds( 8, 7, 6, 5 );
00188           *   // turn off led 3 on pin 8
00189           *   leds.turnOff( 3 );
00190           *   // turn off led 0 on pin 5
00191           *   leds.turnOff( 0 );
00192           * @endcode
00193           */
00194         void turnOff( uint8_t led=0 );
00195         
00196         /** Toggle a single led
00197           * @param led led number to be toggled
00198           * 
00199           * Example:
00200           * @code
00201           *   // instance one led on pin 7 and toggle it
00202           *   Hotboards_leds led( 7 );
00203           *   led.toggle( );
00204           *     
00205           *   // instance a bus with 3 leds
00206           *   Hotboards_leds leds( 2, 3, 4 );
00207           *   // toggle led 2 on pin 2
00208           *   leds.toggle( 2 );
00209           *   // toggle led 1 on pin 3
00210           *   leds.toggle( 1 );
00211           * @endcode
00212           */
00213         void toggle( uint8_t led=0 );
00214         
00215         /** Write to a single led or the entire bus
00216           * @param val value to be written
00217           * 
00218           * Example:
00219           * @code
00220           *   // instance one led on pin 7 and write a 1 (aceptara valores de 0 a 1) 
00221           *   Hotboards_leds led( 7 );
00222           *   led.write( 1 );
00223           *    
00224           *   // instance a 4 leds bus (pin2->led3 ..... pin5->led0)
00225           *   Hotboards_leds leds( 2, 3, 4, 5 );
00226           *   // write the 10 value (it will accept values from 0 to 15) 
00227           *   leds.write( 10 );
00228           *      
00229           *   // instance an 8 leds bus (pin4->led7 ..... pin3->led0)
00230           *   Hotboards_leds leds( 4, 3, 2, 6, 5, 7, 8, 9 );
00231           *   // write the 134 value (it will accept values from 0 to 255)
00232           *   leds.write( 134 );
00233           * @endcode
00234           */
00235         void write( uint8_t val );
00236         
00237         /** Read a single led or the entire bus
00238           * @return led states
00239           * 
00240           * Example:
00241           * @code
00242           *   // instance on led on 7 and read its state (0 o 1)
00243           *   Hotboards_leds led( 7 );
00244           *   uint8_t var = led.read( );
00245           *    
00246           *   // instance an 8 leds bus (pin9->led7 ..... pin2->led0)
00247           *   Hotboards_leds leds( 9, 8, 7, 6, 5, 4, 3, 2 );
00248           *   // read the leds value (from 0 to 255) 
00249           *   uint8_t var = leds.read( );
00250           *  
00251           *   // nstance a 4 leds bus (pin2->led3 ..... pin5->led0)
00252           *   Hotboards_leds leds( 2, 3, 4, 5 );
00253           *   // read led 1 state (pin 4) 
00254           *   uint8_t val1 = leds.write( 1 );
00255           *   // read led 0 state (pin 5) 
00256           *   uint8_t val2 = leds.write( 0 );
00257           * @endcode
00258           */
00259         uint8_t read( uint8_t led=0xff );
00260 
00261     private :
00262         void begin( uint8_t led, PinName pin );
00263         DigitalOut *_pin[8];
00264         uint8_t _leds;
00265         uint8_t _state;
00266         bool _on;
00267 };
00268 
00269 #endif