new_thea/Embedded/proximity_sensor/proximity_sensor.ino
2021-09-21 12:11:46 +01:00

147 lines
3.5 KiB
C++

/*
Speed of sound = 330ms0-1
max range = 0.5m
s*t=d
330x = 0.5 *2 bc it's a round trip
x = 0.0030 s
x = 3000 µs
*/
#define PULSE_DELAY 3000
// #define PULSE_DELAY 15000
const int trig_pin_1 = 8;
const int echo_pin_1 = 9;
const int trig_pin_2 = 10;
const int echo_pin_2 = 11;
const int trig_pin_3 = 12;
const int echo_pin_3 = 13;
//---
// |
//---
const int trig_pin_4 = 14;
const int echo_pin_4 = 15;
const int trig_pin_5 = 16;
const int echo_pin_5 = 17;
const int trig_pin_6 = 18;
const int echo_pin_6 = 19;
const int trig_pin_7 = 20;
const int echo_pin_7 = 21;
// --- <|
const int trig_pin_8 = 22;
const int echo_pin_8 = 24;
const int trig_pin_9 = 26;
const int echo_pin_9 = 28;
const int trig_pin_10 = 30;
const int echo_pin_10 = 32;
const int trig_pin_11 = 34;
const int echo_pin_11 = 36;
const int trig_pin_12 = 38;
const int echo_pin_12 = 40;
int distance_1;
int distance_2;
int distance_3;
int distance_4;
int distance_5;
int distance_6;
int distance_7;
int distance_8;
int distance_9;
int distance_10;
int distance_11;
int distance_12;
void setup() {
pinMode(trig_pin_1, OUTPUT); // Sets the trigPin as an Output
pinMode(echo_pin_1, INPUT); // Sets the echoPin as an Input
pinMode(trig_pin_2, OUTPUT);
pinMode(echo_pin_2, INPUT);
pinMode(trig_pin_3, OUTPUT);
pinMode(echo_pin_3, INPUT);
pinMode(trig_pin_4, OUTPUT);
pinMode(echo_pin_4, INPUT);
pinMode(trig_pin_5, OUTPUT);
pinMode(echo_pin_5, INPUT);
pinMode(trig_pin_6, OUTPUT);
pinMode(echo_pin_6, INPUT);
pinMode(trig_pin_7, OUTPUT);
pinMode(echo_pin_7, INPUT);
pinMode(trig_pin_8, OUTPUT);
pinMode(echo_pin_8, INPUT);
pinMode(trig_pin_9, OUTPUT);
pinMode(echo_pin_9, INPUT);
pinMode(trig_pin_10, OUTPUT);
pinMode(echo_pin_10, INPUT);
pinMode(trig_pin_11, OUTPUT);
pinMode(echo_pin_11, INPUT);
pinMode(trig_pin_12, OUTPUT);
pinMode(echo_pin_12, INPUT);
Serial.begin(9600); // Starts the serial communication
}
void pulse_pin(int trig_pin) {
digitalWrite(trig_pin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin, LOW);
}
int get_dist(int trig_pin, int echo_pin) {
pulse_pin(trig_pin);
float duration = pulseIn(echo_pin, HIGH, PULSE_DELAY);
if (duration == 0) duration = 40000;
int distance = duration * 0.034 / 2;
return distance;
}
void loop() {
distance_1 = get_dist(trig_pin_1, echo_pin_1);
distance_2 = get_dist(trig_pin_2, echo_pin_2);
distance_3 = get_dist(trig_pin_3, echo_pin_3);
distance_4 = get_dist(trig_pin_4, echo_pin_4);
distance_5 = get_dist(trig_pin_5, echo_pin_5);
distance_6 = get_dist(trig_pin_6, echo_pin_6);
distance_7 = get_dist(trig_pin_7, echo_pin_7);
distance_8 = get_dist(trig_pin_8, echo_pin_8);
distance_9 = get_dist(trig_pin_9, echo_pin_9);
distance_10 = get_dist(trig_pin_10, echo_pin_10);
distance_11 = get_dist(trig_pin_11, echo_pin_11);
distance_12 = get_dist(trig_pin_12, echo_pin_12);
Serial.print(distance_1);
Serial.print(" | ");
Serial.print(distance_2);
Serial.print(" | ");
Serial.print(distance_3);
Serial.print(" | ");
Serial.print(distance_4);
Serial.print(" | ");
Serial.print(distance_5);
Serial.print(" | ");
Serial.print(distance_6);
Serial.print(" | ");
Serial.print(distance_7);
Serial.print(" | ");
Serial.print(distance_8);
Serial.print(" | ");
Serial.print(distance_9);
Serial.print(" | ");
Serial.print(distance_10);
Serial.print(" | ");
Serial.print(distance_11);
Serial.print(" | ");
Serial.println(distance_12);
}