uint8_t groupPin[] = {19, 18, 17, 20};
// Порти розрядів DIG1,DIG2,DIG3,DIG4
uint8_t segmPin[] = {12, 13, 7, 8, 9, 11, 10, 6};
// Сегменти: A, B, C, D, E, F, G, DP
uint8_t code[] = {63, 6, 91, 79, 102, 109, 125, 39, 127, 111, 0};
void setup() {
// put your setup code here, to run once:
for (uint8_t segm = 0; segm < 8; segm++) {
pinMode(segmPin[segm], OUTPUT);
}
for (uint8_t group = 0; group < 4; group++) {
pinMode(groupPin[group], OUTPUT);
}
}
void loop() {
// put your main code here, to run repeatedly:
uint8_t numbers[] = {1, 2, 3, 4};
displayArray(numbers);
}
void display(uint8_t symbol) {
for (uint8_t segm = 0; segm < 7; segm++) {
bool segmState = bitRead(code[symbol], segm);
digitalWrite(segmPin[segm], segmState);
}
}
void clearSegments() { // Процедура вимкнення сегментів
for (uint8_t segm = 0; segm < 7; segm++) {
// Портам усіх сегментів задаємо низький рівень
digitalWrite(segmPin[segm], LOW);
}
}
void setGroup(uint8_t newGroup) {
for (uint8_t group = 0; group < 4; group++) {
if (group == newGroup) // На порті заданої групи
// встановлюємо низький рівень, щоб активувати групу
digitalWrite(groupPin[group], LOW);
else // На всіх інших портах груп – високий рівень
digitalWrite(groupPin[group], HIGH);
}
}
void displayArray(uint8_t displayValue[]) {
for (uint8_t group = 0; group < 4; group++) {
clearSegments();
setGroup(group); // Активуємо групу (розряд)
display(displayValue[group]); // Виводимо значення
delay(10); // Затримка відображення символа
}
}