Hi there! I'm working on a four-wheeled robot and need it to drive straight, then rotate, and then drive straight again for a certain time and stop. I have most of that taken care of but have no idea how to "stop" it through my code. I'm new to the Arduino game so I could use any help or guidance! Thanks in advance and here's what I have so far:
const int inAPin = 6;
const int inBPin = 8;
const int PWMPin = 7;
const int inCPin = 2;
const int inDPin = 4;
const int PWMPin2 = 3;
const int inEPin = A0;
const int inFPin = A1;
const int PWMPin3 = 5;
const int inGPin = A3;
const int inHPin = A2;
const int PWMPin4 = 9;
void setup() {
pinMode(inAPin, OUTPUT);
pinMode(inBPin, OUTPUT);
pinMode(inCPin, OUTPUT);
pinMode(inDPin, OUTPUT);
pinMode(inEPin, OUTPUT);
pinMode(inFPin, OUTPUT);
pinMode(inGPin, OUTPUT);
pinMode(inHPin, OUTPUT);
pinMode(PWMPin, OUTPUT);
pinMode(PWMPin2, OUTPUT);
pinMode(PWMPin3, OUTPUT);
pinMode(PWMPin4, OUTPUT);
}
void loop() {
int i;
delay(200);
digitalWrite(inAPin, HIGH); //
digitalWrite(inBPin, LOW);
digitalWrite(inCPin, LOW); //
digitalWrite(inDPin, HIGH);
digitalWrite(inEPin, LOW); //
digitalWrite(inFPin, HIGH);
digitalWrite(inGPin, LOW); //
digitalWrite(inHPin, HIGH);
for (i = 0; i < 175; i++){
analogWrite(PWMPin, i);
analogWrite(PWMPin2, i);
analogWrite(PWMPin3, i);
analogWrite(PWMPin4, i);
}
delay(1500); // Stop and rotate
digitalWrite(inEPin, HIGH); // Wheel 3
digitalWrite(inFPin, LOW);
digitalWrite(inCPin, HIGH); // Wheel 1
digitalWrite(inDPin, LOW);
digitalWrite(inAPin, HIGH); // Wheel 2
digitalWrite(inBPin, LOW);
digitalWrite(inGPin, LOW); // Wheel 4
digitalWrite(inHPin, HIGH);
for (i = 0; i < 175; i++){
analogWrite(PWMPin, i);
analogWrite(PWMPin2, i);
analogWrite(PWMPin3, i);
analogWrite(PWMPin4, i);
}
delay(700); //~700 millisec for a 90 degree turn
digitalWrite(inAPin, HIGH); //
digitalWrite(inBPin, LOW);
digitalWrite(inCPin, LOW); //
digitalWrite(inDPin, HIGH);
digitalWrite(inEPin, LOW); //
digitalWrite(inFPin, HIGH);
digitalWrite(inGPin, LOW); //
digitalWrite(inHPin, HIGH);
}