hi all!!
After many many many many hours of attempting to automate my RC car with Arduino, I finally have a slight breakthrough.
I do have a problem, which is apparent from the video... (apologies for the typical phone resolution)
As you can see, the robot is obviously doing it's job but when it comes to following the lines it is making rather big turns and eventually goes totally off track because of these turns.
For this reason I cannot speed it up, and I am just not happy with the large turns and overall tackyness. Any suggestions???
Here is my code.
const int lightSensor1 = A0;
const int lightSensor2 = A1;
const int forward = 5;
const int backward = 3;
const int left = 10;
const int right = 11;
const int topFlasher = 13;
int currentLight1;
int currentLight2;
void setup(){
Serial.begin(9600);
pinMode(forward, OUTPUT);
pinMode(backward, OUTPUT);
pinMode(left, OUTPUT);
pinMode(right, OUTPUT);
pinMode(topFlasher, OUTPUT);
pinMode(lightSensor1, INPUT);
pinMode(lightSensor2, INPUT);
digitalWrite(forward, LOW);
digitalWrite(backward, LOW);
digitalWrite(left, LOW);
digitalWrite(right, LOW);
digitalWrite(topFlasher, LOW);
}
void loop(){
currentLight1 = analogRead(lightSensor1);
currentLight2 = analogRead(lightSensor2);
Serial.print(currentLight1);
Serial.print(" - ");
Serial.print(currentLight2);
Serial.println(" ");
analogWrite(forward, 140);
if(currentLight2 > currentLight1){
digitalWrite(left, HIGH);
digitalWrite(right, LOW);
topBeacon();
} else {
digitalWrite(right, HIGH);
digitalWrite(left, LOW);
topBeacon();
}
/*if(millis() == 2000){
digitalWrite(forward, HIGH);
}
if(millis() == 2100){
digitalWrite(forward, LOW);
}
if(millis() == 2500){
digitalWrite(forward, HIGH);
}
if(millis() == 2600){
digitalWrite(forward, LOW);
}
if(millis() == 3000){
digitalWrite(forward, HIGH);
}
if(millis() == 3100){
digitalWrite(forward, LOW);
}*/
/*if(millis() == 2000){
digitalWrite(forward, HIGH);
}
if(millis() == 2500){
digitalWrite(left, HIGH);
}
if(millis() == 2750){
digitalWrite(left, LOW);
digitalWrite(right, HIGH);
}
if(millis() == 3000){
digitalWrite(right, LOW);
}
if(millis() == 3400){
digitalWrite(forward, LOW);
digitalWrite(backward, HIGH);
}
if(millis() == 3900){
digitalWrite(backward, LOW);
}*/
}
void topBeacon(){
if( (millis() / 1000 % 2) == 0){
digitalWrite(topFlasher, HIGH);
} else {
digitalWrite(topFlasher, LOW);
}
}
Thanks!!