Go Down

Topic: Pin will not go LOW after tone (Read 763 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. Check out the ATMega1284P based Bobuino and other '328P & '1284P creations & offerings at  www.crossroadsfencing.com/BobuinoRev17.
Arduino for Teens available at Amazon.com.

Go Up