I need a code that connects 3 ultrasonic sensors, 1 buzzer, and 1 LED in a Arduino uno
I tried using this code the original code was only supposed to work with 1 sensor I tried modifying it but nothing seems to work and it keeps buzzing and flickering light randomly. It would be much appreciated if you could help.
// defines pins numbers
const int trigPinA = 7;
const int echoPinA = 2;
const int trigPinB = 3;
const int echoPinB = 4;
const int trigPinC = 5;
const int echoPinC = 6;
const int buzzer = 10;
const int ledPin = 12;
// defines variables
long durationA;
long durationB;
long durationC;
int distanceA;
int distanceB;
int distanceC;
int safetyDistanceA;
int safetyDistanceB;
int safetyDistanceC;
void setup() {
pinMode(trigPinA, OUTPUT); // Sets the trigPin as an Output
pinMode(trigPinB, OUTPUT); // Sets the trigPin as an Output
pinMode(trigPinC, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPinA, INPUT); // Sets the echoPin as an Input
pinMode(echoPinB, INPUT); // Sets the echoPin as an Input
pinMode(echoPinC, INPUT); // Sets the echoPin as an Input
pinMode(buzzer, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPinA, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinA, LOW);
digitalWrite(trigPinB, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinB, LOW);
digitalWrite(trigPinC, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinC, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
durationA = pulseIn(echoPinA, HIGH);
durationB = pulseIn(echoPinB, HIGH);
durationC = pulseIn(echoPinC, HIGH);
// Calculating the distance
distanceA= durationA*0.034/2;
distanceB= durationB*0.034/2;
distanceC= durationC*0.034/2;
// DISTANCE
safetyDistanceA = distanceA;
if (safetyDistanceA <= 5){
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, LOW);
}
safetyDistanceB = distanceB;
if (safetyDistanceB <= 5){
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, LOW);
}
safetyDistanceC = distanceC;
if (safetyDistanceC <= 5){
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, LOW);
}
// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.print("Distance: ");
Serial.print("Distance: ");
Serial.println(distanceA);
Serial.println(distanceB);
Serial.println(distanceC);
}
>Solution :
// defines pins numbers
const int trigPinA = 7;
const int echoPinA = 2;
const int trigPinB = 3;
const int echoPinB = 4;
const int trigPinC = 5;
const int echoPinC = 6;
const int buzzer = 10;
const int ledPin = 12;
// defines variables
long durationA;
long durationB;
long durationC;
int distanceA;
int distanceB;
int distanceC;
int safetyDistanceA;
int safetyDistanceB;
int safetyDistanceC;
void setup() {
pinMode(trigPinA, OUTPUT); // Sets the trigPin as an Output
pinMode(trigPinB, OUTPUT); // Sets the trigPin as an Output
pinMode(trigPinC, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPinA, INPUT); // Sets the echoPin as an Input
pinMode(echoPinB, INPUT); // Sets the echoPin as an Input
pinMode(echoPinC, INPUT); // Sets the echoPin as an Input
pinMode(buzzer, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Sensor A
digitalWrite(trigPinA, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinA, LOW);
durationA = pulseIn(echoPinA, HIGH);
distanceA= durationA*0.034/2;
safetyDistanceA = distanceA;
if (safetyDistanceA <= 5){
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, LOW);
}
// Sensor B
digitalWrite(trigPinB, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinB, LOW);
durationB = pulseIn(echoPinB, HIGH);
distanceB= durationB*0.034/2;
safetyDistanceB = distanceB;
if (safetyDistanceB <= 5){
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, LOW);
}
// Sensor C
digitalWrite(trigPinC, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinC, LOW);
durationC = pulseIn(echoPinC, HIGH);
distanceC= durationC*0.034/2;
safetyDistanceC = distanceC;
if (safetyDistanceC <= 5){
digitalWrite(buzzer, LOW);
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(buzzer, HIGH);
digitalWrite(ledPin, LOW);
}
// Prints the distance on the Serial Monitor
Serial.print("Distance A: ");
Serial.println(distanceA);
Serial.print("Distance B: ");
Serial.println(distanceB);
Serial.print("Distance C: ");
Serial.println(distanceC);
}