A class to display a value as a bar on either the on-board LEDs, or using LEDs connected to the pwm pins.
BarChart.h@1:6b38423b75db, 2010-11-10 (annotated)
- Committer:
- EricWieser
- Date:
- Wed Nov 10 15:15:17 2010 +0000
- Revision:
- 1:6b38423b75db
- Parent:
- 0:db2aa0ada4f9
Fixed default arguments
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
EricWieser | 0:db2aa0ada4f9 | 1 | #ifndef MBED_BAR_CHART_H |
EricWieser | 0:db2aa0ada4f9 | 2 | #define MBED_BAR_CHART_H |
EricWieser | 0:db2aa0ada4f9 | 3 | |
EricWieser | 0:db2aa0ada4f9 | 4 | #include "mbed.h" |
EricWieser | 0:db2aa0ada4f9 | 5 | /** Bar chart output class, based on an array of PwmOuts |
EricWieser | 0:db2aa0ada4f9 | 6 | * |
EricWieser | 0:db2aa0ada4f9 | 7 | * Example: |
EricWieser | 0:db2aa0ada4f9 | 8 | * @code |
EricWieser | 0:db2aa0ada4f9 | 9 | * // Display the voltage at pin 20 as a bar chart on the on-board LEDs |
EricWieser | 0:db2aa0ada4f9 | 10 | * #include "mbed.h" |
EricWieser | 0:db2aa0ada4f9 | 11 | * #include "BarChart.h" |
EricWieser | 0:db2aa0ada4f9 | 12 | * |
EricWieser | 0:db2aa0ada4f9 | 13 | * BarChart b; |
EricWieser | 0:db2aa0ada4f9 | 14 | * AnalogIn input(p20); |
EricWieser | 0:db2aa0ada4f9 | 15 | |
EricWieser | 0:db2aa0ada4f9 | 16 | * int main() { |
EricWieser | 0:db2aa0ada4f9 | 17 | * //Set the maximum and minimum LED brightness |
EricWieser | 0:db2aa0ada4f9 | 18 | * b.setOutputLimits(0.1,0.9); |
EricWieser | 0:db2aa0ada4f9 | 19 | * |
EricWieser | 0:db2aa0ada4f9 | 20 | * while(1) { |
EricWieser | 0:db2aa0ada4f9 | 21 | * b = input; |
EricWieser | 0:db2aa0ada4f9 | 22 | * //equivalent to b.show(in); |
EricWieser | 0:db2aa0ada4f9 | 23 | * |
EricWieser | 0:db2aa0ada4f9 | 24 | * wait(0.01); |
EricWieser | 0:db2aa0ada4f9 | 25 | * } |
EricWieser | 0:db2aa0ada4f9 | 26 | * } |
EricWieser | 0:db2aa0ada4f9 | 27 | * @endcode |
EricWieser | 0:db2aa0ada4f9 | 28 | */ |
EricWieser | 0:db2aa0ada4f9 | 29 | class BarChart { |
EricWieser | 0:db2aa0ada4f9 | 30 | public: |
EricWieser | 0:db2aa0ada4f9 | 31 | /** Create a Bar chart from the 4 LEDs mounted on the board */ |
EricWieser | 0:db2aa0ada4f9 | 32 | BarChart(); |
EricWieser | 0:db2aa0ada4f9 | 33 | /** Create a Bar chart from the (PWM) pins specified |
EricWieser | 0:db2aa0ada4f9 | 34 | * |
EricWieser | 0:db2aa0ada4f9 | 35 | * @param pxx the pins to use, lowest bar first |
EricWieser | 0:db2aa0ada4f9 | 36 | */ |
EricWieser | 1:6b38423b75db | 37 | BarChart(PinName p1, PinName p2, PinName p3 = NC, PinName p4 = NC, |
EricWieser | 1:6b38423b75db | 38 | PinName p5 = NC, PinName p6 = NC, PinName p7 = NC, PinName p8 = NC, |
EricWieser | 1:6b38423b75db | 39 | PinName p9 = NC, PinName p10 = NC, PinName p11 = NC, PinName p12 = NC, |
EricWieser | 1:6b38423b75db | 40 | PinName p13 = NC, PinName p14 = NC, PinName p15 = NC, PinName p16 = NC); |
EricWieser | 0:db2aa0ada4f9 | 41 | /** Set the range of input that will be provided to the BarChart |
EricWieser | 0:db2aa0ada4f9 | 42 | * |
EricWieser | 0:db2aa0ada4f9 | 43 | * @param min The lowest value that the barchart will display |
EricWieser | 0:db2aa0ada4f9 | 44 | * @param max The highest value that the barchart will display |
EricWieser | 0:db2aa0ada4f9 | 45 | */ |
EricWieser | 0:db2aa0ada4f9 | 46 | void setInputLimits(float min, float max); |
EricWieser | 0:db2aa0ada4f9 | 47 | /** Set the range of output that will be provided to the PWM pins |
EricWieser | 0:db2aa0ada4f9 | 48 | * |
EricWieser | 0:db2aa0ada4f9 | 49 | * @param min The lowest duty cycle of the PwmOuts |
EricWieser | 0:db2aa0ada4f9 | 50 | * @param max The highest duty cycle of the PwmOuts |
EricWieser | 0:db2aa0ada4f9 | 51 | */ |
EricWieser | 0:db2aa0ada4f9 | 52 | void setOutputLimits(float min, float max); |
EricWieser | 0:db2aa0ada4f9 | 53 | /** Output the value to the PwmOuts |
EricWieser | 0:db2aa0ada4f9 | 54 | * |
EricWieser | 0:db2aa0ada4f9 | 55 | * @param value The value to display |
EricWieser | 0:db2aa0ada4f9 | 56 | */ |
EricWieser | 0:db2aa0ada4f9 | 57 | void show(float value); |
EricWieser | 0:db2aa0ada4f9 | 58 | /** Shorthand for the show function */ |
EricWieser | 0:db2aa0ada4f9 | 59 | BarChart& operator = (float value) { |
EricWieser | 0:db2aa0ada4f9 | 60 | show(value); |
EricWieser | 0:db2aa0ada4f9 | 61 | return *this; |
EricWieser | 0:db2aa0ada4f9 | 62 | }; |
EricWieser | 0:db2aa0ada4f9 | 63 | ~BarChart(); |
EricWieser | 0:db2aa0ada4f9 | 64 | private: |
EricWieser | 0:db2aa0ada4f9 | 65 | PwmOut **_outputs; |
EricWieser | 0:db2aa0ada4f9 | 66 | int _numPins; |
EricWieser | 0:db2aa0ada4f9 | 67 | float _maxInput; |
EricWieser | 0:db2aa0ada4f9 | 68 | float _minInput; |
EricWieser | 0:db2aa0ada4f9 | 69 | float _maxOutput; |
EricWieser | 0:db2aa0ada4f9 | 70 | float _minOutput; |
EricWieser | 0:db2aa0ada4f9 | 71 | float _linearScale(float value); |
EricWieser | 0:db2aa0ada4f9 | 72 | void _init(); |
EricWieser | 0:db2aa0ada4f9 | 73 | }; |
EricWieser | 0:db2aa0ada4f9 | 74 | |
EricWieser | 0:db2aa0ada4f9 | 75 | #endif |