Ultrasonic sensor
This commit is contained in:
parent
f27e575974
commit
d5a903242b
90
car.ino
90
car.ino
@ -1,20 +1,40 @@
|
|||||||
/* Define you pins here */
|
/* Define your pins here */
|
||||||
|
/* Wheels */
|
||||||
const int left_wheel_1 = 0;
|
const int left_wheel_1 = 0;
|
||||||
const int left_wheel_2 = 1;
|
const int left_wheel_2 = 1;
|
||||||
const int right_wheel_1 = 2;
|
const int right_wheel_1 = 2;
|
||||||
const int right_wheel_2 = 3;
|
const int right_wheel_2 = 3;
|
||||||
|
|
||||||
|
/* Ultrasonic sensor */
|
||||||
|
const int sensor_echo = 9;
|
||||||
|
const int sensor_trigger = 10;
|
||||||
|
|
||||||
|
/* Debug serial output */
|
||||||
|
bool debug = true;
|
||||||
|
|
||||||
|
/* Array bellow contains all the wheels */
|
||||||
|
int wheels[] = {left_wheel_1, left_wheel_2, right_wheel_1, right_wheel_2};
|
||||||
|
|
||||||
/* The counter */
|
/* The counter */
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Array bellow contains all the wheels */
|
/* Ultrasonic sensor variables */
|
||||||
int Wheels[] = {left_wheel_1, left_wheel_2, right_wheel_1, right_wheel_2};
|
long duration;
|
||||||
|
int distance;
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
/* Setup pins */
|
/* Setup pins */
|
||||||
for (i = 0; i < sizeof(Wheels) - 1; i++) {
|
/* wheels */
|
||||||
pinMode(Wheels[i], OUTPUT);
|
for (i = 0; i < sizeof(wheels) - 1; i++) {
|
||||||
|
pinMode(wheels[i], OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Ultrasonic sensor */
|
||||||
|
pinMode(sensor_echo, INPUT);
|
||||||
|
pinMode(sensor_trigger, OUTPUT);
|
||||||
|
|
||||||
|
/* Starts serial communication */
|
||||||
|
Serial.begin(9600);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wheel actions */
|
/* Wheel actions */
|
||||||
@ -53,8 +73,8 @@ void move_backward() {
|
|||||||
|
|
||||||
/* Stops */
|
/* Stops */
|
||||||
void stop_all() {
|
void stop_all() {
|
||||||
for (i = 0; sizeof(Wheels) - 1; i++) {
|
for (i = 0; sizeof(wheels) - 1; i++) {
|
||||||
digitalWrite(Wheels[i], LOW);
|
digitalWrite(wheels[i], LOW);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,18 +101,50 @@ void turn_right(int delayMS) {
|
|||||||
delay(delayMS);
|
delay(delayMS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Helpers */
|
||||||
|
void debug_log(char tag, char message) {
|
||||||
|
Serial.print("[");
|
||||||
|
Serial.print(tag);
|
||||||
|
Serial.print("] ");
|
||||||
|
Serial.println(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ultrasonic sensor actions */
|
||||||
|
|
||||||
|
/* get_distance -- returns distance to an object in centimeters */
|
||||||
|
int get_distance() {
|
||||||
|
/* Clears the trigger */
|
||||||
|
if (debug) { debug_log("US", "Clear the trigger"); }
|
||||||
|
digitalWrite(sensor_trigger, LOW);
|
||||||
|
delayMicroseconds(2);
|
||||||
|
|
||||||
|
/* Set the trigger on HIGH state for 10 microseconds */
|
||||||
|
if (debug) { debug_log("US", "Set trigger HIGH"); }
|
||||||
|
digitalWrite(sensor_trigger, HIGH);
|
||||||
|
delayMicroseconds(10);
|
||||||
|
digitalWrite(sensor_trigger, LOW);
|
||||||
|
|
||||||
|
/* Reads the echo, returns the sound wave travel in microseconds */
|
||||||
|
if (debug) { debug_log("US", "Get echo duration"); }
|
||||||
|
duration = pulseIn(sensor_echo, HIGH);
|
||||||
|
|
||||||
|
/* Calculating the distance */
|
||||||
|
distance = duration / 58;
|
||||||
|
if (debug) {
|
||||||
|
debug_log("US", "Got distance!");
|
||||||
|
}
|
||||||
|
return distance;
|
||||||
|
}
|
||||||
|
|
||||||
/* Main code */
|
/* Main code */
|
||||||
void loop() {
|
void loop() {
|
||||||
move_forward();
|
if (get_distance() > 25) {
|
||||||
delay(1000);
|
move_forward();
|
||||||
turn_left(500);
|
delay(1000);
|
||||||
move_backward();
|
} else {
|
||||||
delay(1000);
|
turn_left(500);
|
||||||
turn_right(500);
|
move_backward();
|
||||||
move_forward();
|
delay(1000);
|
||||||
turn_left(500);
|
turn_right(500);
|
||||||
turn_left(500);
|
}
|
||||||
turn_left(500);
|
|
||||||
move_forward();
|
|
||||||
delay(1000);
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user