If you just need two constant-spec pulse streams, which can each be turned on or off by your Arduino, a 556 timer, a few resistors and a few capacitors will be well worth the small effort of learning to connect up.
Hi tkbyd,
Note sure who your reply was intended for -- I agree that a 555 is pretty simple to use but the OP was looking for a way to drive a piezo buzzer without one. I should have elaborated on that point. The example code I posted was to show how to use timer 1 to produce a square wave signal on a PWM output that can be used to drive a piezo buzzer without tying up the processor. The main loop simply calls my buzzer "on" and "off" functions at 1 second intervals. The value provided to the buzzer "on" function determines the frequency of the tone. How to actually drive the buzzer depends on the buzzer specs (e.g., may need to use a transistor).
For anyone interested in the gory details: The code works by putting timer 1 in "phase & frequency correct" PWM mode and selects the OCR1A register as the "top" value for the timer 1 counter (set bits WGM13 & WGM10 for Wave Generation Mode 9). Putting the OC1A PWM output in "toggle" mode (set bit COM1A0 for Compare Output Match mode Toggle on Match) generates a 50% duty cycle signal on Arduino pin 9. The frequency of the signal depends on the value loaded in the OCR1A register:
f = fio / (2*N*TOP)
where fio is 16MHz for most Arduinos, N is the timer pre-scale value (I used "1" in my example code) and TOP is the value loaded in the OCR1A register. So loading 2000 into OCR1A should yield a 4 KHz output frequency.
I'm using this approach with a piezo buzzer for an alarm clock project. I'm finding that the apparent loudness varies significantly with frequency and the peak is NOT with the "2000" value I think should hit the 4KHz resonant frequency of my buzzer. Still trying to get to the bottom of that.