user6900: According to my current (poor) understanding, only the PWM pins (with the ~) among the digital pins (ignoring Analog pins) can be passed to analogWrite().  I understand the servo therefore - since interfaced by a variable voltage signal - must be connected to such a PWM pin.

Why is the humble Piezo Buzzer not bound to this condition?  
Why can I connect the buzzer to a digital pin that is not PWM (and so should only be able to output binary LOW, HIGH voltage at some consistent frequency) and still achieve a varying sound by calls to the tone() function?  
Surely under the limitations of being digital and non-PWM, the pin could only cause some consistent buzzer frequency?

I'm reading online that the Piezeo Buzzer does indeed require a PWM digital pin, but I can connect it to any digital pin on my Galileo gen2 and have it function seemingly correctly (differing tones produced).
Also, since slightly relevant; what exactly is the difference between a PWM digital pin and an analog pin, in terms of output? They both use PWM, right? Why can't even a PWM digital pin read analog input?

user6959: 
Why does a Piezo Buzzer not require a PWM digital pin?

Tone() uses the microcontroller's hardware timers to control the related code function but do not use the hardware PWM features. The timer can be assigned to any pin that has a digital output capability.
Tone() sends a "rail to rail" square wave (50% duty cycle) to the selected pin  
Slightly more lower level information here under Ugly details
They say:  

The library uses the hardware timers on the microcontroller to generate square-wave tones in the audible range.
You can output the tones on any pin (arbitrary). The number of tones that can be played simultaneously depends on the number of hardware timers (with CTC capability) available on the microcontroller.
ATmega8: 2 (timers 2, and 1)
ATmega168/328: 3 (timers 2, 1, and 0)
ATmega1280: 6 (timers 2, 3, 4, 5, 1, 0)  
The timer order given above is the order in which the timers are allocated. Timer 0 is a sensitive timer on the Arduino since it provides millis() and PWM functionality.



... what exactly is the difference between a PWM digital pin and an analog pin, in terms of output? They both use PWM, right? Why can't even a PWM digital pin read analog input?

There is a misconception there.
Analog pins are capable of Analog INPUT functionality .
"PWM" output is known as "analogWrite" but is actually a purely digital function and is not related to whether a pin has analog read functionality.
PWM out = analogWrite is available on pins which have associated PWM hardware.
The actual signal is a "rail to rail" square wave with a mark:space (on:off)that varies.   Filtering the PWM produces DC at the average DC level. PWM range is 0 to 255 (8 bits)

6900: <p>According to my current (poor) understanding, only the PWM pins (with the ~) among the digital pins (ignoring Analog pins) can be passed to <code>analogWrite()</code>.  I understand the servo therefore - since interfaced by a variable voltage signal - must be connected to such a PWM pin.</p>

<ul>
<li>Why is the humble Piezo Buzzer not bound to this condition?  </li>
<li>Why can I connect the buzzer to a digital pin that is not PWM (and so should only be able to output binary LOW, HIGH voltage at some consistent frequency) and still achieve a varying sound by calls to the <code>tone()</code> function?  </li>
<li>Surely under the limitations of being digital and non-PWM, the pin could only cause some consistent buzzer frequency?</li>
</ul>

<p>I'm reading online that the Piezeo Buzzer does indeed require a PWM digital pin, but I can connect it to any digital pin on my Galileo gen2 and have it function seemingly correctly (differing tones produced).</p>

<p>Also, since slightly relevant; what exactly is the difference between a PWM digital pin and an analog pin, in terms of output? They both use PWM, right? Why can't even a PWM digital pin read analog input?</p>
 6959: <blockquote>
  <p>Why does a Piezo Buzzer not require a PWM digital pin?</p>
</blockquote>

<p>Tone() uses the microcontroller's hardware timers to control the related code function but do not use the hardware PWM features. The timer can be assigned to any pin that has a digital output capability.<br>
Tone() sends a "rail to rail" square wave (50% duty cycle) to the selected pin  </p>

<p>Slightly more lower level information here under <a href="https://code.google.com/p/rogue-code/wiki/ToneLibraryDocumentation#Ugly_Details" rel="nofollow"><strong>Ugly details</strong></a><br>
They say:  </p>

<ul>
<li><p>The library uses the hardware timers on the microcontroller to generate square-wave tones in the audible range.</p>

<p>You can output the tones on any pin (arbitrary). The number of tones that can be played simultaneously depends on the number of hardware timers (with CTC capability) available on the microcontroller.</p>

<p>ATmega8: 2 (timers 2, and 1)<br>
ATmega168/328: 3 (timers 2, 1, and 0)<br>
ATmega1280: 6 (timers 2, 3, 4, 5, 1, 0)  </p>

<p>The timer order given above is the order in which the timers are allocated. Timer 0 is a sensitive timer on the Arduino since it provides millis() and PWM functionality.</p></li>
</ul>

<hr>

<blockquote>
  <p>... what exactly is the difference between a PWM digital pin and an analog pin, in terms of output? They both use PWM, right? Why can't even a PWM digital pin read analog input?</p>
</blockquote>

<p>There is a misconception there.<br>
Analog pins are capable of Analog INPUT functionality .<br>
"PWM" output is known as "analogWrite" but is actually a purely digital function and is not related to whether a pin has analog read functionality.<br>
PWM out = analogWrite is available on pins which have associated PWM hardware.<br>
The actual signal is a "rail to rail" square wave with a mark:space (on:off)that varies.   Filtering the PWM produces DC at the average DC level. PWM range is 0 to 255 (8 bits)</p>
