Мазмуну:

Программалануучу баскычтоп: 5 кадам (Сүрөттөр менен)
Программалануучу баскычтоп: 5 кадам (Сүрөттөр менен)

Video: Программалануучу баскычтоп: 5 кадам (Сүрөттөр менен)

Video: Программалануучу баскычтоп: 5 кадам (Сүрөттөр менен)
Video: ЖОГОРКУ ТАКТЫК PSU??? RIGOL DP832 Программалануучу электр булагы 2024, Июль
Anonim
Программалануучу баскычтоп
Программалануучу баскычтоп
Программалануучу баскычтоп
Программалануучу баскычтоп

Бул долбоордо мен эң көп колдонулган баскычтарды, тиркемелерди жана башкаларды картага түшүрүү үчүн салыштырмалуу жөнөкөй жана арзан программалоочу баскычты кантип жасоону көрсөтөм.

Бул баскычтоп бардык негизги ОСте клавиатура катары аныкталат, кошумча драйверлердин кереги жок.

Жабдуулар

  • Бюрократия коддогуч.
  • Көптөгөн (сиздин муктаждыктарыңызга жараша) баскычтар.
  • Arduino Pro Micro, Arduino Leonardo же Atmega32U4 MCU менен башка иштеп чыгуучу такта.
  • Сым, ширетүүчү, ширетүүчү ж.б.
  • (Кошумча) Баскычтоптун жылышына жол бербөө үчүн оор база, мен эски 3.5 "HDDди колдонуп жатам

1 -кадам: Электр схемасы

Электр микросхемасы
Электр микросхемасы

Мен Arduino Pro Micro dev тактасын Atmega32U4 MCU менен колдонууну туура көрдүм, анда 18 жарактуу санарип казык бар.

Баскычтарды жана айлануучу коддогучту туташтыруу үчүн казыктар эч кандай өзгөчө тартип менен тандалган, бирок кээ бир нерселерди эске алуу керек:

  1. Бардык санарип окууга жөндөмдүү казыктарда тышкы тартылуучу каршылыктарды жумшартууга мүмкүндүк берүүчү ички тартуулар бар. Албетте, код тийиштүү түрдө жаңыртылышы керек, анткени ал баскычтар басылганда, пиндин абалы төмөндөн жогору карай өтүшүн күтөт.
  2. Encoder.h китепканасында мисал белгилегендей, MCUга туташкан эки пин да жөндөмдүү казыктарды үзүп койгондо, кодердин эң жакшы иштөөсүнө жетишилет. Atmega32U4 аналогдук казыктарынын көпчүлүгүндө үзгүлтүккө учуроо мүмкүнчүлүгү жок.
  3. Түзүлүүчү резистордун мааниси анча деле маанилүү эмес, 1 кОмдон 100 кОмго чейин жакшы иштейт. Чоңураак каршылык көрсөткүчтөрү кубаттуулуктун кичирейишине мүмкүндүк берет, бирок чыңалуунун өзгөрүшүнө жайыраак пин жооп берет. Жөн гана сизде эң чоң мааниге ээ болгон резисторлорду тандаңыз.
  4. Байланыштын эскиришинен жана секиришинен механикалык кодерлер эң ишенимдүү нерселер эмес. Ошондуктан жакшы дебунинг чечими керек. Мен тандаган конденсатордун баалуулуктары жана коддун кечигүү убактысы, балким, сиз үчүн эң жакшы натыйжаларды бербейт. Андыктан бир аз эксперимент керек. Же оптикалык коддогонго окшош нерсеге өтүңүз, бирок анын баасы кыйла жогору.

2 -кадам: Ассамблея

Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея

Мен клавиатураны мүмкүн болушунча таза кылгым келди, ошондуктан прототип тактасынын артындагы бардык компоненттерди ширеттим. Мен кичине бурчта көтөрүлгөндө баскычтоптун эргономикалык болорун түшүндүм. Ошондуктан мен Arduino Pro Microду өзүнчө тактага кошуп, бардык санарип казыктарды зым менен түймөлөрдү басуу үчүн туташтырдым. USB кабелин ушинтип туташтыруу ыңгайлуу.

