2 Water flow sensor + UNO

Тема в разделе "Arduino & Shields", создана пользователем Мистер Кот, 27 мар 2016.

Метки:
  1. Добрый день, уважаемые форумчане.
    Закралась в скетче у меня ошибка, никак второй датчик работать не хочет.
    Помогите устроить так, чтобы данные считывались с двух датчиков потока воды.
    Заранее благодарен

    Исходный скетч брал отсюда: http://www.electroschematics.com/12145/working-with-water-flow-sensors-arduino/

    Код (C++):
    volatile int flow_frequency;
    volatile int flow_frequency2;
    float l_hour;
    float l_hour2;
    unsigned char flowsensor = 2;
    unsigned char flowsensor2 = 3;
    unsigned long currentTime;
    unsigned long cloopTime;

    void flow ()
    {
       flow_frequency++;
    }

    void rpm()
    {
    flow_frequency2++;
    }

    void setup()
    {
       pinMode(flowsensor, INPUT);
       pinMode(flowsensor2, INPUT);
     
       digitalWrite(flowsensor, HIGH);
       digitalWrite(flowsensor2, HIGH);
     
       Serial.begin(9600);
     
       attachInterrupt(0, flow, RISING);
       attachInterrupt(0, rpm, RISING);
       sei();
       currentTime = millis();
       cloopTime = currentTime;
     
    }
    void loop ()
    {
       currentTime = millis();
     
       if(currentTime >= (cloopTime + 1000))
       {
          cloopTime = currentTime; // Updates cloopTime
       
       
          l_hour = (flow_frequency / 5.5);
          l_hour2 = (flow_frequency2 / 5.5);
       
          flow_frequency = 0;
          flow_frequency2 = 0;
       
          Serial.print(l_hour, 1);
          Serial.print("\t");
          Serial.print(l_hour2, 1);
          Serial.print("\t");
          Serial.println(" L/minute");
       }
    }
     
  2. Megakoteyka

    Megakoteyka Оракул

    Код (C++):
    attachInterrupt(0, flow, RISING);
    attachInterrupt(0, rpm, RISING);
    А переменные flow_frequency и flow_frequency2 нужно инициализировать перед первым использованием.
     
    Мистер Кот нравится это.
  3. Tomasina

    Tomasina Сушитель лампочек Команда форума

    Код (C++):
    volatile int flow_frequency1;
    volatile int flow_frequency2;
    float l_hour1;
    float l_hour2;
    const byte flowsensorPin = 2;
    const byte rpmsensorPin = 3;
    unsigned long currentTime;
    unsigned long cloopTime;

    void flow()
    {
      flow_frequency1++;
    }

    void rpm()
    {
      flow_frequency2++;
    }

    void setup()
    {
      pinMode(flowsensorPin, INPUT_PULLUP);
      pinMode(rpmsensorPin, INPUT_PULLUP);

      Serial.begin(9600);

      attachInterrupt(0, flow, RISING);
      attachInterrupt(1, rpm, RISING);
      sei();
      flow_frequency1 = 0;
      flow_frequency2 = 0;
      cloopTime =  millis();
    }

    void loop ()
    {
      currentTime = millis();

      if (currentTime >= (cloopTime + 1000))
      {
        cloopTime = currentTime; // Updates cloopTime

        l_hour1 = (flow_frequency1 / 5.5);
        l_hour2 = (flow_frequency2 / 5.5);

        flow_frequency1 = 0;
        flow_frequency2 = 0;

        Serial.print("Value1 = ");
        Serial.print(l_hour1, 1);
        Serial.print(" L/min\tValue2 = ");
        Serial.print(l_hour2, 1);
        Serial.print("\t");
        Serial.println(" L/min");
      }
    }
     
     
    Мистер Кот нравится это.
  4. Спасибо Вам огромное!