Градусник из матрешки Y

Тема в разделе "Arduino & Shields", создана пользователем xLGSx, 23 апр 2012.

  1. xLGSx

    xLGSx Нуб

    Подключил набор семь сегментов для вывода двузначных чисел, посмотрел как считает секунды, все отлично. Подключил термистор, дописал программу, вроде как работает, но вот незадача, при каждом новом выводе значений температуры прокликивается чуть более чем несколько миллионов значений, что вызывает показ двух восьмерок в течении секунды.
    В чем подвох?
    Код (Text):
    #define CLOCK_PIN 2
    #define RESET_PIN 3
    #include <math.h>


    void setup()
    {
        pinMode(RESET_PIN, OUTPUT);
        pinMode(CLOCK_PIN, OUTPUT);
    }

    void loop()
    {
        int n;
        int t;
        n = 1;
        while (n==1)
        {
        double temp = analogRead(4); //Опрашиваем термистор
        temp = log(((10240000/(analogRead(4))) - 10000)); //рассчитываем температуру по неизвестному алгоритму, гуляющему в рунете
        temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * temp * temp))* temp);
        temp = temp - 273.15 + 6; //переводим в градусы, поправляем погрешность
        digitalWrite(RESET_PIN, HIGH); //обнуляем счетчик дисплея
        digitalWrite(RESET_PIN, LOW);
        t = int(temp);
        while (t>>0) { //пролиставаем счетчик до нужного значения.
          t = t - 1;
            digitalWrite(CLOCK_PIN, HIGH);
            digitalWrite(CLOCK_PIN, LOW);
        }
        delay(1000);
        }

    }
     
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Странно всё это. Почему получается миллион прокликиваний? Можете вывести t через Serial и посмотреть чему оно в действительности равно?

    Несмотря на то, что конструкция while (t>>0) { ... } странна: вы видимо хотели написать одинарное > (больше), она ничего не портит и всё должно работать.
     
    xLGSx нравится это.
  3. xLGSx

    xLGSx Нуб

    Не понятное что то вышло, Т принимало значение -13, что вызывало этот глюк, странно что оно вообще работало, после введения поправки на температуру все заработало исправно. Спасибо.