I am trying to make a chess robot where i will give input to the arduino as a format "a2b3". I have done the code but it's not working. In the comparison step which is done using if statment doesn't work. Here is my code. please help me fix this.
#include <AFMotor.h>
#include <Servo.h>
int Electromagnet = 2;
AF_Stepper motor1(32, 1);
AF_Stepper motor2(32, 2);
char myStrings;
int u;
int q; int r; int s; int t;
int m; int n; int o; int p;
char a, b, c, d;
void setup() {
pinMode(Electromagnet, OUTPUT);
motor1.setSpeed(500); // 10 rpm
motor2.setSpeed(500); // 10 rpm
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0 ) {
// read the incoming byte:
myStrings = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(myStrings);
u=u+1;
if (u=1) {a=myStrings;
Serial.println(a);}
if (u=2) {b=myStrings;
Serial.println(b);}
if (u=3) {c=myStrings;
Serial.println(c);}
if (u=4) {d=myStrings;
Serial.println(d);}
u=0;
}
if (a=='a')
m=1;
if (a=='b')
m=2;
if (a=='c')
m=3;
if (a=='d')
m=4;
if (a=='e')
m=5;
if (a=='f')
m=6;
if (a=='g')
m=7;
if (a=='h')
m=8;
if (c=='a')
n=1;
if (c=='b')
n=2;
if (c=='c')
n=3;
if (c=='d')
n=4;
if (c=='e')
n=5;
if (c=='f')
n=6;
if (c=='g')
n=7;
if (c=='h')
n=8;
if (b=='1')
o=1;
if (b=='2')
o=2;
if (b=='3')
o=3;
if (b=='4')
o=4;
if (b=='5')
o=5;
if (b=='6')
o=6;
if (b=='7')
o=7;
if (b=='8')
o=8;
if (d=='1')
p=1;
if (d=='2')
p=2;
if (d=='3')
p=3;
if (d=='4')
p=4;
if (d=='5')
p=5;
if (d=='6')
p=6;
if (d=='7')
p=7;
if (d=='8')
p=8;
q=n-m; r=p-o;
s= abs(q); t=abs(r);
if ( q>0 && r>0 ) //1
{
motor1.step(100m-1, FORWARD, DOUBLE);
delay (500);
motor2.step(100o-1, FORWARD, DOUBLE);
delay (500);
digitalWrite(Electromagnet, HIGH);
delay (500);
motor1.step(100.5, FORWARD, DOUBLE);
delay (500);
motor2.step(100.5, FORWARD, DOUBLE);
delay (500);
motor2.step(100t-1, FORWARD, DOUBLE);
delay (500);
motor1.step(100s-1, FORWARD, DOUBLE);
delay (500);
motor1.step(100.5, FORWARD, DOUBLE);
delay (500);
motor2.step(100.5, FORWARD, DOUBLE);
delay (500);
digitalWrite(Electromagnet, LOW);
delay (500);
motor2.step(100p-1, BACKWARD, DOUBLE);
delay (500);
motor1.step(100n-1, BACKWARD, DOUBLE);
delay (500);
}
if ( q>0 && r<0 ) //2
{
motor1.step(m-1, FORWARD, DOUBLE);
delay (500);
motor2.step(o-1, FORWARD, DOUBLE);
delay (500);
digitalWrite(Electromagnet, HIGH);
delay (500);
motor1.step(0.5, FORWARD, DOUBLE);
delay (500);
motor2.step(0.5, BACKWARD, DOUBLE);
delay (500);
motor2.step(t-1, BACKWARD, DOUBLE);
delay (500);
motor2.step(q-1, FORWARD, DOUBLE);
delay (500);
motor1.step(0.5, FORWARD, DOUBLE);
delay (500);
motor2.step(0.5, BACKWARD, DOUBLE);
delay (500);
digitalWrite(Electromagnet, LOW);
delay (500);
motor2.step(p-1, BACKWARD, DOUBLE);
delay (500);
motor1.step(n-1, BACKWARD, DOUBLE);
delay (500);
}
if ( q<0 && r>0 ) //3
{
motor1.step(m-1, FORWARD, DOUBLE);
delay (500);
motor2.step(o-1, FORWARD, DOUBLE);
delay (500);
digitalWrite(Electromagnet, HIGH);
delay (500);
motor2.step(0.5, FORWARD, DOUBLE);
delay (500);
motor1.step(0.5, BACKWARD, DOUBLE);
delay (500);
motor1.step(s-1, BACKWARD, DOUBLE);
delay (500);
motor2.step(t-1, FORWARD, DOUBLE);
delay (500);
motor2.step(0.5, FORWARD, DOUBLE);
delay (500);
motor1.step(0.5, BACKWARD, DOUBLE);
delay (500);
digitalWrite(Electromagnet, LOW);
delay (500);
motor2.step(p-1, BACKWARD, DOUBLE);
delay (500);
motor1.step(n-1, BACKWARD, DOUBLE);
delay (500);
}
if ( q<0 && r<0 ) //4
{
motor1.step(m-1, FORWARD, DOUBLE); delay (500);
motor2.step(o-1, FORWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, HIGH); delay (500);
motor2.step(0.5, BACKWARD, DOUBLE); delay (500);
motor1.step(0.5, BACKWARD, DOUBLE); delay (500);
motor1.step(s-1, BACKWARD, DOUBLE); delay (500);
motor2.step(t-1, BACKWARD, DOUBLE); delay (500);
motor2.step(0.5, BACKWARD, DOUBLE); delay (500);
motor1.step(0.5, BACKWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, LOW); delay (500);
motor2.step(p-1, BACKWARD, DOUBLE); delay (500);
motor1.step(n-1, BACKWARD, DOUBLE); delay (500);
}
if ( q==0 && r>0 ) //5
{
motor1.step(m-1, FORWARD, DOUBLE); delay (500);
motor2.step(o-1, FORWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, HIGH); delay (500);
motor1.step(0.5, FORWARD, DOUBLE); delay (500);
motor2.step(0.5, FORWARD, DOUBLE); delay (500);
motor2.step(t-1, FORWARD, DOUBLE); delay (500);
motor2.step(0.5, FORWARD, DOUBLE); delay (500);
motor1.step(0.5, BACKWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, LOW); delay (500);
motor2.step(p-1, BACKWARD, DOUBLE); delay (500);
motor1.step(n-1, BACKWARD, DOUBLE); delay (500);
}
if ( q==0 && r<0 ) //6
{
motor1.step(m-1, FORWARD, DOUBLE); delay (500);
motor2.step(o-1, FORWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, HIGH); delay (500);
motor1.step(0.5, FORWARD, DOUBLE); delay (500);
motor2.step(0.5, BACKWARD, DOUBLE); delay (500);
motor2.step(t-1, BACKWARD, DOUBLE); delay (500);
motor2.step(0.5, BACKWARD, DOUBLE); delay (500);
motor1.step(0.5, BACKWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, LOW); delay (500);
motor2.step(p-1, BACKWARD, DOUBLE); delay (500);
motor1.step(n-1, BACKWARD, DOUBLE); delay (500);
}
if ( q>0 && r==0 ) //7
{
motor1.step(m-1, FORWARD, DOUBLE); delay (500);
motor2.step(o-1, FORWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, HIGH); delay (500);
motor1.step(0.5, FORWARD, DOUBLE); delay (500);
motor2.step(0.5, FORWARD, DOUBLE); delay (500);
motor2.step(s-1, FORWARD, DOUBLE); delay (500);
motor1.step(0.5, FORWARD, DOUBLE); delay (500);
motor2.step(0.5, BACKWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, LOW); delay (500);
motor2.step(p-1, BACKWARD, DOUBLE); delay (500);
motor1.step(n-1, BACKWARD, DOUBLE); delay (500);
}
if ( q<0 && r==0 ) //8
{
motor1.step(m-1, FORWARD, DOUBLE); delay (500);
motor2.step(o-1, FORWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, HIGH); delay (500);
motor2.step(0.5, FORWARD, DOUBLE); delay (500);
motor1.step(0.5, BACKWARD, DOUBLE); delay (500);
motor1.step(s-1, BACKWARD, DOUBLE); delay (500);
motor2.step(0.5, BACKWARD, DOUBLE); delay (500);
motor1.step(0.5, BACKWARD, DOUBLE); delay (500);
digitalWrite(Electromagnet, LOW); delay (500);
motor2.step(p-1, BACKWARD, DOUBLE); delay (500);
motor1.step(n-1, BACKWARD, DOUBLE); delay (500);
}
}