Congratulations!
What kind of comments are you looking for?
Now that you've posted that I'll post this one; compiles but otherwise untested.
#define ENTRY_COUNT(ARRAY) (sizeof(ARRAY) / sizeof(ARRAY[0]))
class digit_t
{
union {
uint8_t _pins[7];
struct { uint8_t _A, _B, _C, _D, _E, _F, _G; };
};
digit_t();
public:
digit_t(uint8_t pinA, uint8_t pinB, uint8_t pinC, uint8_t pinD, uint8_t pinE, uint8_t pinF, uint8_t pinG)
: _A(pinA), _B(pinB), _C(pinC), _D(pinD), _E(pinE), _F(pinF), _G(pinG)
{
for ( int i = ENTRY_COUNT(_pins); i--; )
{
pinMode(_pins[i], OUTPUT);
}
}
void display(uint8_t const value)
{
const uint8_t segments[] =
{
// ABCDEFG
0b01111110 // 0
, 0b00110000 // 1
, 0b01101101 // 2
, 0b01111001 // 3
, 0b00110011 // 4
, 0b01011011 // 5
, 0b01011111 // 6
, 0b01110000 // 7
, 0b01111111 // 8
, 0b01110011 // 9
};
for ( uint8_t mask = 0b01000000, i = 0; mask; mask>>= 1, i++ )
{
digitalWrite(_pins[i], ((segments[value] & mask) ? HIGH : LOW));
}
}
};
digit_t digit(13, 12, 11, 10, 9, 8, 7);
void loop()
{
int value;
value = analogRead(0);
value = map(value, 0, 1023, 0, 9); // remap the sensor readings to 0-9
digit.display(value); // display the sensor readings on seven segment display
}
void setup()
{}