Вопрос по условию

Женёчек
Offline
Зарегистрирован: 25.04.2014

доброго времени суток.

подскажите, пожалуйста, что я не так делаю?

задаю значения a и b = 1. после первого поворота меняю значение а на ноль, но условие всё равно продолжает выполняться. почему?

#include <Servo.h> 

Servo myservo;  // create servo object to control a servo 
// a maximum of eight servo objects can be created 

int pos = 0;    // variable to store the servo position 
boolean a=1, b=1; 
void setup() 
{ 
  Serial.begin(9600);
  myservo.attach(3);  // attaches the servo on pin 3 to the servo object 
} 


void loop() 
{   
  Serial.print("a = ");
  Serial.println(a);
  Serial.print("b = ");
  Serial.println(b);
  if ((a=1) && (b=1)) {
    for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
    { 
      a=0;                                 // in steps of 1 degree 
      myservo.write(pos);              // tell servo to go to position in variable 'pos' 
      delay(15);                       // waits 15ms for the servo to reach the position 
    } 
  } 
} 

 

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

потому что сравнение == а не =

вы в 21 строке присвоили а 1 и b 1 поом сделали операцию и между а и б.

1 и 1 = 1

следовательно иф проходит всегда

 

Женёчек
Offline
Зарегистрирован: 25.04.2014

спасибо огромное!! полчаса искала ошибку, не могла найти :)

vdk
Offline
Зарегистрирован: 14.04.2013

А потому что надо правильно писать операторы сравнения

http://arduino.ru/Reference/If

А чтобы вылавливать ошибки присвоения в if рекомендуют в условии писать не (a==1), а (1==a)

Женёчек
Offline
Зарегистрирован: 25.04.2014

да да, я уже поняла) невнимательность моя. спасибо.

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

vdk пишет:

А потому что надо правильно писать операторы сравнения

http://arduino.ru/Reference/If

А чтобы вылавливать ошибки присвоения в if рекомендуют в условии писать не (a==1), а (1==a)

 

это не читать надо, а писать больше и практиковаться, чтобы руку набить

Женёчек
Offline
Зарегистрирован: 25.04.2014

верно) 

я читала про if и раньше, но рука набита на паскаль. вот и ошибку найти оказалось проблематично. да и раньше не поподалась на этом, вроде)