Схему перепроверил раз 6. Скетч: #include <math.h> #define FIRST_LED_PIN 2 #define LED_COUNT 10 void setup() { for (int i = 0; i < LED_COUNT; ++i) pinMode(i + FIRST_LED_PIN, OUTPUT); } void loop() { float voltage = analogRead(A0) * 5.0 / 1023.0; float temperature = 1.0/(log(voltage/ 2.5)/4300.0 + 1.0/ 298.0) - 273.0; for (int i = 0; i < LED_COUNT; ++i) { boolean enableSegment = (temperature >= 21+i); digitalWrite(i + FIRST_LED_PIN, enableSegment); } } В "конспекте" скетч отличается от скетча на сайте.
У шкалы есть полярность, если не работает одной стороной, попробуйте перевернуть её , может плюс с минусом перепутали на шкале.
Ок, как минимум исключили поломку самой шкалы. В эксперименте с термометром точно все соединили как показано в мануале? Я вечером соберу эту схему и запущу ваш скетч, тогда отпишусь.
Отчитываюсь. Собрал схему и запустил ваш скетч. Все работает. Давайте попробуем понять на каком этапе у вас ошибка путем вывода на печать значений напряжения на аналоговом входе, пересчитанного напряжения и температуры. Я немного изменил код, просто добавил вывод значений на экран. Запустите этот скетч и посмотрите какие там будут числа (Инструменты - Монитор порта или Ctrl+Shift+M) Код (C++): #include <math.h> #define FIRST_LED_PIN 2 #define LED_COUNT 5 void setup() { for (int i = 0; i < LED_COUNT; ++i) pinMode(i + FIRST_LED_PIN, OUTPUT); Serial.begin(9600); } void loop() { float voltage = analogRead(A0) * 5.0 / 1023.0; float temperature = 1.0/(log(voltage/ 2.5)/4300.0 + 1.0/ 298.0) - 273.0; for (int i = 0; i < LED_COUNT; ++i) { boolean enableSegment = (temperature >= 21+i); digitalWrite(i + FIRST_LED_PIN, enableSegment); } Serial.println(analogRead(A0)); Serial.println(voltage); Serial.println(temperature); delay(1000); }