Не выводиться температура на индикатор
Используется -- arduino uno(Atmega 328P), четырёхразрядный 7-сегментный LED индикатор, температурный датчик, пьезопищалка.
Проблема -- Не выводится температура с температурного датчика. Для этого используется функция Indikator(), но всё равно не выводит. Прошу, помогите пожалуйста.
(Используется C++)
#define buzer A0
int tmp = A1;
float voltage;
int SegPin[7] = {6, 7, 8, 9, 10, 12, 13};
int DigPin[4] = {2, 3, 4, 5};
boolean Num[10] [7] =
{ {1, 1, 1, 0, 1, 1, 1}, //0
{0, 0, 1, 0, 1, 0, 0}, //1
{1, 0, 1, 1, 0, 1, 1}, //2
{1, 0, 1, 1, 1, 1, 0}, //3
{0, 1, 1, 1, 1, 0, 0}, //4
{1, 1, 0, 1, 1, 1, 0}, //5
{1, 1, 0, 1, 1, 1, 1}, //6
{1, 0, 1, 0, 1, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1}, //8
{1, 1, 1, 1, 1, 1, 0} //9
}; //минус мои нервы
int Dot = 11;
int Razryad [4];
int i, j, state = 0, val, temp;
void setup()
{
for (i = 0; i < 7; ++i)
{
pinMode(SegPin[i], OUTPUT);
}
for (i = 0; i < 4; ++i)
{
pinMode(DigPin[i], OUTPUT);
}
pinMode(Dot, OUTPUT);
pinMode(buzer, OUTPUT);
Serial.begin(9600);
}
void loop()
{
val = analogRead(tmp);
voltage = val * 5.0 / 1023;
temp = voltage * 100 - 273.15;
if (temp > 24)
{
tone(buzer, 1000, 500);
}
Indikator(temp, 1);
Serial.println(temp);
delay(1000);
}
void Indikator(double chislo, int Razr)
{
chislo = chislo * pow(10, Razr);
if (chislo>=10000) {chislo=9999;}
Razryad[3] = chislo / 1000;
Razryad[2] = (chislo-Razryad[3]*1000)/100;
Razryad[1] = (chislo-Razryad[3]*1000-Razryad[2]-100)/10;
Razryad[0] = (chislo-Razryad[3]*1000-Razryad[2]*100-Razryad[1]*10);
for (j = 0; j < 4; j++)
{
if (Razr == j)
{
digitalWrite(Dot, HIGH);
}
for (i = 0; i < 7; i++)
{
digitalWrite(SegPin[i], Num[Razryad[j]] [i]);
}
}
digitalWrite(DigPin[j], HIGH);
delay(1);
digitalWrite(DigPin[j], LOW);
digitalWrite(Dot, LOW);
}