Friends, I’m trying to create a turret here, but I ran into a problem: I can’t figure out how to do everything, so that when I sequentially press three numeric keys on the remote control, the turret turns to a given angle. I will be glad for any help. Here is the code itself:
#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);
}
}
}