Sisukord:

Programmeeritav klahvistik: 5 sammu (piltidega)
Programmeeritav klahvistik: 5 sammu (piltidega)

Video: Programmeeritav klahvistik: 5 sammu (piltidega)

Video: Programmeeritav klahvistik: 5 sammu (piltidega)
Video: Смарт-Часы Maimo Watch - Детальный ОБЗОР + ТЕСТЫ 2024, November
Anonim
Programmeeritav klahvistik
Programmeeritav klahvistik
Programmeeritav klahvistik
Programmeeritav klahvistik

Selles projektis näitan, kuidas teha suhteliselt lihtsaid ja odavaid programmeeritavaid klahvistikke enimkasutatud kiirklahvide, rakenduste jm kaardistamiseks.

See klaviatuur tuvastatakse klaviatuurina kõigis suuremates operatsioonisüsteemides, täiendavaid draivereid pole vaja.

Tarvikud

  • Pöörlev kodeerija.
  • Palju (sõltub teie vajadustest) nuppe.
  • Arduino Pro Micro, Arduino Leonardo või mõni muu arendusplaat koos Atmega32U4 MCU -ga.
  • Traat, joodis, jootekolb jne.
  • (Valikuline) Mõni raske alus klaviatuuri libisemise vältimiseks, kasutan vana 3,5 -tollist kõvaketast

Samm: elektriahel

Elektriahel
Elektriahel

Ma otsustasin kasutada Arduino Pro Micro dev plaati koos Atmega32U4 MCU -ga, millel on 18 kasutatavat digitaalset tihvti.

Nööpnõelte ja pöörleva kodeerija ühendamiseks mõeldud tihvtid valiti ilma erilist järjekorda silmas pidades, kuid mõned asjad tuleb märkida:

  1. Kõigil digitaalselt loetavatel tihvtidel on sisemised tõmbetõmbed, mis võimaldavad leevendada väliseid tõmbetakistusi. Loomulikult tuleks koodi vastavalt uuendada, sest see eeldab, et tihvti olek läheb nuppude vajutamisel madalast kõrgeks.
  2. Teatises encoder.h märgiti, et kodeerija parim jõudlus saavutatakse siis, kui mõlemad MCU -ga ühendatud tihvtid katkestavad võimelised tihvtid. Enamikul Atmega32U4 analoog -tihvtidel pole katkestamisvõimalust.
  3. Täpsed tõmbetakistite väärtused ei oma suurt tähtsust, kõik vahemikus 1 kΩ kuni 100 kΩ töötab hästi. Suuremad takistuse väärtused võimaldavad väiksemat võimsuse hajumist, kuid pinge muutustele reageerib tihvt aeglasemalt. Valige lihtsalt need väärtustakistid, mida teil kõige rohkem on.
  4. Mehaanilised kodeerijad ei ole kontaktide kulumise ja põrkumise tõttu kõige usaldusväärsemad asjad. Sellepärast on vaja head väljalülituslahendust. Minu valitud kondensaatori väärtused ja viiteajad koodis ei anna teile tõenäoliselt parimaid tulemusi. Seega on vaja natuke katsetada. Või lülitage midagi optilise kodeerija sarnast, kuid selle hind on oluliselt kõrgem.

2. samm: kokkupanek

Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek

Tahtsin muuta klahvistiku võimalikult puhtaks, nii et jootsin kõik prototüüpplaadi tagaküljel olevad komponendid. Arvasin, et klahvistik oleks ergonoomilisem, kui seda kasutada väikese nurga all. Sellepärast jootsin Arduino Pro Micro eraldi plaadile ja ühendasin kõik digitaalsed tihvtid juhtmega nuppudega. USB -kaablit on sel viisil mugavam ühendada.

Leidsin vana 3,5-tollise kõvaketta, mida kasutada klaviatuuri alusena, see on üsna raske ja takistab plaadivormi libisemist töölaual (ka libisemisvastased padjad aitavad). Samuti on sellel mugavad 3 mm kruviavad, millesse keerasin messingist vaheseinad ja plaat kerge nurga all kinnitatud.

3. samm: programmeerimine

Kood on kirjutatud Arduino IDE -ga. Peate installima 2 raamatukogu:

  • Kooder Paul Stoffregen
  • Arduino klaviatuur

Atmega32U4 jaoks kompileerimiseks peate installima ka Arduino Pro Micro tahvlifaili, Sparkfunil on suurepärane õpetus, kuidas seda teha.

Üks asi, mida tuleb eelnevalt märkida, on olla ettevaatlik, et mitte jätta oma koodis "klahve vajutatud". See juhtus minuga ja MCU saatis pidevalt mõnda klahvivajutuse kombinatsiooni. Ainus viis, kuidas seda parandada, on alglaaduri uuesti MCU-sse põletamine. Kui jõuate lõpuks nagu mina, võite käivituslaaduri põletamiseks järgida seda juhendit. Programmeerijana kasutamiseks on teil vaja teist arduino plaati.

