NGHỆ THUẬT
LÀM ĐẸP VÀ SỨC KHỎE
THỦ CÔNG
VĂN HÓA VÀ LỊCH SỬ
GIẢI TRÍ
MÔI TRƯỜNG
THỰC PHẨM VÀ ĐỒ UỐNG
KỸ THUẬT NGƯỢC
KHOA HỌC
THỂ THAO
CÔNG NGHỆ
THIẾT BỊ ĐEO
The Rotary Dial: A Number Sent as a Count of Breaks
Ed

Tạo bởi

Ed

27. tháng Chín 2026FI
9
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.
Cơ bản
About 3 hours

Hướng dẫn

1

The pulse train and the steady return

Đang tải sổ tay 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;
  }
}

Vật liệu cho bước này:

Arduino Uno R3Arduino Uno R31 cái
Nút nhấnNút nhấn1 cái
Dây nốiDây nối1 cái
Bảng cắm mạchBảng cắm mạch1 cái
Đĩa quay sốĐĩa quay số1 cái

Công cụ cần thiết:

Máy tính cài Arduino IDEMáy tính cài Arduino IDE
Đồng hồ vạn năngĐồng hồ vạn năng
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.

Công cụ cần thiết:

Đồng hồ bấm giờĐồng hồ bấm giờ
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.

Vật liệu

5
  • Arduino Uno R3Hoa hồng 10%
    1 cái
    Magento Legacy Storeships internationally
    từ$26.65
  • Nút nhấnHoa hồng 10%
    1 cái
    Magento Legacy Storeships internationally
    từ$0.51
  • Dây nốiHoa hồng 10%
    1 cái
    Magento Legacy Storeships internationally
    từ$1.59
  • Bảng cắm mạchHoa hồng 10%
    1 cái
    Magento Legacy Storeships internationally
    từ$9.36
  • Tạm thời

Công cụ yêu cầu

3

CC0 Phạm vi công cộng

Bản thiết kế này được phát hành theo CC0. Bạn tự do sao chép, sửa đổi, phân phối và sử dụng cho bất kỳ mục đích nào mà không cần xin phép.

Hỗ trợ nhà sáng tạo bằng cách mua sản phẩm qua bản thiết kế, nơi họ nhận Hoa hồng nhà sáng tạo do nhà bán hàng đặt, hoặc tạo phiên bản mới và kết nối trong bản thiết kế riêng để chia sẻ doanh thu.

Thảo luận

(0)

Đăng nhập để tham gia thảo luận

Đang tải bình luận...