Друзья, пытаюсь тут создать турельку, да вот столкнулся с проблемой: всё не могу придумать как сделать, так что бы при последовательном нажатии на три цифровые клавише ну пульте ДУ, турель поворачивался на заданный угол. Буду рад любой помощи. Вот, собственно сам код:
#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);
}
}
}