Kazalo:

Programabilna tipkovnica: 5 korakov (s slikami)
Programabilna tipkovnica: 5 korakov (s slikami)

Video: Programabilna tipkovnica: 5 korakov (s slikami)

Video: Programabilna tipkovnica: 5 korakov (s slikami)
Video: Топ 5 скрытых полезных программ Windows 10 2024, Julij
Anonim
Programabilna tipkovnica
Programabilna tipkovnica
Programabilna tipkovnica
Programabilna tipkovnica

V tem projektu bom pokazal, kako narediti relativno preprosto in poceni programabilno tipkovnico za preslikavo vaših najpogosteje uporabljenih bližnjic na tipkovnici, aplikacij in še več.

Ta tipkovnica je zaznana kot tipkovnica v vseh večjih operacijskih sistemih, dodatni gonilniki niso potrebni.

Zaloge

  • Rotacijski dajalnik.
  • Veliko (odvisno od vaših potreb) gumbov.
  • Arduino Pro Micro, Arduino Leonardo ali katera koli druga razvojna plošča z Atmega32U4 MCU.
  • Žica, spajkanje, spajkalnik itd.
  • (Izbirno) Nekaj težkega podstavka za preprečevanje drsenja tipkovnice, uporabljam star 3,5 -palčni trdi disk

Korak: Električno vezje

Električno vezje
Električno vezje

Odločil sem se za uporabo Arduino Pro Micro dev plošče z Atmega32U4 MCU, ki ima 18 uporabnih digitalnih zatičev.

Zatiči za povezavo potisnih gumbov in vrtljivega dajalnika so bili izbrani brez posebnega naročila, vendar je treba opozoriti na nekatere stvari:

  1. Vsi zatiči, ki podpirajo digitalno branje, imajo notranje izvleke, ki omogočajo ublažitev zunanjih izvlečnih uporov. Seveda je treba kodo ustrezno posodobiti, saj pričakuje, da bo stanje pina od nizkega do visokega, ko pritisnete gumbe.
  2. V knjižnici encoder.h primer knjižnice ugotavlja, da je najboljša zmogljivost dajalnika dosežena, ko oba zatiča, povezana z MCU, prekineta zmožna zatiča. Večina analognih nožic Atmega32U4 nima zmožnosti prekinitve.
  3. Natančne vrednosti uporovnega upora niso pomembne, vse od 1 kΩ do 100 kΩ bo delovalo v redu. Večje vrednosti upora omogočajo manjši odvod moči, vendar povzročajo počasnejši odziv zatiča na spremembe napetosti. Samo izberite vrednostne upore, ki jih imate največ.
  4. Mehanski dajalniki zaradi obrabe stikov in odbijanja niso najbolj zanesljivi. Zato je potrebna dobra rešitev. Moje izbrane vrednosti kondenzatorja in čas zakasnitve v kodi vam verjetno ne bodo dali najboljših rezultatov. Zato je potrebno malo eksperimentiranja. Ali pa preklopite na nekaj podobnega optičnemu kodirniku, vendar je njegova cena bistveno višja.

2. korak: Montaža

Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža
Montaža

Želel sem, da je tipkovnica čim bolj čista, zato sem vse komponente spajkal na hrbtni strani prototipne plošče. Mislil sem, da bi bila tipkovnica bolj ergonomska, če bi jo uporabljali dvignjeno pod majhnim kotom. Zato sem Arduino Pro Micro spajkal na ločeno ploščo in vse digitalne zatiče z žico povezal s tipkami. Tako je bolj priročno priključiti kabel USB.

Našel sem star 3,5-palčni trdi disk za podlago za tipkovnico, ki je precej težak in preprečuje drsenje oblike plošče po mizi med delovanjem (pomagajo tudi protizdrsne blazinice). Prav tako ima priročne 3-milimetrske luknje za vijake, v katere sem privijal medenine in pritrdil ploščo pod rahlim kotom.

3. korak: Programiranje

Koda je napisana z Arduino IDE. Namestiti morate 2 knjižnici:

  • Kodirnik Paul Stoffregen
  • Arduino tipkovnica

Če želite prevesti za Atmega32U4, morate namestiti tudi datoteko plošče Arduino Pro Micro, Sparkfun ima odlične vaje, kako to storiti.

Ena stvar, ki jo morate vnaprej opozoriti, je, da v kodi ne pustite pritisnjenih tipk. To se mi je zgodilo in MCU je nenehno pošiljal neželeno pošto na neko kombinacijo tipk. Edini način, kako se zavedam, kako to popraviti, je, da znova naložim zagonski nalagalnik v MCU. Če boste na koncu kot jaz, lahko sledite temu priročniku za zapisovanje zagonskega nalagalnika, potrebovali boste drugo ploščo arduino, ki jo boste uporabljali kot programer.

