Rotary dial
A telephone's rotary dial, with its pulse and off-normal contacts brought out to three wires. Aliases: phone dial, rotary dialer, pulse dial.
Pins
| Pin | What it does |
|---|---|
GND |
The common of both sets of contacts. |
DIAL |
The off-normal contacts: joined to GND while the wheel is off its rest. |
PULSE |
The pulse contacts: joined to GND at rest, let go once for each pulse. |
While it runs
Click a hole to dial that digit. The digit shows in the middle until the wheel is home again.
Reading it on an Arduino
With INPUT_PULLUP on both pins, count how many times PULSE goes high while
DIAL is low:
pinMode(2, INPUT_PULLUP); // DIAL
pinMode(3, INPUT_PULLUP); // PULSE
// while digitalRead(2) == LOW, count the rising edges on pin 3;
// when pin 2 goes HIGH again, the count is the digit (10 means 0)
What the model gets right
The pulses: one for 1, nine for 9, ten for 0, at the governor's ten a second, each a 60 ms break and a 40 ms make, the ratio telephone exchanges were built for.
The off-normal contacts close as soon as the wheel leaves its rest and open a little after the last pulse, so "dialing" is never confused with a gap between pulses.
What it does not model
Contact bounce, and the speed a worn governor really runs at. The run from the finger stop back to the first pulse and from the last pulse to rest are a round 100 ms each.
Common mistakes
Counting falling edges and rising edges both: each pulse is one of each.
Reading the digit before DIAL goes high: the wheel may still be sending.
See it in action
Phone dial builds up the number dialed. Open it at /templates.