Hi,
I am trying to simulate my robot' s movement on a 7x7 array, all elements are 1 except robot' s starting point which is 0. When my robot moves, elements that are passed by robot will be 0.
I could move forward perfectly, but i want to turn left if the distance less than 10 cm -i used ultrasonic range sensor for this- .
My sketch is like this:
#include <Servo.h>
#define x 7
#define y 7
#include <NewPing.h>
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
Servo myServo;
Servo myServo2;
int pos = 0;
int pos2;
int counter;
int counter1 = 0;
int counter2;
int integer;
int integer2;
int integer3;
int counter4;
void setup() {
Serial.begin(9600);
myServo.attach(9);
myServo2.attach(10);
}
void loop() {
int my2dArray[x][y] = {
{2, 2, 2, 2, 2, 2, 2},
{2, 1, 1, 1, 1, 1, 2},
{2, 1, 1, 1, 1, 1, 2},
{2, 1, 1, 0, 1, 1, 2},
{2, 1, 1, 1, 1, 1, 2},
{2, 1, 1, 1, 1, 1, 2},
{2, 2, 2, 2, 2, 2, 2},
};
long distance = sonar.ping_cm();
int robot = my2dArray[3][3];
if (counter1 > 0 && distance > 10) {
for (integer = 0; integer < counter1; integer += 1) {
counter4 = counter4 + 1;
my2dArray[3 + integer][3] = robot * my2dArray[3 + integer][3];
}
}
else if (distance = 10) {
for (pos = 0; pos <= 180 ; pos += 1) {
myServo.write(pos);
}
}
else if (distance > 10) {
for (pos = 0; pos <= 360 ; pos += 1) {
myServo.write(pos);
myServo2.write(pos);
if (pos == 180) {
counter2 += 1;
}
for (integer3 = 0; integer3 < counter2; integer3 += 1) {
my2dArray[3 + counter4][3 + integer3] = robot * my2dArray[3 + counter4][3 + integer3];
}
}
}
for (integer2 = 0; integer2 < 7; integer2++) {
Serial.print(my2dArray[integer2][0]); Serial.print("|");
Serial.print(my2dArray[integer2][1]); Serial.print("|");
Serial.print(my2dArray[integer2][2]); Serial.print("|");
Serial.print(my2dArray[integer2][3]); Serial.print("|");
Serial.print(my2dArray[integer2][4]); Serial.print("|");
Serial.print(my2dArray[integer2][5]); Serial.print("|");
Serial.println(my2dArray[integer2][6]);
}
Serial.println();
for (pos = 0; pos <= 180 ; pos += 1) {
myServo.write(pos);
myServo2.write(pos);
if (pos == 180) {
counter1 += 1;
}
}
delay(1000);
}
When distance is less then 10 cm it gives output as just this:
2|2|2|2|2|2|2
2|1|1|1|1|1|2
2|1|1|1|1|1|2
2|1|1|0|1|1|2
2|1|1|1|1|1|2
2|1|1|1|1|1|2
2|2|2|2|2|2|2
Same as my declaration. Can' t process through the last else-if statement. Can you help me?
Thanks.