Beginners: please read this post and this post before posting to the forum.
0 Members and 1 Guest are viewing this topic.
// * Ikeabot - Robot avoiding objects V1.2 11JUN10 * //#include <Servo.h>const int sharpPin=5; // set n° of the pinconst int ledPin=2;Servo leftservo;Servo rightservo;Servo scanservo;int distance=0;int threshold=0;int leftspeed=0;int rightspeed=0;int ScanPos=0;int a=0;int b=0;int c=0;int d=0;int e=0;void setup() { pinMode(sharpPin, INPUT); //set the pin of sharpIR and servo pinMode(ledPin, OUTPUT); scanservo.attach(7); ScanPos=90; scanservo.write(ScanPos); delay(2000); // calibrate setThreshold() ; leftservo.attach(5); rightservo.attach(6); ScanPos=0;}void setThreshold() { //set the threshold value a=analogRead(sharpPin); delay(40); b=analogRead(sharpPin); delay(40); c=analogRead(sharpPin); delay(40); d=analogRead(sharpPin); delay(40); e=analogRead(sharpPin); threshold=(a+b+c+d+e)/5;}void loop(){ for (ScanPos=0 ; ScanPos<180 ; ScanPos+=10) { scanservo.write(ScanPos); delay (40); distance=analogRead(sharpPin); if (distance > threshold) { // If no object in the way digitalWrite(ledPin, HIGH); leftspeed=180; rightspeed=180; leftservo.write(leftspeed); // go forward rightservo.write(rightspeed); } else { digitalWrite(ledPin, LOW); switch (ScanPos) { case '0': leftspeed=100; rightspeed=90; leftservo.write(leftspeed); rightservo.write(rightspeed); break; case '10' : leftspeed = 110; rightspeed= 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case'20' : leftspeed = 120; rightspeed = 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '30' : leftspeed = 130; rightspeed = 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '40' : leftspeed = 140; rightspeed = 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '50' : leftspeed = 150; rightspeed = 80; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '60' : leftspeed = 160; rightspeed = 70; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '70' : leftspeed = 170; rightspeed = 60; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '80' : leftspeed = 170; rightspeed = 40; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '90' : leftspeed = 180; rightspeed = 0; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '100' : leftspeed = 40; rightspeed = 170; leftservo.write(leftspeed); rightservo.write(rightspeed); delay(1000); break; case '110' : leftspeed = 60; rightspeed = 170; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '120' : leftspeed = 70; rightspeed = 160; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '130' ; leftspeed = 80; rightspeed = 150; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '140' : leftspeed = 90; rightspeed = 140; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '150' : leftspeed = 90; rightspeed = 130; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '160' : leftspeed = 90; rightspeed = 120; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '170' : leftspeed = 90; rightspeed = 110; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '180' : leftspeed = 90; rightspeed = 100; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; } } } if (ScanPos = 180) { ScanPos = 0; scanservo.write(ScanPos); delay(90); }}
case '130' ;
else { digitalWrite(ledPin, LOW); switch (ScanPos/10) { // divide ScanPos value by 10 case '0': leftspeed=100; rightspeed=90; leftservo.write(leftspeed); rightservo.write(rightspeed); break; case '1' : leftspeed = 110; rightspeed= 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case'2' : leftspeed = 120; rightspeed = 90; leftservo.write(leftspeed); ...
case '10':
case 10:
warning: multi-character character constant
// * Ikeabot - Robot avoiding objects V1.2 11JUN10 * //#include <Servo.h>const int sharpPin=5; // set n° of the pinconst int ledPin=2;Servo leftservo;Servo rightservo;Servo scanservo;int distance=0;int threshold=0;int leftspeed=0;int rightspeed=0;int ScanPos=0;int a=0;int b=0;int c=0;int d=0;int e=0;void setup() { pinMode(sharpPin, INPUT); //set the pin of sharpIR and servo pinMode(ledPin, OUTPUT); scanservo.attach(7); ScanPos=90; scanservo.write(ScanPos); delay(2000); // calibrate setThreshold() ; leftservo.attach(5); rightservo.attach(6); ScanPos=0;}void setThreshold() { //set the threshold value a=analogRead(sharpPin); delay(40); b=analogRead(sharpPin); delay(40); c=analogRead(sharpPin); delay(40); d=analogRead(sharpPin); delay(40); e=analogRead(sharpPin); threshold=(a+b+c+d+e)/5;}void loop(){ for (ScanPos=0 ; ScanPos<180 ; ScanPos+=10) { scanservo.write(ScanPos); delay (40); distance=analogRead(sharpPin); if (distance > threshold) { // If no object in the way digitalWrite(ledPin, HIGH); leftspeed=180; rightspeed=180; leftservo.write(leftspeed); // go forward rightservo.write(rightspeed); } else { digitalWrite(ledPin, LOW); int pos = ScanPos/10; switch (pos) { case '0': leftspeed=100; rightspeed=90; leftservo.write(leftspeed); rightservo.write(rightspeed); break; case '1' : leftspeed = 110; rightspeed= 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case'2' : leftspeed = 120; rightspeed = 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '3' : leftspeed = 130; rightspeed = 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '4' : leftspeed = 140; rightspeed = 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '5' : leftspeed = 150; rightspeed = 80; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '6' : leftspeed = 160; rightspeed = 70; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '7' : leftspeed = 170; rightspeed = 60; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '8' : leftspeed = 170; rightspeed = 40; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '9' : leftspeed = 180; rightspeed = 0; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '10' : leftspeed = 40; rightspeed = 170; leftservo.write(leftspeed); rightservo.write(rightspeed); delay(1000); break; case '11' : leftspeed = 60; rightspeed = 170; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '12' : leftspeed = 70; rightspeed = 160; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '13' : leftspeed = 80; rightspeed = 150; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '14' : leftspeed = 90; rightspeed = 140; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '15' : leftspeed = 90; rightspeed = 130; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '16' : leftspeed = 90; rightspeed = 120; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '17' : leftspeed = 90; rightspeed = 110; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case '18' : leftspeed = 90; rightspeed = 100; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; } } } if (ScanPos = 180) { ScanPos = 0; scanservo.write(ScanPos); delay(90); }}
// * Ikeabot - Robot avoiding objects V1.5 12JUN10 * //#include <Servo.h>const int sharpPin=5; // set n° of the pinconst int ledPin=2;Servo leftservo;Servo rightservo;Servo scanservo;int distance=0;int threshold=0;int leftspeed=0;int rightspeed=0;int ScanPos=0;int a=0;int b=0;int c=0;int d=0;int e=0;int boom=0;void setup() { pinMode(sharpPin, INPUT); //set the pin of sharpIR and servo pinMode(ledPin, OUTPUT); scanservo.attach(7); ScanPos=90; scanservo.write(ScanPos); delay(2000); // wait while setting threshold setThreshold() ; leftservo.attach(5); rightservo.attach(6); ScanPos=30; Serial.begin(9600);}void setThreshold() { //set the threshold value a=analogRead(sharpPin); delay(40); b=analogRead(sharpPin); delay(40); c=analogRead(sharpPin); delay(40); d=analogRead(sharpPin); delay(40); e=analogRead(sharpPin); threshold=(a+b+c+d+e)/5;}void loop(){ for (ScanPos=30 ; ScanPos<150 ; ScanPos+=10) { scanservo.write(ScanPos); delay (40); distance=analogRead(sharpPin); if (distance < threshold) { // If no object in the way digitalWrite(ledPin, LOW); leftspeed=0; rightspeed=180; boom=0; Serial.println(boom); leftservo.write(leftspeed); // go forward rightservo.write(rightspeed); delay(500); } else { digitalWrite(ledPin, HIGH); boom=666; Serial.println(boom); switch (ScanPos) { // avoid object smartly using pos of the SharpIR case 30 : leftspeed = 60; rightspeed = 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 40 : leftspeed = 50; rightspeed = 90; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 50 : leftspeed = 40; rightspeed = 80; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 60 : leftspeed = 30; rightspeed = 70; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 70 : leftspeed = 20; rightspeed = 60; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 80 : leftspeed = 20; rightspeed = 40; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 90 : leftspeed = 0; rightspeed = 0; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1250); break; case 100 : leftspeed = 150; rightspeed = 170; leftservo.write(leftspeed); rightservo.write(rightspeed); delay(1000); break; case 110 : leftspeed = 130; rightspeed = 170; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 120 : leftspeed = 120; rightspeed = 160; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 130 : leftspeed = 110; rightspeed = 150; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 140 : leftspeed = 90; rightspeed = 140; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; case 150 : leftspeed = 90; rightspeed = 130; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (1000); break; default : leftspeed = 0; rightspeed = 180; leftservo.write(leftspeed); rightservo.write(rightspeed); delay (500); break; } } } if (ScanPos = 150) { ScanPos = 30; scanservo.write(ScanPos); delay(90); }}