Skip to content

Instantly share code, notes, and snippets.

@EDISON-SCIENCE-CORNER
Created August 29, 2020 15:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EDISON-SCIENCE-CORNER/b800e334d8ca2ef4ef2b612642302738 to your computer and use it in GitHub Desktop.
Save EDISON-SCIENCE-CORNER/b800e334d8ca2ef4ef2b612642302738 to your computer and use it in GitHub Desktop.
int S_A = 11; //speed motor a
int M_A1 = 2; //motor a = +
int M_A2 = 3; //motor a = -
int M_B1 = 4; //motor b = -
int M_B2 = 5; //motor b = +
int S_B = 10; //speed motor b
int X=A0;
int X_S = 7;
int Y_S = 8;
int Z_S = 6;
int Y=0;
int led =13;
char val;
void setup()
{
Serial.begin(9600);
pinMode(M_B1, OUTPUT);
pinMode(M_B2, OUTPUT);
pinMode(M_A1, OUTPUT);
pinMode(M_A2, OUTPUT);
pinMode(S_B, OUTPUT);
pinMode(S_A, OUTPUT);
pinMode(X_S, INPUT);
pinMode(Y_S, INPUT);
pinMode(Z_S, INPUT);
pinMode(X, INPUT);
pinMode(led,OUTPUT);
pinMode(12,INPUT);
}
void loop()
{
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
while (Serial.available() > 0 && ( digitalRead(12) == HIGH))
{
val = Serial.read();
Serial.println(val);
}
if( val == 'F') // Forward
{
digitalWrite(M_A1, HIGH);
digitalWrite(M_A2, LOW);
digitalWrite(M_B1, HIGH);
digitalWrite(M_B2, LOW);
digitalWrite(9,HIGH);
}
else if(val == 'B') // Backward
{
digitalWrite(M_A1, LOW);
digitalWrite(M_A2, HIGH);
digitalWrite(M_B1, LOW);
digitalWrite(M_B2, HIGH);
digitalWrite(9,HIGH);
}
else if(val == 'L') //Left
{
digitalWrite(M_A1, LOW);
digitalWrite(M_A2, HIGH);
digitalWrite(M_B1, HIGH);
digitalWrite(M_B2, LOW);
digitalWrite(9,HIGH);
}
else if(val == 'R') //Right
{
digitalWrite(M_A1, HIGH);
digitalWrite(M_A2, LOW);
digitalWrite(M_B1, LOW);
digitalWrite(M_B2, HIGH);
digitalWrite(9,HIGH);
}
else if(val == 'S') //Stop
{
digitalWrite(M_A1, LOW);
digitalWrite(M_A2, LOW);
digitalWrite(M_B1, LOW);
digitalWrite(M_B2, LOW);
digitalWrite(9,LOW);
}
while ( digitalRead(12) == LOW)
{ digitalWrite(9,HIGH);
if ((digitalRead(X_S)==0)&&(digitalRead(Y_S)==1)&&(digitalRead(Z_S)==0)){forward(); }
if ((digitalRead(X_S)==1)&&(digitalRead(Y_S)==1)&&(digitalRead(Z_S)==1)){forward(); }
if ((digitalRead(X_S)==0)&&(digitalRead(Y_S)==1)&&(digitalRead(Z_S)==1)){softRight(); }
if ((digitalRead(X_S)==0)&&(digitalRead(Y_S)==0)&&(digitalRead(Z_S)==1)){turnRight(); }
if ((digitalRead(X_S)==1)&&(digitalRead(Y_S)==1)&&(digitalRead(Z_S)==0)){softLeft(); }
if ((digitalRead(X_S)==1)&&(digitalRead(Y_S)==0)&&(digitalRead(Z_S)==0)){turnLeft(); }
if ((digitalRead(X_S)==1)&&(digitalRead(Y_S)==0)&&(digitalRead(Z_S)==1)){turnLeft(); }
if ((digitalRead(X_S)==0)&&(digitalRead(Y_S)==0)&&(digitalRead(Z_S)==0)){turnLeft(); }
}
}
void forward() {
digitalWrite(M_A1, HIGH);
digitalWrite(M_A2, LOW);
digitalWrite(M_B1, HIGH);
digitalWrite(M_B2, LOW);
}
void softLeft() {
digitalWrite(M_A1, LOW);
digitalWrite(M_A2, LOW);
digitalWrite(M_B1, HIGH);
digitalWrite(M_B2, LOW);
}
void turnLeft() {
digitalWrite(M_A1, LOW);
digitalWrite(M_A2, HIGH);
digitalWrite(M_B1, HIGH);
digitalWrite(M_B2, LOW);
}
void softRight() {
digitalWrite(M_A1, HIGH);
digitalWrite(M_A2, LOW);
digitalWrite(M_B1, LOW);
digitalWrite(M_B2, LOW);
}
void turnRight() {
digitalWrite(M_A1, HIGH);
digitalWrite(M_A2, LOW);
digitalWrite(M_B1, LOW);
digitalWrite(M_B2, HIGH);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment