// Display pins A,B,C,D,E,F,G,DP
int pins[8] = {2,3,4,5,6,7,8,9};
int digs[10] = {B111111,B110,B1011011,B1001111,B1100110,
B1101101,B1111101,B111,B1111111,B1101111};
int state = 0;
int mask = 1;
int num = 0;
// Піни, до яких підключені світлодіоди
const int led1Pin = 2; // Перший світлодіод
const int led2Pin = 3; // Другий світлодіод
// Інтервали часу (в мілісекундах)
const long led1Interval = 1000; // 1 секунда
const long led2Interval = 500; // 0.5 секунди
// Змінні для зберігання часу останньої зміни стану світлодіодів
unsigned long previousTimeLed1 = 0;
unsigned long previousTimeLed2 = 0;
// Змінні для зберігання поточного стану світлодіодів
bool led1State = LOW;
bool led2State = LOW;
void setup() {
// put your setup code here, to run once:
for (int i = 0; i < 8; i++) {
pinMode(pins[i], OUTPUT);
}
}
void loop() {
/*for (int i = 0; i < 10; i++) {
putDigit(i);
delay(1000);
}
clear();
putDot();
delay(1000);*/
// Отримуємо поточний час
unsigned long currentTime = millis();
// Керування другим світлодіодом (включається і виключається кожні 0.5 секунди)
if (currentTime - previousTimeLed2 >= led2Interval) {
// Зберігаємо поточний час як час останньої зміни
previousTimeLed2 = currentTime;
// Змінюємо стан світлодіода
led2State = !led2State;
// Встановлюємо новий стан світлодіода
digitalWrite(pins[7], led2State);
}
// Керування першим світлодіодом (горить 1 секунду, пауза 1 секунда)
if (currentTime - previousTimeLed1 >= led1Interval) {
// Зберігаємо поточний час як час останньої зміни
previousTimeLed1 = currentTime;
putDigit(num++);
if (num == 10) {
num = 0;
//clear();
}
}
}
void putDigit(int digit) {
clear();
mask = 1;
for (int i = 0; i < 7; i++) {
state = digs[digit] & mask;
digitalWrite(pins[i], state);
mask <<= 1;
}
}
void clear() {
for (int i = 0; i < 7; i++) {
digitalWrite(pins[i], LOW);
}
}
void putDot() {
digitalWrite(pins[7], HIGH);
}