Условие if срабатывает два раза

Тема в разделе "Arduino & Shields", создана пользователем Sem, 8 окт 2021.

Метки:
  1. Airbus

    Airbus Радиохулиган Модератор

    Далее,условие if(P=1) будет всегда истинно и блок будет всегда выполнятся а условие if(P=0) будет всегда ложно и блок не выполниться никогда. Догадайтесь почему?
     
    mednagolov нравится это.
  2. mednagolov

    mednagolov Гик

    Огромное Вам спасибо! А я второй день бился ....:D надо же...
    Конечно я ещё только учусь.... всё заработало ОК. От милис хочется уйти т.к. мне в проэкте по уши хватит секундного разрешения таймеров и меню. И так же эти переменные будут много использоваться для обработки подачи от температуры, а также в менюшках.
    Это будет в конце концов контролер пелетной горелки, а это был блок отвечающий за подачу пелет. Получилось так -
    Код (C++):
    int taim;    //переменная таймера паузы
    int taim1;   //переменная таймера подачи
    int s=0;    // секунда от милис
    int P=1;    //для digitalWrite(pin_on ,P ) включить/отключить
    int Po=3;   // время подачи по умолчанию в секундах
    int Pa=7;   // время паузы по умолчанию в секундах

    const int pin_on = A2;     // pin реле

    uint32_t myTimer1; //пнременная таймера милис


    void setup() {
    Serial.begin (9600);

    pinMode(pin_on, OUTPUT); // пин реле подачи пелет
     

    }
    ////////////////////////////////////////////////////////////////////////////////
    void loop() {

    digitalWrite(pin_on ,P );  // управление реле подачи

    /////////////таймер на милис даёт s=1 секунде //////////////////////////////////
    if (millis() - myTimer1 >= 1000  )
      {  myTimer1 = millis();     s++;  }  // таймер на millis()
    /////////////////////////////////////////////////////////////////////////////////

    /////////// таймеры подачи и паузы подачи ///////////////////////////
    if(P==1){
    if (s - taim >= Pa  )    // таймер паузы
      {  taim1=s; P=0;}}

    if(P==0){
    if (s - taim1 >= Po  )    //таймер подачи
      {  taim=s;  P=1;}}
    ///////////////////////////////////////////////////////////////////
    //****************************************************************************************************
    Serial.print(" T=");Serial.println( taim  );
    Serial.print(" T1=");Serial.println( taim1  );
    Serial.print(" P=");Serial.println( P );
    Serial.print(s);
    //************************************************
    delay(100);
    }// END
     
  3. mednagolov

    mednagolov Гик

    Извиняюсь....чёта не выкладывалось , а потом аж три раз подряд...)))
     
  4. mednagolov

    mednagolov Гик

    Это оно само... на радостях наверное....)
     
    Airbus нравится это.
  5. Airbus

    Airbus Радиохулиган Модератор

    Ничего. Подправил
     
  6. mednagolov

    mednagolov Гик

    Благодарю...)))