Project 4.00 Using the Piezo
This project shows how to use the MC Trainer to produce a noise from the piezo onboard when SW1 is pressed.
Project Code:
///////////////////////////////////////// // 4.00 - Using the Piezo byte piezoPin = 12; byte SW1 = 1; bool pressed = LOW; void setup() { pinMode(piezoPin, OUTPUT); pinMode(SW1, INPUT); } void loop() { if (digitalRead(SW1) == pressed) { digitalWrite(piezoPin, HIGH); delay(1); digitalWrite(piezoPin, LOW); delay(1); } } /////////////////////////////////////////
*If you’re copying and pasting the code, or typing from scratch, delete everything out of a new Arduino sketch and paste / type in the above text.
The piezo is connected to pin 12 on the MC Trainer.
byte piezoPin = 12;
Since we are writing to this pin, it’s an output.
pinMode(piezoPin, OUTPUT);
The piezo buzzer creates sound through the rapid physical deformation of an internal crystal. When a voltage is applied, the crystal changes shape. By quickly fluctuating the applied voltage, a sound is generated with a frequency that matches the rate of these voltage changes. Since we know how to turn a pin on and off (digitalWrite) we can create noise! To prevent a continuous annoying buzzing, we will only write to the Piezo when SW1 is pressed.
if (digitalRead(SW1) == pressed) { digitalWrite(piezoPin, HIGH); delay(1); digitalWrite(piezoPin, LOW); delay(1); }
Frequency, expressed in Hertz (Hz), indicates the number of cycles that occur per second. In the context of a piezo buzzer, understanding the frequency requires identifying the number of these cycles within a one-second timeframe. A “cycle”, in this case, is defined as one complete sequence of the buzzer turning “on” and then “off”. This sequence is also referred to as a “period”, marking the duration of one full cycle of operation.
In our case the period is 2 milliseconds. It takes 2 milliseconds to make a full cycle. How many of those cycles happen in one second? Remember, 1 second is 1000ms.
1000ms / 2ms = 500Hz
The noise you hear is at a frequency of 500Hz!