Суббота, 18.05.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2022 » Октябрь » 30 » Клавиатура для маленького компьютера
12:21
Клавиатура для маленького компьютера

Клавиатура для маленького компьютера

Сделала себе маленькую клавиатуру:

… в которой дотрагиваться надо к контакту справа от буквы:

По устройству эта клавиатура – переменный резистор. С другой стороны – просто последовательность резисторов 100 Ом:

Весь этот большой длинный резистор подключен к питанию. А если дотронуться «карандашом» до контакта, то на него попадёт напряжение остатка резисторов (после точки контакта). Если этот «карандаш» прицепить к какому-то из пинов, принимающих аналоговую информацию, то команда analogRead() прочитает значение напряжения, которое соответствует определённой букве.
Это работает. Но, к сожалению, ни к чему не подключенный пин (при отсутствии контакта с клавиатурой) постоянно возвращает какие-то значения. Наверное, какие-то помехи. Ноль там будет только если подключить провод к земле.
Проблема решаема разными путями. В настоящей клавиатуре можно и механическим. Можно сделать кнопки с двумя пружинами разной жесткости, чтобы вначале замыкался контакт передачи информации о напряжении, а потом контакт существования сигнала. Информациию читать только если замкнуты оба.
Здесь же можно использовать два провода. Первый для считывания информации, а второй для кнопки. Только при нажатой кнопке читать данные.  Этакая клавиатура требующая работы двух рук. Правая рук нажимает контакт, а левая нажимает кнопку, отправляя информации в контроллер.
Удобство под вопросом, но если очень надо вводить буквы, а не цифры, то лучше так, чем несколько раз нажимать кнопку как в кнопочном телефоне.  
Это все интересно тем, что именно так работают все цифровые передачи данных. В них есть информационный канал и счётчик.  Информация считывается только в момент включения счётчика (или выключения)
Если вопрос размеров не критичен, то проще настоящую клавиатуру подключить:
https://marsohod.org/11-blog/57-ps2proto

Про ps/2:

https://ru.wikipedia.org/wiki/PS/2_(порт)
Разъем:

Как и полагается любому устройству два провода на питание и землю. Как принято при цифровой передачи два провода на данные (DAT) и счётчик (CLS). .
Про передачу информации:
Перед подачей питания на устройство контроллер порта на материнской плате «слушает» CLK. При передаче от устройства (PS/2-клавиатуры или PS/2-мыши) к компьютеру используется следующий протокол. Устройство не начинает передачу, если Clock не находился в «1» по крайней мере 50 микросекунд.
… Информация может передаваться не только с клавиатуры, но и на клавиатуру (лампочки на ней, например, можно включить). Видимо обе стороны могут включать и выключать сигнал по счётчику (CLK), означающий передачу информации, но чтобы кто-то занялся передачей отсутствие сигнала должно быть не менее 50 микросекунд.
Чтобы клавиатура начала что-то передавать, компьютер должен со своей стороны включить CLK.
Устройство передаёт последовательно:
    старт-бит — всегда ноль;
    8 бит данных;
    бит чётности;
    стоп-бит — всегда единица.
Устройство устанавливает/меняет сигнал Data, когда Clock находится в логической единице. Контроллер на материнской плате читает данные, когда Clock находится в логическом нуле
.
… Т.е клавиатура, с одной стороны, обнаружила нажатую на себе кнопку, а с другой то, что на CLK единица уже более 50 микросекунд. Она устанавливает значение на информационном канале  (включено -1, выключено – 0) и только после этого на какое-то время выключает CLK, чтобы протолкнуть информацию в компьютер. Т.е на событие пина счетчика нужно вешать обработчик прерывания, сигнализирующий о том, что надо читать уже положеные на информационный канал данные.
Передаётся информационный пакет, позволяющий контролировать корректность информации. Если нет начального нуля и конечной единицы, то это ненастоящий пакет информации. А если переданный бит чётности не равен тому, что можно посчитать по переданным 8 битам, то что-то не так с переданной информацией.
Программа должна быть примерно такая же как для приёмника радиосигнала. Только в момент прихода волны счётчика надо считывать то, что находится на канале данных, а не записывать продолжительность волны.

Просмотров: 83 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
«  Октябрь 2022  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz