Мазмұны:

Бағдарламаланатын пернетақта: 5 қадам (суреттермен)
Бағдарламаланатын пернетақта: 5 қадам (суреттермен)

Бейне: Бағдарламаланатын пернетақта: 5 қадам (суреттермен)

Бейне: Бағдарламаланатын пернетақта: 5 қадам (суреттермен)
Бейне: 32 Секретные Комбинации Для Вашей Клавиатуры 2024, Қараша
Anonim
Бағдарламаланатын пернетақта
Бағдарламаланатын пернетақта
Бағдарламаланатын пернетақта
Бағдарламаланатын пернетақта

Бұл жобада мен ең жиі қолданылатын пернелер тіркесімдерін, қосымшаларды және т.б. салыстыру үшін салыстырмалы түрде қарапайым және арзан бағдарламаланатын пернетақтаны қалай жасау керектігін көрсетемін.

Бұл пернетақта барлық негізгі ОЖ -де пернетақта ретінде анықталады, қосымша драйверлер қажет емес.

Жабдықтар

  • Айналмалы кодер.
  • Көптеген түймелер (сіздің қажеттіліктеріңізге байланысты).
  • Arduino Pro Micro, Arduino Leonardo немесе Atmega32U4 MCU бар кез келген басқа тақта.
  • Сым, дәнекер, дәнекерлеу темірі және т.б.
  • (Қосымша) Пернетақтаның сырғып кетпеуін қамтамасыз ететін ауыр негіз, мен ескі 3,5 дюймдік қатты дискіні қолданамын

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 кітапхананы орнату қажет:

  • Пол Штофрегеннің кодтаушысы
  • Arduino пернетақтасы

Atmega32U4 үшін компиляция жасау үшін сізге Arduino Pro Micro тақта файлын орнату қажет, Sparkfun мұны қалай жасау керектігін үйретеді.

Алдын ала назар аударатын бір нәрсе - кодта «кілттер басылмай» қалмауы үшін абай болу. Бұл менімен болды және MCU үнемі пернелер тіркесімін жіберіп отырады. Мұны қалай түзетуге болатынын білетін жалғыз әдіс-жүктеушіні MCU-ге қайта жазу. Егер сіз мен сияқты болсаңыз, жүктеуді жүктеу үшін осы нұсқаулықты орындауға болады, сізге бағдарламашы ретінде пайдалану үшін басқа arduino тақтасы қажет болады.

Негізгі циклде MCU алдымен басудың әр күйін оқиды, егер күйдің LOW -дан HIGH -ға ауысуы анықталса, keyboard_shortcut (i) функциясы орындалады. Айнымалы мән - бұл басылған түйменің идентификаторы, түймелердің жалпы саны ALL_BUTTONS арқылы анықталады (менің жағдайда 15). Орындаған кезде keyboard_shortcut (i) CTRL+SHIFT, содан кейін идентификатор түймесімен салыстырылатын әріпті жібереді: 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 - ағымдағы процессор мен GPU қолданысы мен температурасы бар хабарландыру көпіршігін жасайды.
  • shutdown.sh - 1 минуттық кідіріспен дербес компьютерді өшіруді инициализациялайды және қалған уақыт көрсетілетін хабарландыру қалқымасын жасайды.
  • spec_vpn.sh - белгілі бір OpenVPN серверіне қосылады немесе байланыс бұрыннан болса, серверден ажыратылады.
  • shortcut_controll.sh - аргумент ретінде пәрменді (плюс, минус, қойынды, жабу) қабылдайды, қазір қандай терезе фокусталғанын анықтайды және егер арнайы бағдарлама табылса, басқару әрекетін орындайды. Мысалы, жоғары мәтіндік редакторда жаңа қойынды ашу үшін әдепкі «CTRL+N» және xfce терминалында «CTRL+T» болады, сондықтан бұл сценарий жаңа басылымды жоғары және терминалда бірдей батырмамен ашуға мүмкіндік береді.

Айналмалы кодердің бірінші функциясы - дыбыс деңгейін басқару, екінші функция - shortcut_controll.sh арқылы терезенің белсенді масштабын басқару.

Windows ОЖ үшін екінші суретте көрсетілгендей бағдарлама сипаттары терезесі арқылы қосымшаларға сілтемелерді салыстыруға болады. Басқа нәрселер үшін сіз AutoHotkey қолданғыңыз келеді. Бұл Windows үшін автоматтандырылған сценарий тілі.

AHK синтаксисінің кейбір қарапайым мысалдары:

Дыбыс деңгейін бақылау

^+t:: {Volume_Up} жіберу

қайтару

^+v:: {Volume_Down} жіберу

қайтару

; Белсенді терезені жабу

^+с:: WinGetTitle, Тақырып, А.

PostMessage, 0x112, 0xF060,,, %Тақырып %

қайтару

; ДК өшіру

^+b:: shutdown /s іске қосыңыз

5 -қадам: жақсартулар

Жақсартулар
Жақсартулар

Кейбір мүмкін жақсартулар:

  • Жақсы сапалы түймелер.
  • ПХД прототипі батырмалар басылған кезде айтарлықтай бүгіледі.
  • Айналмалы кодер қай функцияға орнатылғанына байланысты түсін өзгерту үшін RGB жарығы.
  • Қосымша түймелер (IO кеңейтуші IC пайдаланыңыз).
  • Жақсы айналмалы кодер (немесе жақсы дебунг шешімі).

Ұсынылған: