Поворот сервы на заданный угол

Друзья, пытаюсь тут создать турельку, да вот столкнулся с проблемой: всё не могу придумать как сделать, так что бы при последовательном нажатии на три цифровые клавише ну пульте ДУ, турель поворачивался на заданный угол. Буду рад любой помощи. Вот, собственно сам код:

#include <Servo.h>
#include <IRremote.h>

int RECV_PIN = 4;
IRrecv irrecv(RECV_PIN);
decode_results results;
Servo servZ;
Servo servX;

int Zpos = 60;
int Xpos = 60;
int x = 0;

void setup() {
   servZ.attach(8); 
   servX.attach(10); 
   irrecv.enableIRIn();
   servZ.write(Zpos);
   servX.write(Xpos);
}

void loop() { 

  if (irrecv.decode(&results)) {
    if (results.value == 16718055) {
      up();
    } else if (results.value == 16730805) {
      down();   
    } else if (results.value == 16716015) {
      left();   
    } else if (results.value == 16734885) {
      right();   
    } else if (results.value == 16738455) {
      axisX();   
    }

    irrecv.resume();
  }
  delay(100);
}

void up() {
  Zpos=Zpos+10;
  servZ.write(Zpos);
  delay(100);
}
 
void down() {
  Zpos=Zpos-10;
  servZ.write(Zpos);
  delay(100);
}
 
void left() {
  Xpos=Xpos-10;
  servX.write(Xpos);
  delay(100);
}

void right() {
  Xpos=Xpos+10;
  servX.write(Xpos);
  delay(100);
}
 
void axisX() {
  x = 0;
  if (irrecv.decode(&results)){
    while (results.value != 16726215){
      for (int i = 3; i > 1; i--){
        if (results.value == 16750695){
            int x = x + pow(0, i);
          }
          else if (results.value == 16753245){
            int x = x + pow(1, i);
          }
          else if (results.value == 16736925){
            int x = x + pow(2, i);
          }
            else if (results.value == 16769565){
            int x = x + pow(3, i);
          }
            else if (results.value == 16720605){
            int x = x + pow(4, i);
          }
            else if (results.value == 16712445){
            int x = x + pow(5, i);
          }
            else if (results.value == 16748655){
            int x = x + pow(6, i);
          }
            else if (results.value == 16769055){
            int x = x + pow(7, i);
          }
            else if (results.value == 16754775){
            int x = x + pow(8, i);
          }
            else if (results.value == 16748655){
            int x = x + pow(9, i);
          }
        }
    }
    if(results.value == 16726215){
      servX.write(x);
    }
  }
}


Welcome to the forun
There are 7 posts in this category per year. It is better to translate your question into English and ask in the main forum.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.