Мен эски 3,5 HDDди клавиатура үчүн база катары колдонууга таптым, анын салмагы өтө оор жана иштөө учурунда столдун үстүнөн жылып кетишине жол бербейт (тайып кетүүгө каршы блокноттор дагы жардам берет). Ошондой эле анын жезден жасалган бурулуштарын бурап койгон ыңгайлуу 3 мм бурама тешиктери бар. тактаны кичине бурчка бекитти.

3 -кадам: Программалоо

Код Arduino IDE менен жазылган. Сиз 2 китепкананы орнотушуңуз керек:

  • Encoder by Paul Stoffregen
  • Ардуино клавиатурасы

Atmega32U4 үчүн компиляция кылуу үчүн сиз Arduino Pro Micro такта файлын орнотушуңуз керек, Sparkfun муну кантип жасоо керектигин үйрөткүчкө ээ.

Алдын ала белгилей кетчү нерсе, кодуңузда "баскычтар басылып калбашы" үчүн этият болуңуз. Бул менде болгон жана MCU дайыма кээ бир баскычтардын комбинациясын спамдап турган. Муну кантип оңдоо керек экенин билүүнүн бирден-бир жолу-жүктөөчүдү MCUга кайра күйгүзүү. Эгерде сиз мага окшоп калсаңыз, жүктөөчү жүктөө үчүн бул көрсөтмөнү аткарсаңыз болот, сизге программист катары колдонуу үчүн башка arduino тактасы керек болот.

Негизги циклде MCU адегенде баскычтын ар бир абалын окуйт, эгер абалдын LOW ден HIGH чейин өзгөрүүсү аныкталса, keyboard_shortcut (i) функциясы аткарылат. Variable - басылган баскычтын идентификатору, баскычтын жалпы саны ALL_BUTTONS менен аныкталат (менин учурда 15). Аткарылганда, keyboard_shortcut (i) CTRL+SHIFT, андан кийин ID баскычына окшоштурулган кат жөнөтөт: 1-> A, 2-> B, 3-> C ж.б CTRL+SHIFT+N сыяктуу кээ бир комбинациялар алынып салынат, анткени ал мурунтан эле Windows10до колдонулат (бул учурда жаңы папканы түзүү үчүн). Бул жерде бардык демейки Windows кыска жолдорунун тизмеси. Кыска убакыттан кийин MCU бардык баскычтарды бошотуу үчүн сигнал жөнөтөт жана функция кайра негизги циклге чыгат.

Бардык баскычтар текшерилгенден кийин, MCU айлануучу коддогучтун позициясы өзгөргөнүн текшерет жана эгер өзгөрсө, keyboard_shortcut (i) уникалдуу идентификатор менен аткарылат.

Encoder баскычын басуу encoderButtonFlag логикалык өзгөрмөнү тескери бурат. Кодер айландырылганда, айлануу багытына жана encoderButtonFlag маанисине жараша, ар кандай кыска жолдор ЖКга жөнөтүлөт.

Эгерде debugFlag 1 деп жөндөлсө, UART аркылуу сериялык мониторго билдирүүлөр жөнөтүлөт.

4 -кадам: Жарлыктарды конфигурациялоо

Жарлыктарды конфигурациялоо
Жарлыктарды конфигурациялоо
Жарлыктарды конфигурациялоо
Жарлыктарды конфигурациялоо

Ар бир кыска жолдун эмне кылаарын өзүңүз чечесиз, бизде ар кандай каалоолор бар. Мен мисал катары өзүм үчүн конфигурациялаган кандай жарлыктарды берем. Мен Linux Mint 19.3тү xfce4 рабочий менеджери менен колдонуп жатам, ошондуктан менин мисалдарым негизинен bash скрипттерин камтыйт, бирок мен Windows10 үчүн дагы кээ бир негизги мисалдарды көрсөтөм.

