Изменение значения переменной

vvadim
Offline
Зарегистрирован: 23.05.2012

Нигде не могу прочитать, как записать условие изменения значения переменной ( может неправильно вопрос формирую).

int val;

if ( val...???????????????????)  .... здесь какое то действо

Geronimo
Offline
Зарегистрирован: 06.05.2013

Тут все написано
http://arduino.ru/Reference/If

vvadim
Offline
Зарегистрирован: 23.05.2012

val = analogRead(pot);

как записать , что если ИЗМЕНИЛОСЬ val, тогда ....

if (val !=val) ..................

Araris
Offline
Зарегистрирован: 09.11.2012

Основы программирования...

(Объявляем newval и oldval.)

newval = analogRead(pot);

if (newval != oldval)

{

.................

oldval = newval;

}

vvadim
Offline
Зарегистрирован: 23.05.2012

Спасибо

dimOnOff
Offline
Зарегистрирован: 21.04.2015

Здравствуйте! Вопрос похожий у меня. Если есть идеи, помогите, пожалуйста. Есть датчик потока жидкости. Величина Output Liquid Quantity меняется(увеличивается) в зависимости от скорости потока. Так вот собственно вопрос: как сделать так, чтобы включалось реле всякий раз на N секунд через прошедший (каждый) литр ? Прошел литр - включим реле на 5 секунд, выключим, прошел еще литр - включим реле на 5 секунд, выключим и т. д. 

 

 

nik182
Offline
Зарегистрирован: 04.05.2015

Берите остаток от деления на 1000. Как будет меньше чем  , например, 100 - включайте. Затем ждите, пока превысит 900 и опять в начало цикла ждать 100.  

dimOnOff
Offline
Зарегистрирован: 21.04.2015

Спасибо. На мысль натолкнули. Лёд тронулся) 

Pyotr
Offline
Зарегистрирован: 12.03.2014

А чем пример с миллис() не нравится?

word carr_ml, prev_ml,  interval_ml = 1000;//global
if(carr_ml - prev_ml >= interval_ml){//1000 ml
    prev_ml += interval_ml;
    releOn();
}

 

dimOnOff
Offline
Зарегистрирован: 21.04.2015

В общем получилось так. Всё работает. Может, кому-то будет полезно. Фрагмент из кода.


.................
new_litr = totalMilliLitres / 1000;
     
     if( new_litr != old_litr)
      {
        flagA = 1;
      }
      old_litr = new_litr;


      if(flagA==1) 
        { 
         if (millis() - activateTime > 1000)  
           {  
             activateTime = millis();      
             valA++;                        // работает счет 
             digitalWrite(PIN_RELAY,HIGH);  // включаем реле  
           }  
        }

      if(valA > 5) //кол-во секунд при достижении этого значения реле выключается 
       {  
        digitalWrite(PIN_RELAY,LOW); // Выключаем реле
        flagA = 0;
        valA = 0;   //обнуляем переменную 
       } 
....................

 

 

ВладимирN
Offline
Зарегистрирован: 14.11.2019

Извиняюсь конечно. А как прописать. Если надо усреднить значения. То-есть показания прыгают и надо среднее значения. Тоже 

fogary
Offline
Зарегистрирован: 05.03.2016

В чем у Вас проблема, не знаете как усреднять значения?