i changed the interval to 500 and it now seems to be on for longer...
byte triggerright=2; // declaring the pins which will be in use
byte echoright = 3;
float distance;
const int buzzer = 10;
byte red=7;
byte yellow=8;
byte green=4;
float distanceread;
long previousMillis=0;
int buzzerState = LOW;
long interval = 500;
void setup (){
pinMode(buzzer, OUTPUT);
pinMode (triggerright, OUTPUT);
pinMode (echoright, INPUT);
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
Serial.begin (9600); // set up the baud rate for serial printing
}
void loop (){
distanceread = getDistance ();
if(getDistance ()<=.25 && getDistance () >=0)
{
digitalWrite(red, HIGH);
getDistance();
analogWrite (buzzer,128);
delay (100);
analogWrite (buzzer,0);
}
else {
digitalWrite(red, LOW);
analogWrite (buzzer,0);
}
if(getDistance ()<=.5 && getDistance () >=.25)
{
digitalWrite(yellow, HIGH);
getDistance();
}
else {
digitalWrite(yellow, LOW);
}
if(getDistance ()<=1 && getDistance () >=0.5)
{
digitalWrite(green, HIGH);
buzz (100);
getDistance ();
}
else {
digitalWrite(green, LOW);
}
Serial.print(getDistance());
Serial.print("m");
Serial.println();
delay (2000);
}
float getDistance ()
{
digitalWrite(triggerright, LOW);
delayMicroseconds(2);
digitalWrite(triggerright, HIGH);
delayMicroseconds(5);
digitalWrite(triggerright, LOW);
float distance = pulseIn (echoright, HIGH);
return (distance) / 2938 / 2;
}
void buzz(int interval)
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (buzzerState == 0){
buzzerState = 110;
}
else {
buzzerState = 0;
}
analogWrite(buzzer, buzzerState);
}
}
but how can i get it to be more frequent?