Биринчи сүрөттө сиз кайсы скрипттерди кайсы жарлыктарга картага түшүргөнүмдү көрө аласыз. Бул xfce орнотуулары менюсунан жасалат, бул процесс түз алдыга жылат. Бул скрипттерди менин GitHub репозиторийимден таба аласыз

Төмөндөгү кичине 6 баскыч баскычы веб -браузер же файл менеджери сыяктуу тиркемелерди баштоо үчүн, кээ бир тиркемелер start_only_one_app.sh скрипти деп аталат, ал бардык башталган тиркемелердин аттарын алат жана сиз баштоону каалаган тиркемени издейт. Эгерде колдонмонун терезеси мурунтан эле бар болсо, анда ал көңүл бурат, башка тиркеменин жаңы нускасы башталат.

Башка скрипттер:

  • 2nd_display_control.sh - экинчи мониторду КҮЙГҮЗҮҮ/ӨЧҮРҮҮ.
  • moon_lamp.sh - менин Ай чырагымды КҮЙГҮЗҮП/ӨЧҮРӨТ.
  • pc_load.sh - учурдагы CPU жана GPU колдонуу жана температура менен кабарлоо көбүгүн түзөт.
  • shutdown.sh - 1 мүнөт кечигүү менен компьютерди өчүрүүнү баштайт жана калган убакыт көрсөтүлүүчү эскертме көбүгүн түзөт.
  • spec_vpn.sh - белгилүү бир OpenVPN серверине туташат же эгер байланыш мурунтан эле болсо, серверден ажыратылат.
  • shortcut_controll.sh - аргумент катары буйрукту (плюс, минус, табулатура, жабуу) алат, азыр кайсы терезенин фокусталгандыгын аныктайт жана эгерде конкреттүү колдонмо табылган болсо, контролдоо аракетин аткарат. Мисалы, жогорку текст редакторунда жаңы өтмөктү ачуу үчүн демейки жарлык "CTRL+N" жана xfce терминалында - "CTRL+T", ошондуктан бул скрипт бийик жана терминалда жаңы өтмөктү ошол эле баскыч менен ачууга мүмкүндүк берет.

Ротари коддогучтун биринчи функциясы - көлөмдү көзөмөлдөө, экинчиси - shortcut_controll.sh аркылуу активдүү терезе масштабын башкаруу.

Windows OS үчүн, экинчи сүрөттө көрсөтүлгөндөй, программанын касиеттери терезеси аркылуу колдонмолорго жарлыктарды картага түшүрсөңүз болот. Башка нерселер үчүн AutoHotkeyди колдонууну каалайсыз. Бул Windows үчүн автоматташтырылган скрипт тили.

AHK синтаксисинин кээ бир жөнөкөй мисалдары:

Үн көлөмүн көзөмөлдөө

^+t:: {Volume_Up} жөнөтүү

кайтуу

^+v:: {Volume_Down} жөнөтүү

кайтуу

; Активдүү терезени жабуу

^+h:: WinGetTitle, Аталышы, А.

PostMessage, 0x112, 0xF060,,, %Аталышы %

кайтуу

; ЖК өчүрүү

^+b:: Run shutdown /s

5 -кадам: жакшыртуулар

Жакшыртуулар
Жакшыртуулар

Кээ бир мүмкүн болгон жакшыртуулар:

  • Жакшыраак баскычтар.
  • PCB прототипи баскычтар басылганда бир топ ийилет.
  • Ротари коддоочу кайсы функцияга коюлганына жараша түсүн өзгөртүү үчүн RGB жарыктандыруусу.
  • Көбүрөөк баскычтар (IO кеңейтүүчү ICди колдонуңуз).
  • Жакшыраак айлануучу кодер (же жакшыраак ажыратуу чечими).

Сунушталууда: