#define SEG_COUNT 7 //количество используемых сегментов
const int firstSeg = 2; //младший номер вывода для подключения индикатора
// Таблица перекодировки символов
byte numberSegments[10] = {
0b11000000, //0
0b11111001, //1
0b10100100, //2
0b10110000, //3
0b10011001, //4
0b10010010, //5
0b10000010, //6
0b11111000, //7
0b10000000, //8
0b10010000, //9
};
void setup()
{
for (int i = 0; i < SEG_COUNT; ++i)
pinMode(i + firstSeg, OUTPUT);
}
void loop()
{
int number, mask;
boolean enableSegment;
// число для отображения - количество секунд
number = (millis() / 1000) % 10;
// код символа из таблицы перекодировки
mask = numberSegments[number];
// для каждого сегмента определяем: должен ли он быть включён.
for (int i = 0; i < SEG_COUNT; i++)
{
enableSegment = bitRead(mask, i);
digitalWrite(i + firstSeg, enableSegment);
}
}