Skip to content

Instantly share code, notes, and snippets.

@lazychino
Last active August 29, 2015 14:01
Show Gist options
  • Save lazychino/86ab81c6840250e1e0b8 to your computer and use it in GitHub Desktop.
Save lazychino/86ab81c6840250e1e0b8 to your computer and use it in GitHub Desktop.
/*
* Turn Left by Pedro A. Melendez
*
* every time the robot encounters a wall turn left if is to close reverses
*
*
* */
const int proximitySensor = A0; // Analog input pin that the potentiometer is attached to
const int ledPin = 13; // integrated LED on the Arduino Leonardo
const int rightForward = 11;
const int rightReverse = 10;
const int rightSpeedPin = 9; //pwm
const int leftForward = 5;
const int leftReverse = 4;
const int leftSpeedPin = 3; //pwm
const int leftSpeedForward = 200;
const int rightSpeedForward = 200;
const int leftSpeedBackward = 128;
const int rightSpeedBackward = 128;
void stopBot()
{
digitalWrite(rightForward, LOW);
digitalWrite(rightReverse, LOW);
digitalWrite(leftForward, LOW);
digitalWrite(leftReverse, LOW);
analogWrite(rightSpeedPin, 0);
analogWrite(leftSpeedPin, 0);
}
void goStraight(){
digitalWrite(rightForward, HIGH);
digitalWrite(rightReverse, LOW);
digitalWrite(leftForward, HIGH);
digitalWrite(leftReverse, LOW);
analogWrite(rightSpeedPin, rightSpeedForward);
analogWrite(leftSpeedPin, leftSpeedForward);
}
void turnLeft(){
digitalWrite(rightForward, LOW);
digitalWrite(rightReverse, LOW);
digitalWrite(leftForward, LOW);
digitalWrite(leftReverse, HIGH);
analogWrite(rightSpeedPin, 0);
analogWrite(leftSpeedPin, leftSpeedForward);
delay(1000);
stopBot();
}
void goBack()
{
digitalWrite(rightForward, LOW);
digitalWrite(rightReverse, HIGH);
digitalWrite(leftForward, LOW);
digitalWrite(leftReverse, HIGH);
analogWrite(rightSpeedPin, rightSpeedBackward);
analogWrite(leftSpeedPin, leftSpeedForward);
}
void setup() {
Serial.begin(9600);
pinMode(rightForward, OUTPUT);
pinMode(rightReverse, OUTPUT);
pinMode(leftForward, OUTPUT);
pinMode(leftReverse, OUTPUT);
stopBot(); // initializes pins
}
void loop() {
// read distance
int sensorValue = analogRead(proximitySensor);
if(sensorValue < 400) {
goStraight();
delay(1);
}
else {
stopBot();
goBack();
while(analogRead(proximitySensor) > 200) { delay(1); }
turnLeft();
stopBot();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment