int firstSegmentPin = 2; // подключение 1го сегмента(A) к пину
int segmentCount = 8; // Сколько всего сегментов подключим подряд
int gigitCount = 4; // На сколько порядков дисплей
int number = 0;
byte numberSegments[10] = { // Всего цифр 10, поэтому в массиве 10 чисел.
0b00111111, //цифра 0
0b00000110, //цифра 1
0b01011011, //цифра 2
0b01001111, //цифра 3
0b01100110, //цифра 4
0b01101101, //цифра 5
0b01111101, //цифра 6
0b00000111, //цифра 7
0b01111111, //цифра 8
0b01101111, //цифра 9
};
byte digit[5] = { // Какой порядок высветить.
0b00000000, //очистка экрана
0b00001000, //единицы
0b00000100, //десятки
0b00000010, //сотни
0b00000001, //тысячи
};
void setup() {
for (int i = 0; i <= segmentCount; i++) {
// Инициализируем все пины начиная с firstSegmentPin
pinMode(i + firstSegmentPin, OUTPUT);
}
}
void loop() {
int mask; // введем локальную переменную
for (int j = 0; j <= 4; j++) {
mask = digit[j]; // включим нужный порядок
for (int i = 0; i < gigitCount; i++) { // идем по всем порядкам
boolean stateSegment = bitRead(mask, i); // определяем: должен ли он быть включён.
digitalWrite(i + firstSegmentPin + segmentCount, stateSegment); // включаем/выключаем порядок на основе полученного значения
delay(100);
}
}
}
/*void loop() {// Выведем цифру 0
number = 0;
int mask = numberSegments[number];
for (int i = 0; i < segmentCount; i++)
for (int i = 0; i < segmentCount; i++) {
// определяем: должен ли он быть включён.
boolean stateSegment = bitRead(mask, i);
// включаем/выключаем сегмент на основе полученного значения
digitalWrite(i + firstSegmentPin, !stateSegment);
}
if (number < 9) { // Увеличиваем счетчик, не дойдем до 9
number++;
}
else number = 0; // Если счетчик перешел за 9 - обнулим
delay(1000);
}*/