V glavni zanki MCU najprej prebere vsako stanje gumba, če se zazna sprememba stanja iz LOW v HIGH, se izvede funkcija keyboard_shortcut (i). Spremenljivka i je id pritisnjenega gumba, skupno število tipk je definirano z VSE_BUTTONI (v mojem primeru 15). Ko se izvede, keyboard_shortcut (i) pošlje CTRL+SHIFT in nato črko, ki je preslikana v ID gumba: 1-> A, 2-> B, 3-> C itd. Nekatere kombinacije, kot je CTRL+SHIFT+N, so izpuščene, ker je privzeto že uporabljen v sistemu Windows10 (v tem primeru za ustvarjanje nove mape). Tu je seznam vseh privzetih bližnjic v sistemu Windows. Po kratki zakasnitvi MCU pošlje signal za sprostitev vseh tipk in funkcija izstopi nazaj v glavno zanko.

Ko so vsi gumbi preverjeni, MCU preveri, ali se je položaj rotacijskega dajalnika spremenil, in če se to zgodi, se tipkovnica_shortcut (i) izvede z edinstvenim ID -jem.

Pritisk gumba kodirnika obrne logično spremenljivko encoderButtonFlag. Ko je dajalnik zasukan, se v računalnik pošljejo različne bližnjice, odvisno od smeri vrtenja in vrednosti encoderButtonFlag.

Če je debugFlag nastavljeno na 1, se sporočila za odpravljanje napak pošljejo prek UART na serijski monitor.

4. korak: Konfiguriranje bližnjic

Konfiguriranje bližnjic
Konfiguriranje bližnjic
Konfiguriranje bližnjic
Konfiguriranje bližnjic

Vsaka bližnjica je odvisna tudi od vas, vsi imamo različne preference. Kot primer bom navedel bližnjice, ki sem jih nastavil zase. Uporabljam Linux Mint 19.3 z namiznim upraviteljem xfce4, zato moji primeri vključujejo predvsem bash skripte, vendar bom prikazal nekaj osnovnih primerov tudi za Windows10.

Na prvi sliki lahko vidite, katere skripte sem preslikal na katere bližnjice. To se naredi v meniju z nastavitvami xfce, postopek je preprost. Te skripte najdete v mojem skladišču GitHub

Manjši 6 gumbi na dnu so namenjeni zagonu aplikacij, kot sta spletni brskalnik ali upravitelj datotek. Nekatere od teh aplikacij se kličejo iz skripta start_only_one_app.sh, ki prikaže imena vseh zagnanih aplikacij in poišče aplikacijo, ki jo želite zagnati. Če okno aplikacije že obstaja, se osredotoči, sicer se zažene nov primerek aplikacije.

Drugi skripti:

  • 2nd_display_control.sh - vklopi/izklopi drugi monitor.
  • moon_lamp.sh - vklopi/izklopi mojo luno.
  • pc_load.sh - ustvari oblaček z obvestili o trenutni uporabi in temperaturah procesorja in grafičnega procesorja.
  • shutdown.sh - inicializira izklop računalnika z 1 -minutno zamudo in ustvari obvestilni mehurček, v katerem je prikazan preostali čas.
  • spec_vpn.sh - poveže se s posebnim strežnikom OpenVPN ali če povezava že obstaja, se prekine s strežnikom.
  • shortcut_controll.sh - sprejme ukaz (plus, minus, tab, close) kot argument, zazna, katero okno je zdaj osredotočeno, in če je določena aplikacija aktivna, izvede nadzorno dejanje. Na primer, za odpiranje novega zavihka v urejenem besedilu je privzeta bližnjica "CTRL+N" in v terminalu xfce - "CTRL+T", zato ta skript omogoča odpiranje novega zavihka v vzvišenem in terminalu z istim pritiskom na gumb.

Prva funkcija vrtljivega dajalnika je nadzor glasnosti, druga funkcija je nadzor aktivne povečave okna prek shortcut_controll.sh.

V operacijskem sistemu Windows lahko bližnjice do aplikacij preslikate prek okna lastnosti programa, kot je prikazano na drugi sliki. Za karkoli drugega boste želeli uporabiti AutoHotkey. To je skriptni jezik za avtomatizacijo za Windows.

Nekaj preprostih primerov sintakse AHK:

; Nadzor glasnosti

^+t:: Pošlji {Volume_Up}

vrnitev

^+v:: Pošlji {Volume_Down}

vrnitev

; Zapri aktivno okno

^+h:: WinGetTitle, Naslov, A

PostMessage, 0x112, 0xF060,,, %Naslov %

vrnitev

; Izklop računalnika

^+b:: Zaženi zaustavitev /s

5. korak: Izboljšave

Izboljšave
Izboljšave

Nekaj možnih izboljšav:

  • Gumbi boljše kakovosti.
  • Prototip PCB se precej upogne, ko pritisnete gumbe.
  • RGB osvetlitev za spreminjanje barve glede na to, za katero funkcijo je nastavljen rotacijski dajalnik.
  • Več gumbov (uporabite IC razširitelja IO).
  • Boljši rotacijski kodirnik (ali boljša rešitev za odstranjevanje).

Priporočena: