const int segments[7] = {3, 4, 5, 6, 7, 8, 9}; // Піни відповідають сегментам в порядку A, B, C, D, E, F, G
const int segments1[7] = {47, 48, 49, 50, 51, 52, 53};
const int dotSegment = 10; // Пін для крапки на першому індикаторі
const int analogInput = A3; // Аналоговий вхід для вимірювання напруги
// Матриця перетворень:
const int numbers[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
void setup() {
for (int i = 3; i <= 10; i++) {
pinMode(i, OUTPUT); // Встановлення пінів для сегментів і крапки як вихідні
}
for (int i = 47; i <= 53; i++) {
pinMode(i, OUTPUT); // Встановлення пінів для сегментів і крапки як вихідні
}
pinMode(analogInput, INPUT);
Serial.begin(9600);
}
void displayDigit(bool ind, int digit) {
if(ind == true)
{
for (int i = 0; i < 7; i++) {
digitalWrite(segments[i], numbers[digit][i]); // Виведення сегментів для відображення цифри
}
digitalWrite(dotSegment, HIGH); // Виведення крапки
}
else
{
for (int i = 0; i < 7; i++) {
digitalWrite(segments1[i], numbers[digit][i]); // Виведення сегментів для відображення цифри
}
}
}
void loop() {
int sensorValue = analogRead(analogInput); // Зчитування значення з аналогового входу
float voltage = map(sensorValue, 0, 1023, 0, 600); // Перетворення значення у межі від 0 до 6
float voltage1 = voltage/100;
// Отримання цілої частини напруги та значення після коми
int integerPart = int(voltage1);
int decimalPart = int((voltage1 - integerPart) * 10);
// Відображення цілої частини напруги на першому індикаторі з крапкою
displayDigit(true, integerPart);
delay(5); // Затримка для відображення цифри
// Відображення значення після коми на другому індикаторі
displayDigit(false, decimalPart);
delay(5); // Затримка для відображення цифри
Serial.print("Напруга = ");
Serial.print(sensorValue);
Serial.print(" Перетворена = ");
Serial.println(voltage1);
delay(50);
}