const int trigPinA = 2; // Transmitter trigger pin
const int echoPinB = 3; // Receiver echo pin
const int LED_PIN_TRANSMITTER = 8; // Transmitter LED pin
const int LED_PIN_RECEIVER = 9; // Receiver LED pin
void setup() {
Serial.begin(9600);
pinMode(trigPinA, OUTPUT);
pinMode(echoPinB, INPUT);
pinMode(LED_PIN_TRANSMITTER, OUTPUT);
pinMode(LED_PIN_RECEIVER, OUTPUT);
Serial.println("Setup complete. Starting measurements...");
}
void loop() {
// Check if the receiver is set up properly
Serial.println("Checking receiver setup...");
digitalWrite(LED_PIN_RECEIVER, HIGH); // Turn on receiver LED to indicate it's ready
delay(100); // Short delay for indication
digitalWrite(LED_PIN_RECEIVER, LOW);
// Send ultrasonic pulse from Transmitter
Serial.println("Transmitter sends signal...");
digitalWrite(trigPinA, HIGH);
digitalWrite(LED_PIN_TRANSMITTER, HIGH); // Turn on transmitter LED
delayMicroseconds(10); // Ensure trigger pulse duration
digitalWrite(trigPinA, LOW);
digitalWrite(LED_PIN_TRANSMITTER, LOW); // Turn off transmitter LED
// Delay for receiver readiness
delayMicroseconds(200); // Adjust as needed for receiver readiness
// Measure the time for the pulse to be received by Receiver
Serial.println("Waiting for echo...");
long duration = pulseIn(echoPinB, HIGH, 100000); // Set appropriate timeout
// Check if a valid signal was received
if (duration > 0) {
Serial.println("Receiver receives signal...");
// Calculate distance based on speed of sound in air: 343 m/s (34300 cm/s)
float distance = (duration * 0.0343) / 2.0;
// Print distance
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Blink receiver LED to indicate signal reception
digitalWrite(LED_PIN_RECEIVER, HIGH);
delay(100); // Blink duration
digitalWrite(LED_PIN_RECEIVER, LOW);
} else {
Serial.println("No valid signal received from receiver. Check alignment and ensure a reflective surface is present.");
}
// Small delay before next measurement
delay(1000); // Adjust as needed for measurement frequency
}