SANAT
GÜZELLİK & SAĞLIK
ZANAAT
KÜLTÜR & TARİH
EĞLENCE
ÇEVRE
YİYECEK & İÇECEK
TERS MÜHENDİSLİK
BİLİMLER
SPOR
TEKNOLOJİ
GİYİLEBİLİR ÜRÜNLER
The Rotary Dial: A Number Sent as a Count of Breaks
Ed

Oluşturan

Ed

27. Eylül 2026FI
3
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.
Başlangıç
About 3 hours

Talimatlar

1

The pulse train and the steady return

Jupyter defteri yükleniyor…
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;
  }
}

Bu adım için malzemeler:

Arduino Uno R3Arduino Uno R31 adet
ButonButon1 adet
Jumper KablolarJumper Kablolar1 adet
Devre TahtasıDevre Tahtası1 adet
Döner kadranDöner kadran1 adet

Gerekli aletler:

Arduino IDE Kurulu BilgisayarArduino IDE Kurulu Bilgisayar
MultimetreMultimetre
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.

Gerekli aletler:

KronometreKronometre
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.

Malzemeler

5

Gerekli Aletler

3

CC0 Kamu Malı

Bu plan CC0 lisansıyla yayınlanmıştır. İzin almadan kopyalayabilir, değiştirebilir, dağıtabilir ve herhangi bir amaçla kullanabilirsiniz.

Planı üzerinden ürün satın alarak Maker'ı destekleyin, böylece Maker Komisyonu Satıcılar tarafından belirlenen komisyonu kazanırlar veya bu Planın yeni bir versiyonunu oluşturun ve gelir paylaşımı için kendi Planınıza bağlantı olarak ekleyin.

Tartışma

(0)

Giriş yapın tartışmaya katılmak için

Yorumlar yükleniyor...