Skip to content

Instantly share code, notes, and snippets.

@raikusy
Created January 30, 2019 19:31
Show Gist options
  • Save raikusy/ddbe2affdef44a75bc91d528eaa5ad44 to your computer and use it in GitHub Desktop.
Save raikusy/ddbe2affdef44a75bc91d528eaa5ad44 to your computer and use it in GitHub Desktop.
//defining pins and variables
#define lefts A4
#define rights A5
// connect motor controller pins to Arduino digital pins
// motor one
int enA = 10;
int in1 = 9;
int in2 = 8;
// motor two
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup()
{
// set all the motor control pins to outputs
// pinMode(enA, OUTPUT);
// pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(lefts, INPUT);
pinMode(rights, INPUT);
//begin serial communication
Serial.begin(9600);
}
void goForward()
{
// this function will run the motors in both directions at a fixed speed
// set speed to 200 out of possible range 0~255
analogWrite(enA, 100);
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 100);
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
void goLeft()
{
// set speed to 200 out of possible range 0~255
analogWrite(enA, 200);
// turn on motor A
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 200);
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
void goRight()
{
// set speed to 200 out of possible range 0~255
analogWrite(enA, 200);
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 200);
// turn on motor B
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
}
void stop()
{
// this function will run the motors in both directions at a fixed speed
// set speed to 200 out of possible range 0~255
analogWrite(enB, 0);
// turn on motor B
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 0);
// turn on motor B
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
void loop()
{
//printing values of the sensors to the serial monitor
int leftSensor = analogRead(lefts);
String Str1 = "Left Sensor: ";
String StrLeft = Str1 + leftSensor;
Serial.println(StrLeft);
int rightSensor = analogRead(rights);
String Str2 = "Right Sensor: ";
String StrRight = Str2 + rightSensor;
Serial.println(StrRight);
// delay(1000);
//line detected by both
if (analogRead(lefts) <= 400 && analogRead(rights) <= 400) {
stop();
}
//line detected by left sensor
else if (analogRead(lefts) <= 400 && !analogRead(rights) <= 400) {
//turn left
goLeft();
// leftBackword();
// rightForward();
/*
motor1.run(RELEASE);
motor2.run(FORWARD);
*/
}
//line detected by right sensor
else if (!analogRead(lefts) <= 400 && analogRead(rights) <= 400) {
//turn right
goRight();
// rightBackword();
// leftForward();
/*
motor1.run(FORWARD);
motor2.run(RELEASE);
*/
}
//line detected by none
else if (!analogRead(lefts) <= 400 && !analogRead(rights) <= 400) {
//stop
goForward();
// leftForward();
// rightForward();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment