Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
BarChart.cpp
- Committer:
- EricWieser
- Date:
- 2010-11-09
- Revision:
- 0:db2aa0ada4f9
- Child:
- 1:6b38423b75db
File content as of revision 0:db2aa0ada4f9:
#include "BarChart.h"
#include "mbed.h"
BarChart::~BarChart() {
for(int i = 0; i < _numPins; i++)
{
delete _outputs[i];
}
delete [] _outputs;
}
BarChart::BarChart() {
PwmOut ** tmp = _outputs = new PwmOut*[4];
*tmp++ = new PwmOut(LED1);
*tmp++ = new PwmOut(LED2);
*tmp++ = new PwmOut(LED3);
*tmp++ = new PwmOut(LED4);
_numPins = 4;
_init();
}
BarChart::BarChart(PinName p1, PinName p2 = NC, PinName p3 = NC, PinName p4 = NC,
PinName p5 = NC, PinName p6 = NC, PinName p7 = NC, PinName p8 = NC,
PinName p9 = NC, PinName p10 = NC, PinName p11 = NC, PinName p12 = NC,
PinName p13 = NC, PinName p14 = NC, PinName p15 = NC, PinName p16 = NC) {
PinName all[16] = {p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16};
_numPins = 0;
for (int i = 0; i < 16; i++)
if (all[i] != NC)
_numPins++;
_outputs = new PwmOut*[_numPins];
_numPins = 0;
for (int i = 0; i < 16; i++)
if (all[i] != NC)
_outputs[_numPins++] = new PwmOut(all[i]);
_init();
}
void BarChart::_init() {
setInputLimits(0, 1);
setOutputLimits(0, 1);
}
void BarChart::setInputLimits(float min, float max) {
_minInput = min;
_maxInput = max;
}
void BarChart::setOutputLimits(float min, float max) {
_minOutput = min;
_maxOutput = max;
}
float BarChart::_linearScale(float value) {
return (value - _minInput)/(_maxInput - _minInput);
}
void BarChart::show(float value) {
value = _linearScale(value) * _numPins;
for (int i = 0; i < _numPins; i++) {
if (i < value - 1)
*_outputs[i] = _maxOutput;
else if (i > value)
*_outputs[i] = _minOutput;
else
*_outputs[i] = _minOutput + (value - i)*(_maxOutput - _minOutput);
}
}