int offset = 30; //Low end of tone
int period = 150; //High end of tone
int buzz = 11; //piezzo buzzer on pin 11
int rangeinput = 0; //Rangfinder input pin analog 0
int val = 0; //Variable for holding analog input data
void setup()
{
pinMode(buzz,OUTPUT); //Set piezzo buzzer pin to output
Serial.begin(9600); //Enable serial output at 9600 baud
}
void loop()
{
range(); //Get scaled range data
if (val < 420 && val > 30) //Filter range data to numbers between
30 & 420
{
buzzer(); //Make tone out of buzzer if data is within desired range
}
}
void buzzer()
{
period = val; //Set Sine wave period to filtered range data
for(int i=offset;i<=period;i++) //Output Sine wave to buzzer
{ //sweeping between two values.
digitalWrite(buzz,HIGH);
delayMicroseconds(i);
digitalWrite(buzz,LOW);
}
for(int i=period;i>=offset;i--)
{
digitalWrite(buzz,HIGH);
delayMicroseconds(i);
digitalWrite(buzz,LOW);
}
}
void range() //Get analog data from rangefinder and invert data
{
val = analogRead(rangeinput);
val = (val - 597);
val = abs(val);
Serial.println(val); //Send data out serial port for debug.
} |