const byte digitPins[4] = {8, 9, 10, 11};
const byte pinPont = A5;
const byte symbols[10] = {
0b01111110,
0b00001100,
0b10110110,
0b10011110,
0b11001100,
0b11011010,
0b11111010,
0b00001110,
0b11111110,
0b11011110
};
void setup() {
for (byte i = 1; i < 8; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, 0);
}
for (byte i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
digitalWrite(digitPins[i], 0);
}
pinMode(pinPont, INPUT);
}
void loop() {
static byte prevPin;
short value = analogRead(pinPont);
float scaledValue = value * (50.0 / 1023.0);
int integerPart = (int)scaledValue;
float fractionalPart = scaledValue - integerPart;
for (int8_t i = 1; i >= 0; i--) {
digitalWrite(digitPins[prevPin], 0);
prevPin = i;
PORTD = ~symbols[integerPart % 10];
integerPart /= 10;
digitalWrite(digitPins[i], 1);
delay(5);
}
digitalWrite(digitPins[prevPin], 0);
prevPin = 2;
PORTD = 0b00000001;
digitalWrite(digitPins[2], 1);
delay(5);
fractionalPart *= 100;
int fractionalPartInt = (int)fractionalPart;
for (int8_t i = 3; i >= 2; i--) {
digitalWrite(digitPins[prevPin], 0);
prevPin = i;
fractionalPartInt /= 10;
PORTD = ~symbols[fractionalPartInt % 10];
digitalWrite(digitPins[i], 1);
delay(5);
}
}