Из документации:
Электрифицированная пишущая машина Consul 254 предназначена:
а) для ввода алфавитно-цифровой информации в ЭВМ при печатании оператора на клавиатуре машины
б) для вывода алфавитно-цифровой информации в порядке печати на лист или рулон бумаги по сигналам, посылаемым от ЭВМ
в) для применения в устройствах подготовки данных или в других устройствах, параметры которых соответствуют параметрам указанной машины
Сегодня мы займёмся пунктом "а" - будем читать данные с клавиатуры с помощью ЭВМ Arduino Uno.
![](https://habrastorage.org/getpro/habr/upload_files/0a1/651/f9c/0a1651f9cad9758e5d11a70f3b248b6b.jpg)
В семидесятых годах подобные машины были основным интерфейсом для взаимодействия человека с компьютерами. Поэтому первые игры, в частности, были полностью диалоговыми, без аркадных механик или огромных лабиринтов на экране.
![Сеанс игры в бейсбол из книги 1973 года "101 компьютерная игра на бейсике" Сеанс игры в бейсбол из книги 1973 года "101 компьютерная игра на бейсике"](https://habrastorage.org/getpro/habr/upload_files/3e0/b42/7c8/3e0b427c8908e92b050dde9dc07312e4.png)
Хотя Consul 254 и называется "пишущей машиной", сама эта машина ничего писать не умеет - клавиатура никак не соединена с печатающим механизмом. Никакого кабеля типа нуль-модема, чтобы просто печатать, тоже не существует. Поэтому без компьютера тут никак.
Зато если подключить ЭВМ, то можно будет вводить в неё информацию с помощью клавиатуры. С печатью я пока разбираться не стал, а просто взял символьный ЖК-дисплей, чтобы выводить набираемый текст.
![Берём три таких разъёма и втыкаем их в Arduino.
В каждом разъёме 26 контактов, помеченных буквами от A до Z Берём три таких разъёма и втыкаем их в Arduino.
В каждом разъёме 26 контактов, помеченных буквами от A до Z](https://habrastorage.org/getpro/habr/upload_files/d85/727/7d6/d857277d6b15d890d186facf6f031653.jpg)
Разъёмы для подключения к ЭВМ имеют нумерацию (внезапно) I, IV, V. По соединяющимся буквам I V или по их интерпретации в качестве римских чисел можно было бы предположить, что I слева, V справа, а IV посередине, но это не так. К счастью, эти номера выгравированы снизу корпуса.
![Телетайп, вид снизу. Скан документации Телетайп, вид снизу. Скан документации](https://habrastorage.org/getpro/habr/upload_files/28b/30f/e13/28b30fe134414e6630e89a6d6dde58e6.png)
Клавиши машины подключены к шифратору, выдающему восьмибитный код. При нажатии на кнопку, внутри машины щёлкают релюшки, и на выходе шифратора можно увидеть код этой клавиши. Чтобы узнать, что пора считывать выходной символ, есть ещё пара контактов.
![Выход с шифратора клавиатуры Выход с шифратора клавиатуры](https://habrastorage.org/getpro/habr/upload_files/6fc/5cb/4dd/6fc5cb4dd90726a10eab47a91bb4c3db.png)
Интересующие нас выходные контакты шифратора (который чехословаки перевели как комбинатор) обозначены буквами от C до K. В документации приведена таблица сканкодов, с помощью которой мы и переведём их в ASCII. Сканкод формируется выходами DEFGHIKJ (именно в таком порядке!), на которые попадает напряжение с выхода (или входа?) C. То есть, если подключить C к питанию, то с соответствующих выходов D-J можно будет это питание "прочитать". Или то же самое можно проделать с "землёй".
Цифровые входы контроллера AVR имеют внутренний притягивающий к питанию резистор. Поэтому коммутировать их будем на землю, чтобы схема была проще.
![Схема того, что получилось Схема того, что получилось](https://habrastorage.org/getpro/habr/upload_files/e05/8a8/1ed/e058a81edfc8ccecca8bee8b50e07d32.png)
Для обозначения того, что символ пора читать, машина с помощью реле замыкает цепь AB. Контакт B в нашей схеме соединён с "землёй". Поэтому A тоже притягивается к "земле" при переключении реле. Для борьбы с дребезгом контактов к этой линии подключен конденсатор - множественных срабатываний не будет.
![Временная диаграмма сигналов на выходе с клавиатуры Временная диаграмма сигналов на выходе с клавиатуры](https://habrastorage.org/getpro/habr/upload_files/933/260/ffe/933260ffec92ee0e38b408a4615cd1e4.png)
Из временной диаграммы следует, что на выходе шифратора данные появляются как раз перед тем, как замыкаются контакты AB (что вполне логично). Поэтому в цепях C-D..K бороться с дребезгом не нужно.
Чтобы дождаться прихода символа, программа мониторит напряжение на 12 цифровом входе, подключенном к A. Можно было бы направить сигнал с A на вход контроллера прерываний, чтобы сэкономить электричество, но для демонстрационных целей это ни к чему.
Код считывания нажатий клавиш и вывода на экран
void loop() {
if (!digitalRead(12)) {
unsigned int v = 0;
for (int i = 2 ; i <= 9 ; ++i)
v = (v << 1) + digitalRead(i);
if (v == LOWREG) {
reg = false;
} else if (v == HIGHREG) {
reg = true;
} else {
if (reg) {
v = v ^ 3;
}
lcd.write(table[v]);
if (x == 16) {
lcd.scrollDisplayLeft();
} else {
++x;
}
}
delay(50);
}
}
Полученные коды клавиш декодируются в символы с помощью захардкоженной таблицы и выводятся на ЖК-дисплей. После этого процессор ждёт 50 мс, потому что в документации сказано, что чаще читать нельзя. Заодно и линия AB разомкнётся за это время.
![Раскладка клавиатуры Раскладка клавиатуры](https://habrastorage.org/getpro/habr/upload_files/fea/094/c70/fea094c70a2285eafc4ef35e9bb404b5.png)
На каждой клавише нарисовано по 2 символа - один для верхнего регистра, другой для нижнего. Русские буквы дисплей сам по себе показывать не умеет, а добавлять их мне было лень. Если что, для этого есть отдельная библиотека. Поэтому текст для демонстрации я набираю по-английски. Но чтобы набирать латиницу, нельзя просто переключить язык. Некоторые из нужных символов находятся в нижнем регистре, а некоторые в верхнем (те, которые совпадают по начертанию с кириллицей).
Клавиши переключения регистра (НР, ВР) на клавиатуре, вопреки ожиданиям, не меняют состояния машины, а просто посылают соответствующий сканкод наружу, в ЭВМ. Компьютер большой, ему видней.
Пришлось реализовывать переключение регистра в программе. Сканкоды для разных регистров одной клавиши отличаются инвертированными последними двумя битами. Поэтому чтобы найти код верхнего символа, зная нижний (и наоборот), надо всего лишь выполнить с ним "xor 3".
Ниже видео, как это всё работает. Надеюсь, в реальной жизни никто не набирал на этой клавиатуре тексты программ латиницей. Пару раз переключать регистр во время набора одного слова - сомнительное удовольствие.
Итак, печатать оператор может, а что же с выводом на бумагу? Это немного сложнее. Для поступающих от ЭВМ данных дешифратора нет. Нужно напрямую управлять входами матрицы, составленной из электромагнитных реле. То есть, добыть питание 12 вольт и 20 выводов, которые будут включать эти реле через разъём I. Оставим это на следующий раз.
Ссылки
Комментарии (12)
RomeoGolf
15.09.2022 19:30+2Спасибо, поностальгировал :-)
Как вспомнишь, так вздрогнешь. М-222, «винчестер» размером в холодильник и объемом в мегабайт (барабанами от списанных асфальт укатывали), читающе-перфорирующий «бармалей»… Но консул — самая большая головная боль «машинистов», ибо деталей больше, чем в жигулях, и при этом ударно двигаются.
Javian
Самое интересное как этот аппарат сохранился до наших дней, если у него нет никакого применения без ЭВМ.
smart_pic
многие использовали как простую печатную машинку. Это вам не на Ятрань по кнопкам пальцами ударять
Javian
автор пишет:
w0lf
Проблема в том, что этот Консул НЕЛЬЗЯ использовать как простую печатную машинку. По причине того что это просто ТЕРМИНАЛ. Автор вроде в посте чётко об этом написал. То есть никакого применения у неё нет без подключения к ЭВМ.
ru_vlad
У нас в свое время, ребята электронщики сделали блок для подключения Консулов и превращения данного в обычную электромеханическую печатную машинку.
Если мне не изменяет память в конце 80х в журнале Моделист конструктор была статья о подобном.
w0lf
Да, я помню эту статью. МК №2 за 89 год. Там была схема контроллера для работы Консула 254 с компьютером Специалист и в автономном режиме. Но положа руку на сердце, многие были способны достать детали (да, в то время это было основной проблемой радиолюбителей), прошить ПЗУ-шку и собрать такую схему? На мой взгляд — немногие.
![image](https://habrastorage.org/r/w780q1/webt/ff/rv/uk/ffrvukse3hhuhfqmgmvppgf00dm.jpeg)
Dovgaluk Автор
Даа, всё уже украдено до нас. Спасибо за наводку.
salnicoff
К ним существовали официальные прибамбасы, которые замыкали клавиатуру на электронику печатной части. Делалось для того, чтобы в отдел не ставить отдельную «Ятрань» или «Олюмпию». Правда, не для всех «Консулов» эти прибамбасы имели смысл...
pavel_raskin
del
Dovgaluk Автор
Валялся на складе где-то. Каретка была отдельно, провода в пакетах.
salnicoff
Лежал на складе — вот и сохранился. А еще интересно — у него внутренности металлические или уже из пластика сорта «Г»? Потому как если механизм пластиковый, то печатать этот аппарат — увы! — уже никогда не будет.