// Pin configuration of Ultrasonic Distance sensor
const int triggerPinFoot = 9; // Trigger Pin
const int echoPinFoot = 8; // Echo Pin
const int triggerPinHand = 7; // Trigger pin of hand sensor
const int echoPinHand = 6; // Echo pin of hand sensor
const int speakerPin = 11; // Speaker Pin
// Frequency parameters (reflashable)
const int minFrequency = 220; // Min Frequency
const int maxFrequency = 4400; // Maximum frequency
void setup() {
// Set pin modes
pinMode(triggerPinFoot, OUTPUT);
pinMode(echoPinFoot, INPUT);
pinMode(triggerPinHand, OUTPUT);
pinMode(echoPinHand, INPUT);
pinMode(speakerPin, OUTPUT);
}
void loop() {
// Get distance for volume control (Right Foot)
int distanceFoot = getDistance(triggerPinFoot, echoPinFoot);
int volume = map(distanceFoot, 1, 100, 0, 255); // Mapping 1-100 cm to PWM 0-255
// Get distance for frequency control (Right Hand)
int distanceHand = getDistance(triggerPinHand, echoPinHand);
int frequency = map(distanceHand, 1, 100, minFrequency, maxFrequency); // Mapping 1-100 cm to 220-4400 Hz
// Generate PWM tone
tone(speakerPin, frequency, 50); // 50 ms duration per cycle
// Control volume
analogWrite(speakerPin, volume);
delay(100); // wait for 100 milliseconds
}
int getDistance(int triggerPin, int echoPin) {
// This function will receive trigger and echo pin as input
// Clear the trigger pin
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
// Set the trigger pin HIGH for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
// Read the echo pin
long duration = pulseIn(echoPin, HIGH);
// Calculate distance (in cm)
int distance = duration * 0.0344 / 2;
return distance;
}