Цикл for не вводится, даже если первоначальное требование истинно - PullRequest
0 голосов
/ 07 мая 2019

У меня есть следующая функция с циклом for внутри.Код запускается на Arduino, и функция Serial.print показывает, что функция введена правильно с правильным входным значением.Но цикл for не введен.У кого-нибудь есть идеи почему?

void openvalveCold(int steps){
    Serial.println(steps);

    // Steps is confimed to be 200. 
    digitalWrite(sleep1,HIGH);

    for (antalsteg = 0; antalsteg == steps; antalsteg++)
    {  
        Serial.println("2");  

        //digitalWrite(dir1,HIGH);
        digitalWrite(stepp1,HIGH);

        delay(25);
        digitalWrite(stepp1,LOW);
        delay(25);
        Serial.println(antalsteg);

        nr_of_steps_cold++;
    }
}

void loop{
    // calling on function
    openvalveCold(200);
}

Ответы [ 2 ]

4 голосов
/ 08 мая 2019

Цикл for обычно строится так:

for(init counter; condition; increase counter)

Вы сделали (ложное) предположение, что цикл повторяется до тех пор, пока условие не станет истинным.Это неверно.Это циклы , а это правда.Изменить на:

for (antalsteg = 0; antalsteg < steps; antalsteg++)
3 голосов
/ 07 мая 2019

Цикл не введен, потому что условие ложно при запуске цикла:

for (antalsteg = 0; antalsteg == steps; antalsteg++)

Когда условие цикла сначала вычисляется, antalsteg равно 0, а steps равно 200.Таким образом, antalsteg == steps оценивается как 0 == 200, что неверно.Так что цикл никогда не вводится.

...