Go Down

Topic: Pin will not go LOW after tone (Read 858 times) previous topic - next topic

zorchrog

I am getting a audible pulsing 1.2v - 1.6v and cannot figure out why the piezo pin will not go LOW.

Running a Piezo actuated by a PID.


// Motion Buzzer
#define PIEZO 3 // pin 3 PEZO output
#define MOTION 4 // pin 4 PIR input
void setup()
{
pinMode(PIEZO, OUTPUT);
pinMode(MOTION, INPUT);
}
void loop(){
  int val = digitalRead(MOTION); // read input value
  if (val == HIGH){   // check if the input is HIGH
  NOISE();}
  else {
    SENSOR();} 
}

void SENSOR(){ // This will be used later
  digitalWrite (PIEZO, LOW);
 
}
void NOISE(){
  for (int x=0; x < 10; x++){
    tone  (PIEZO, 19500);
    delay(2);
    tone(PIEZO, 19000);
    delay(2);
    tone(PIEZO, 18500);
    delay(2);
    tone(PIEZO, 18000);
    delay(2);
    tone(PIEZO, 17500);
    delay(2);
    tone(PIEZO, 17000);
    delay(2);
    tone(PIEZO, 16500);
    delay(2);
    tone(PIEZO, 16000);
    delay(2);
    tone(PIEZO, 15500);
    delay(2);
    tone(PIEZO, 15000);
    delay(2);
    tone(PIEZO, 14500);
    delay(2);
    tone(PIEZO, 14000);
    delay(2);
    tone(PIEZO, 13500);
    delay(2);
    tone(PIEZO, 13000);
    delay(2);
    tone(PIEZO, 12500);
    delay(2);
    tone(PIEZO, 12000);
    delay(2);
    tone(PIEZO, 11500);
    delay(2);
    tone(PIEZO, 11000);
    delay(2);
    tone(PIEZO, 10500);
    delay(2);
    tone(PIEZO, 10000);
    delay(2);
    tone(PIEZO, 9500);
    delay(2);
    tone(PIEZO, 9000);
    delay(2);
    tone(PIEZO, 8500);
    delay(2);
    tone(PIEZO, 8000);
    delay(2);
    tone(PIEZO, 7500);
    delay(2);
    tone(PIEZO, 7000);
    delay(2);
    tone(PIEZO, 6500);
    delay(2);
    tone(PIEZO, 6000);
    delay(2);
    tone(PIEZO, 5500);
    delay(2);
    tone(PIEZO, 5000);
    delay(2);
    tone(PIEZO, 4500);
    delay(2);
    tone(PIEZO, 4000);
    delay(2);
    tone(PIEZO, 3500);
    delay(2);
    tone(PIEZO, 3000);
    delay(2);
    tone(PIEZO, 2500);
    delay(2);
    tone(PIEZO, 2000);
    delay(2);
    tone(PIEZO, 1500);
    delay(2);
    tone(PIEZO, 1000);
    delay(2);
    tone(PIEZO, 500);
    delay(4);
    tone(PIEZO, 250);
    delay(4);
    tone(PIEZO, 175);
    delay(4);
    tone(PIEZO, 100);
    delay(4);
    tone(PIEZO, 50);
    delay(4);
    tone(PIEZO, 100);
    delay(4);
    tone(PIEZO, 175);
    delay(4);
    tone(PIEZO, 250);
    delay(4);
    tone(PIEZO, 500);
    delay(4);
    tone(PIEZO, 1000);
    delay(2);
    tone(PIEZO, 1500);
    delay(2);
    tone(PIEZO, 2000);
    delay(2);
    tone(PIEZO, 2500);
    delay(2);
    tone(PIEZO, 3000);
    delay(2);
    tone(PIEZO, 3500);
    delay(2);
    tone(PIEZO, 4000);
    delay(2);
    tone(PIEZO, 4500);
    delay(2);
    tone(PIEZO, 5000);
    delay(2);
    tone(PIEZO, 5500);
    delay(2);
    tone(PIEZO, 6000);
    delay(2);
    tone(PIEZO, 6500);
    delay(2);
    tone(PIEZO, 7000);
    delay(2);
    tone(PIEZO, 7500);
    delay(2);
    tone(PIEZO, 8000);
    delay(2);
    tone(PIEZO, 8500);
    delay(2);
    tone(PIEZO, 9000);
    delay(2);
    tone(PIEZO, 9500);
    delay(2);
    tone(PIEZO, 10000);
    delay(2);
    tone(PIEZO, 10500);
    delay(2);
    tone(PIEZO, 11000);
    delay(2);
    tone(PIEZO, 11500);
    delay(2);
    tone(PIEZO, 12000);
    delay(2);
    tone(PIEZO, 12500);
    delay(2);
    tone(PIEZO, 13000);
    delay(2);
    tone(PIEZO, 13500);
    delay(2);
    tone(PIEZO, 14000);
    delay(2);
    tone(PIEZO, 14500);
    delay(2);
    tone(PIEZO, 15000);
    delay(2);
    tone(PIEZO, 15500);
    delay(2);
    tone(PIEZO, 16000);
    delay(2);
    tone(PIEZO, 16500);
    delay(2);
    tone(PIEZO, 17000);
    delay(2);
    tone(PIEZO, 17500);
    delay(2);
    tone(PIEZO, 18000);
    delay(2);
    tone(PIEZO, 18500);
    delay(2);
    tone(PIEZO, 19000);
    delay(2);
    tone(PIEZO, 19500);
    delay(2);
    tone(PIEZO, 20000);
    delay(2);}
     
}

robtillaart

Please use code tags...
Please press CTRL-T before copying code for the forum

a bit different and a lot shorter
Code: [Select]

void NOISE()
{
  for (int x=0; x < 10; x++)
  {
    for (int freq = 19500; freq > 100; freq = freq /(sqrt(2) / 12))
    {
       tone  (PIEZO, freq);
       delay(2);
    }
    for (int freq = 100; freq < 19500;  freq = freq * (sqrt(2) / 12))
    {
       tone  (PIEZO, freq);
       delay(2);
    }
  }
}


Quote
cannot figure out why the piezo pin will not go LOW.

maybe you should add a pull-down resistor.
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

CrossRoads

Isn't there a notone() command too?
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy