A class to display a value as a bar on either the on-board LEDs, or using LEDs connected to the pwm pins.

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?

UserRevisionLine numberNew 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