Здравствуйте! Возникла проблема с программированием ноги гексапода . Код (C++): #include <Servo.h> int Jx = A0; int Jy = A1; Servo h; Servo vo; Servo vt; void setup() { h.attach(2); vo.attach(3); vt.attach(4); pinMode(Jx,INPUT); pinMode(Jy,INPUT); Serial.begin(9600); } void loop() { int xx = analogRead(Jx); int yy = analogRead(Jy); xx = map(xx,0,1023,0,180); yy = map(yy,0,1023,0,180); Serial.println(yy); if(yy > 140) { for(int y = 10;y < 180; y++) { h.write(y); vo.write(y); vt.write(y); Serial.println(yy); if(yy > 40 && yy < 140) { break; h.write(y); vo.write(y); vt.write(y); } delay(6); } } if(yy < 40) { for (int y = 180;y > 10; y--) { h.write (y); vo.write (y); vt.write (y); Serial.println (yy); if(yy > 40 && yy < 140) { break; h.write (y); vo.write (y); vt.write (y); } delay(6); } } } Хочу, чтобы все сервоприводы останавливались в тот момент, когда джойстик выдает значения в диапазоне от 40 до 140, и с этого же положения продолжили свое движение, когда джойстик выдает какое либо иное значение, но я сделал что-то не правильно , а что именно - не понимаю. Прошу помочь мне понять мою ошибку. ЗЫ Значения считываются с джойстика пока только по оси У
Мне кажется вы запутались с фигурными скобками. У вас проверка на диапазон от 40 до 140 находится внутри проверки 140/40, т.е. это условие никода не выполняется. И еще, у вас есть break, после него разве будет выполняться код? Иными словами, yy изменяется только в начале лупа, если мы попали в один из двух ифов, то значит ваше подозрительное условие точно НЕ выполняется.