SZTUKA
Piękno i dobre samopoczucie
RZEMIOSŁO
KULTURA I HISTORIA
ROZRYWKA
ŚRODOWISKO
JEDZENIE I NAPOJE
INŻYNIERIA ODWROTNA
NAUKI
LEKKOATLETYKA
TECHNOLOGIA
URZĄDZENIA DO NOSZENIA
The Rotary Dial: A Number Sent as a Count of Breaks
Ed

Autor

Ed

27. wrzesień 2026FI
6
0
0
0
0

The Rotary Dial: A Number Sent as a Count of Breaks

Strowger's automatic exchange stepped a selector once for each pulse it received — but early subscribers had to send those pulses by pressing buttons, a count at a time. The dial made it natural: pull a finger-hole round to a stop and let go, and the spring-driven return breaks the line once for each hole it passes. Alexander E. Keith, John Erickson and Charles J. Erickson of Chicago, assignors to the Strowger Automatic Telephone Exchange, filed US 597,062, *Calling Device for Telephone-Exchanges*, on 20 August 1896; it was granted 11 January 1898. Its finger-holds are set in a circle, a spring returns the dial, an escapement limits the return, and a switch in the return movement sends the impulses. This rung draws the pulse train, shows why the return must run at a steady speed, and decodes dialled pulses into digits with an Arduino.
Początkujący
About 3 hours

Instrukcje

1

The pulse train and the steady return

Wczytywanie notatnika Jupyter…
2

What the pulses drive

Each break steps a Strowger selector one position. The embedded blueprint shows the exchange the dial was designed to feed.
3

Read the 1896 calling device

US 597,062 describes the device as "a series of movable finger-holds of which some one is moved up to a stop and then released", the holds "disposed … in circular order". A helical spring K′ on the ratchet wheel returns the mechanism; the return is "limited by an escapement mechanism" whose pallets engage the pins of an escapement wheel, and a circuit-breaker makes the impulses as it returns. An indicator shows which of several magnets at the distant station is being worked. The later rotary dial kept the principle — wind by hand, send on the spring-driven return at a governed speed — and moved the finger-holds into the familiar perforated finger wheel.
4

The sketch that decodes the pulses

Counts breaks on pin 2, ends a digit after a 300 ms gap and a number after 3 s, and prints the digits. Ten breaks is 0.
dial_decoder.inoarduino
/*
  dial_decoder.ino -- decode a rotary dial's pulses into digits.

  A rotary dial's PULSE contacts open once per step as the dial returns. Wire them (or, to
  try it without a dial, a push button pressed quickly N times) between pin 2 and GND.
  The input uses the internal pull-up, so:  contacts closed = LOW, contacts open = HIGH.

  A digit is complete when no new break arrives for GAP_MS. Ten breaks means 0.
*/

const int PIN_PULSE = 2;
const unsigned long DEBOUNCE_MS = 10;    // contacts bounce; ignore changes shorter than this
const unsigned long GAP_MS      = 300;   // no break for this long = end of the digit
const unsigned long NUMBER_MS   = 3000;  // no digit for this long = end of the number

int lastStable = LOW;
int lastRead = LOW;
unsigned long lastChange = 0;
unsigned long lastBreak = 0;
int count = 0;
bool numberOpen = false;

void setup() {
  pinMode(PIN_PULSE, INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println(F("Dial a number."));
}

void loop() {
  int r = digitalRead(PIN_PULSE);
  unsigned long now = millis();
  if (r != lastRead) { lastRead = r; lastChange = now; }

  // a change that has held for DEBOUNCE_MS is real
  if (now - lastChange >= DEBOUNCE_MS && r != lastStable) {
    lastStable = r;
    if (r == HIGH) {             // contacts just opened: one break
      count++;
      lastBreak = now;
    }
  }

  if (count > 0 && lastStable == LOW && now - lastBreak >= GAP_MS) {
    int digit = (count == 10) ? 0 : count;
    if (count > 10) {
      Serial.print(F("?"));      // more than ten breaks: a fault, not a digit
    } else {
      Serial.print(digit);
    }
    count = 0;
    numberOpen = true;
  }

  if (numberOpen && count == 0 && now - lastBreak >= NUMBER_MS) {
    Serial.println();
    numberOpen = false;
  }
}

Materiały do tego kroku:

Arduino Uno R3Arduino Uno R31 sztuka
PrzyciskPrzycisk1 sztuka
Przewody połączeniowePrzewody połączeniowe1 sztuka
Płytka stykowaPłytka stykowa1 sztuka
Tarcza numerowaTarcza numerowa1 sztuka

Potrzebne narzędzia:

Komputer z Arduino IDEKomputer z Arduino IDE
MultimetrMultimetr
5

Dial into it

Upload the sketch and open the serial monitor at 9600 baud. With a push button between pin 2 and GND, press it quickly three times, pause, then press it once: the monitor prints 31. Hold the button closed between presses — a dial's pulse contacts are closed at rest and open for each break. If you have a real rotary dial, find its pulse contacts with the multimeter on continuity: they read closed at rest and flicker open as the dial returns. Wire them in place of the button. Dial each digit and check the monitor. A dial whose digits come out one too many or too few has a pulse contact out of adjustment; one that prints ? is bouncing — raise DEBOUNCE_MS.

Potrzebne narzędzia:

StoperStoper
6

A dial that sends wrong numbers

Rotary dial faults, from the easiest to check.

Flow

Loading...
7

History and honest limits

**Alexander E. Keith**, **John Erickson** and **Charles J. Erickson** filed **US 597,062** on 20 August 1896, assigned to the Strowger Automatic Telephone Exchange; it was granted 11 January 1898. Rotary dials spread with automatic exchanges through the early twentieth century and were replaced by push-button tone dialling from the 1960s. **Honest limits.** The 10 breaks a second and 60/40 ratio are the later standard figures, not the 1896 patent's; exchanges accepted a range around them. The push button in the bench test cannot make breaks as regular as a governed dial.

Materiały

5

Wymagane narzędzia

3

CC0 Domena publiczna

Ten plan jest udostępniany na licencji CC0. Możesz go swobodnie kopiować, modyfikować, rozpowszechniać i wykorzystywać do dowolnych celów, bez konieczności uzyskiwania zgody.

Wesprzyj Makera kupując produkty przez jego plan, za co zarabia Prowizja Makera ustalony przez sprzedawców, lub stwórz nową iterację tego planu i dołącz go jako połączenie w swoim własnym planie, aby dzielić się przychodami.

Dyskusja

(0)

Zaloguj się aby dołączyć do dyskusji

Ładowanie komentarzy...