ARTE
BELEZA E BEM-ESTAR
ARTESANATO
CULTURA E HISTÓRIA
ENTRETENIMENTO
MEIO AMBIENTE
COMIDA E BEBIDAS
ENGENHARIA REVERSA
CIÊNCIAS
ESPORTES
TECNOLOGIA
TECNOLOGIA VESTÍVEL
The Rotary Dial: A Number Sent as a Count of Breaks
Ed

Criado por

Ed

27. setembro 2026FI
34
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.
Iniciante
About 3 hours

Instruções

1

The pulse train and the steady return

A carregar o notebook 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;
  }
}

Materiais para este passo:

Arduino Uno R3Arduino Uno R31 peça
Botão de pressãoBotão de pressão1 peça
Fios de ligaçãoFios de ligação1 peça
Placa de ensaioPlaca de ensaio1 peça

Ferramentas necessárias:

Computador com o IDE ArduinoComputador com o IDE Arduino
MultímetroMultímetro
Disco de marcaçãoDisco de marcação
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.

Ferramentas necessárias:

CronómetroCronómetro
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.

Materiais

4
  • 1 peça
    1 vendor sell this, none ship to you yet
    Referência
  • 1 peça
    14 vendors sell this, none ship to you yet
    Referência
  • 1 peça
    3 vendors sell this, none ship to you yet
    Referência
  • 1 peça
    1 vendor sell this, none ship to you yet
    Referência

Ferramentas necessárias

4

CC0 Domínio Público

Este blueprint é liberado sob CC0. Você é livre para copiar, modificar, distribuir e usar este trabalho para qualquer finalidade, sem pedir permissão.

Apoie o Maker comprando produtos através do Blueprint, onde ele ganha uma Comissão Maker definida pelos vendedores, ou crie uma nova versão deste Blueprint e inclua-o como conexão no seu próprio Blueprint para compartilhar receita.

Discussão

(0)

Entrar para participar da discussão

Carregando comentários...