Põhiahelas loeb MCU esmalt iga nupu olekut, kui tuvastatakse oleku muutus LOW -st kõrgeks, käivitatakse funktsioon keyboard_shortcut (i). Muutuja i on vajutatud nupu ID, nuppude koguarv on määratletud ALL_BUTTONS (minu puhul 15). Kui see käivitatakse, saadab klaviatuuri_klahvikombinatsioon (i) CTRL+SHIFT ja seejärel tähe, mis on kaardistatud nupu ID-ga: 1-> A, 2-> B, 3-> C jne. Mõned kombinatsioonid, näiteks CTRL+SHIFT+N, jäetakse välja, kuna Windows 10 -s juba vaikimisi kasutusel (antud juhul uue kausta loomiseks). Siin on kõigi Windowsi vaikimisi otseteede loend. Pärast lühikest viivitust saadab MCU signaali kõigi klahvide vabastamiseks ja funktsioon väljub tagasi põhiahelasse.

Pärast kõigi nuppude kontrollimist kontrollib MCU, kas pöördkodeerija asend on muutunud, ja kui see muutub, käivitatakse klaviatuuri_lülitus (i) unikaalse ID -ga.

Kodeerija nupuvajutus pöörab encoderButtonFlag loogilise muutuja ümber. Koodri pööramisel saadetakse arvutisse erinev otsetee, sõltuvalt pöörlemissuunast ja encoderButtonFlag väärtusest.

Kui debugFlag on seatud 1 silumissõnumile, saadetakse UART kaudu jadamonitorile.

Samm: otseteede seadistamine

Otseteede seadistamine
Otseteede seadistamine
Otseteede seadistamine
Otseteede seadistamine

See, mida iga otsetee teeb, sõltub ka teist, meil kõigil on erinevad eelistused. Toon näitena, millised otseteed enda jaoks seadistasin. Ma kasutan Linux Mint 19.3 koos xfce4 töölauahalduriga, nii et minu näited hõlmavad peamiselt bash -skripte, kuid näitan ka mõningaid põhinäiteid Windows10 jaoks.

Esimesel pildil näete, millised skriptid millistele otseteedele kaardistasin. Seda tehakse xfce seadete menüüst, selle protsess on lihtne. Need skriptid leiate minu GitHubi hoidlast

Väiksemad 6 vajutusnuppu allosas on mõeldud selliste rakenduste käivitamiseks nagu veebibrauser või failihaldur. Mõnda neist rakendustest kutsutakse skriptiga start_only_one_app.sh, mis saab kõigi käivitatud rakenduste nimed ja otsib rakendust, mida soovite käivitada. Kui rakenduse aken on juba olemas, keskendutakse sellele, muidu käivitatakse uus rakenduse eksemplar.

Muud skriptid:

  • 2nd_display_control.sh - lülitab teise monitori sisse/välja.
  • moon_lamp.sh - lülitab kuulambi sisse/välja.
  • pc_load.sh - loob teavitusmulli praeguse CPU ja GPU kasutamise ning temperatuuridega.
  • shutdown.sh - käivitab arvuti väljalülitamise 1 -minutilise viivitusega ja loob teavitusmulli, milles kuvatakse järelejäänud aeg.
  • spec_vpn.sh - loob ühenduse konkreetse OpenVPN -serveriga või kui ühendus on juba olemas, katkestab ühenduse serveriga.
  • shortcut_controll.sh - võtab argumendina käsu (pluss, miinus, sakk, sulge), tuvastab, milline aken on nüüd fokuseeritud ja kui konkreetne rakendus leitakse aktiivne, täidab juhtimistoimingu. Näiteks uue vahekaardi avamiseks ülevas tekstiredaktoris on vaikimisi otsetee "CTRL+N" ja terminalis xfce - "CTRL+T", seega võimaldab see skript avada uue vahelehe ülevas ja terminalis sama vajutusnupuga.

Pöörleva kodeerija esimene funktsioon on helitugevuse reguleerimine, teine funktsioon on akna aktiivse suumi juhtimine funktsiooni shortcut_controll.sh kaudu.

Windowsi operatsioonisüsteemi puhul saate otseteed rakendustele kaardistada programmi atribuutide akna kaudu, nagu on näidatud teisel pildil. Kõige muu jaoks soovite kasutada AutoHotkey. See on Windowsi automaatse skriptimise keel.

Mõned lihtsad näited AHK süntaksist:

; Helitugevuse reguleerimine

^+t:: Saada {Volume_Up}

tagasi

^+v:: Saada {Volume_Down}

tagasi

; Sulge aktiivne aken

^+h:: WinGetTitle, pealkiri, A

PostMessage, 0x112, 0xF060,,, %Pealkiri %

tagasi

; Arvuti väljalülitamine

^+b:: Käivita sulgemine /s

5. samm: täiustused

Parandused
Parandused

Mõned võimalikud parandused:

  • Parema kvaliteediga nupud.
  • PCB prototüüp paindub nuppude vajutamisel üsna palju.
  • RGB -valgustus, et muuta värvi sõltuvalt sellest, millisele funktsioonile pöördkodeerija on seatud.
  • Rohkem nuppe (kasutage IO -laiendi IC -d).
  • Parem pöörlev kodeerija (või parem tagasivoolulahendus).

Soovitan: