Помогите. Не работает светодиодная шкала в опыте 16 "Комнатный термометр"

Тема в разделе "Arduino & Shields", создана пользователем dadsadasda, 10 янв 2018.

  1. dadsadasda

    dadsadasda Нуб

    Схему перепроверил раз 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);
    }
    }
    В "конспекте" скетч отличается от скетча на сайте.
     
  2. Толик Иванов

    Толик Иванов Administrator Команда форума

    Код отличается но на работу это не должно влиять.

    Что значит не работает?
     
  3. Толик Иванов

    Толик Иванов Administrator Команда форума

    У шкалы есть полярность, если не работает одной стороной, попробуйте перевернуть её , может плюс с минусом перепутали на шкале.
     
  4. dadsadasda

    dadsadasda Нуб

    Переворачивал
     
  5. dadsadasda

    dadsadasda Нуб

    То есть когда включаю шкала не работает
     
  6. Larscliff

    Larscliff Нерд

    А в других экспериментах, где используется шкала (Пульсар и бегущий огонек), она тоже не работает?
     
  7. dadsadasda

    dadsadasda Нуб

    работает
     
  8. Larscliff

    Larscliff Нерд

    Ок, как минимум исключили поломку самой шкалы. В эксперименте с термометром точно все соединили как показано в мануале?
    Я вечером соберу эту схему и запущу ваш скетч, тогда отпишусь.
     
  9. dadsadasda

    dadsadasda Нуб

    Буду ждать
     
  10. Larscliff

    Larscliff Нерд

    Отчитываюсь. Собрал схему и запустил ваш скетч. Все работает.
    Давайте попробуем понять на каком этапе у вас ошибка путем вывода на печать значений напряжения на аналоговом входе, пересчитанного напряжения и температуры.
    Я немного изменил код, просто добавил вывод значений на экран. Запустите этот скетч и посмотрите какие там будут числа (Инструменты - Монитор порта или 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);
    }
     
    Последнее редактирование: 11 янв 2018
    dadsadasda и vasdor нравится это.
  11. dadsadasda

    dadsadasda Нуб

    Заработало!
     
  12. Larscliff

    Larscliff Нерд

    Хорошо! Так в чем была причина, почему сначала не работало?
     
    Последнее редактирование: 12 янв 2018
  13. dadsadasda

    dadsadasda Нуб

    Один из резисторов умер