I want to stop the sound of a buzzer after I push the push button. I tried a code, but when the button is not pushed, the buzzer continue to make sound. How can I fixed it?
const int pin_contact= 6;
const int buzzer = 9; //buzzer to arduino pin 9
void setup(){
pinMode(buzzer, OUTPUT); // Set buzzer - pin 9 as an output
pinMode(pin_contact, INPUT);
Serial.begin(9600);
}
void loop() {
tone(buzzer, 200);
int stare_contact = digitalRead(pin_contact);
if (stare_contact == HIGH) {
noTone(buzzer);
}
}
timemage
5,6391 gold badge14 silver badges25 bronze badges
2 Answers 2
Is your buzzer active low? try this code below. it will toggle buzzer pin output.
const int buzzerPin = 9;
const int buttonPin = 6;
int buzzerState = 1;
int buttonState;
int buttonTemp = 0;
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
digitalWrite(buzzerPin,buzzerState);
if (buttonState == HIGH && buttonTemp == 0){
Serial.print("Buzzer toggle to : ");
if (buzzerState) {
Serial.println("LOW");
buzzerState = 0;
} else {
Serial.println("HIGH");
buzzerState = 1;
}
buttonTemp = 1;
} else if (buttonState == LOW) {
buttonTemp = 0;
}
}
answered Mar 26, 2021 at 13:09
Try this
int LEDState = 1;
int SwitchPin = 6;
int LEDPIN = 9;
void setup()
{
pinMode(LEDPIN,OUTPUT);
pinMode(SwitchPin,INPUT);
digitalWrite(LEDPIN,LEDState);
}
void loop()
{
int SwitchState = digitalRead(SwitchPin);
if(LEDState==1 && SwitchState==HIGH){
LEDState = 0;
}
digitalWrite(LEDPIN,LEDState);
delay(10);
}
answered Mar 26, 2021 at 10:07
-
Sorry Jsotla, i have fixed it now... @Biancaaa I have fixed the code and i tried with an led except a buzzer because at this time buzzer is not available in my collections, afterall, try this code, this code worked very well for me using the LED as an output indicator instead of a buzzerSubha Jeet Sikdar– Subha Jeet Sikdar03/28/2021 06:06:47Commented Mar 28, 2021 at 6:06
loop()
so as soon as you stop pushing the button, the sound starts again. The simplest solution would be to move thetone (buzzer, 200);
command out ofloop()
and place it at the end ofsetup()
. Also make sure your button actually reads "HIGH" when pressed. Many buttons are active "LOW".