Tartalomjegyzék:

Programozható billentyűzet: 5 lépés (képekkel)
Programozható billentyűzet: 5 lépés (képekkel)

Videó: Programozható billentyűzet: 5 lépés (képekkel)

Videó: Programozható billentyűzet: 5 lépés (képekkel)
Videó: Weboldal készítésről 5 perc alatt (Egyszerűbb nem is lehetne...) 2024, November
Anonim
Programozható billentyűzet
Programozható billentyűzet
Programozható billentyűzet
Programozható billentyűzet

Ebben a projektben megmutatom, hogyan lehet viszonylag egyszerű és olcsó programozható billentyűzetet készíteni a leggyakrabban használt billentyűparancsok, alkalmazások és egyebek feltérképezésére.

Ezt a billentyűzetet minden fő operációs rendszer billentyűzetként észleli, nincs szükség további illesztőprogramokra.

Kellékek

  • Forgó kódoló.
  • Sok (igényeitől függően) nyomógomb.
  • Arduino Pro Micro, Arduino Leonardo vagy bármely más fejlesztőlap Atmega32U4 MCU -val.
  • Drót, forrasztópáka, forrasztópáka stb.
  • (Opcionális) Nehéz alap a billentyűzet elcsúszásának megakadályozására, régi, 3,5 hüvelykes HDD -t használok

1. lépés: Elektromos áramkör

Elektromos áramkör
Elektromos áramkör

Az Arduino Pro Micro dev kártyát választottam az Atmega32U4 MCU -val, amely 18 használható digitális tűvel rendelkezik.

A nyomógombok és a forgó kódoló összekötő csapjait különös sorrend nélkül választottuk ki, de néhány dolgot meg kell jegyezni:

  1. Minden digitális olvasásra alkalmas csap belső felhúzással rendelkezik, amely lehetővé teszi a külső lehúzható ellenállások mérséklését. Természetesen a kódot ennek megfelelően kell frissíteni, mert azt várja, hogy a nyomógombok megnyomásakor a tű állapota alacsonyról magasra emelkedik.
  2. Az encoder.h könyvtári példában megjegyezték, hogy a kódoló legjobb teljesítménye akkor érhető el, ha az MCU -hoz csatlakoztatott mindkét érintkező megszakítja a megfelelő csapokat. Az Atmega32U4 analóg csapjainak többsége nem rendelkezik megszakítási képességgel.
  3. A lehúzható ellenállás pontos értékei nem sokat számítanak, 1 kΩ-tól 100 kΩ-ig minden jól működik. A nagyobb ellenállási értékek kisebb teljesítményveszteséget tesznek lehetővé, de lassabb tüskés reakciót eredményeznek a feszültségváltozásokra. Csak válassza ki a legtöbb értékű ellenállást.
  4. A mechanikus kódolók nem a legmegbízhatóbbak az érintkezők kopása és ugrálása miatt. Ezért van szükség egy jó visszavonási megoldásra. A kiválasztott kondenzátor értékeim és késleltetési idők a kódban valószínűleg nem fogják a legjobb eredményt nyújtani az Ön számára. Tehát egy kis kísérletezésre van szükség. Vagy váltson valami optikai kódolóra, de az ára lényegesen magasabb.

2. lépés: Összeszerelés

Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés

Azt akartam, hogy a billentyűzet a lehető legtisztább legyen, ezért minden alkatrészt forrasztottam a prototípus tábla hátoldalán. Arra gondoltam, hogy a billentyűzet ergonomikusabb lenne, ha kis szögben felemelve használnánk. Ezért forrasztottam az Arduino Pro Micro -t külön táblára, és az összes digitális tűt vezetékekkel csatlakoztattam a nyomógombokhoz. Kényelmesebb így csatlakoztatni az USB -kábelt.

Találtam egy régi, 3,5 hüvelykes HDD-t, amely a billentyűzet alapjául szolgálhat, meglehetősen nehéz, és megakadályozza, hogy a tábla formája működés közben elcsússzon az asztalon (a csúszásgátló párnák is segítenek). Kényelmes 3 mm-es csavarlyukakkal rendelkezik, amelyekbe sárgaréz állványokat csavartam és enyhe szögben rögzítette a táblát.

3. lépés: Programozás

A kódot Arduino IDE -vel írják. 2 könyvtárat kell telepítenie:

  • Kódoló: Paul Stoffregen
  • Arduino billentyűzet

Az Atmega32U4 fordításához az Arduino Pro Micro táblafájlt is telepítenie kell, a Sparkfun nagyszerű oktatóanyaggal rendelkezik.

Egy dolog, amit előre meg kell jegyezni, legyen óvatos, hogy ne hagyja "lenyomva" a kódot. Ez történt velem, és az MCU folyamatosan spamelt valamilyen billentyűkombinációt. Az egyetlen módja annak, hogy tisztában legyek ennek kijavításával, ha újraindítom a rendszerbetöltőt az MCU-ba. Ha végül olyan lesz, mint én, akkor kövesse ezt az útmutatót a rendszerbetöltő írásához, és szüksége lesz egy másik arduino táblára a programozó használatához.

A főhurokban az MCU először leolvassa az összes nyomógomb állapotot, ha LOW -ról HIGH -ra vált állapotot észlel, a keyboard_shortcut (i) függvény végrehajtásra kerül. Az i változó a lenyomott gomb azonosítója, a nyomógombok teljes számát ALL_BUTTONS határozza meg (esetemben 15). Futtatáskor a keyboard_shortcut (i) elküldi a CTRL+SHIFT billentyűt, majd egy betűt, amely a gomb azonosítójára van leképezve: 1-> A, 2-> B, 3-> C stb. Egyes kombinációk, például a CTRL+SHIFT+N, elmaradnak, mert alapértelmezés szerint már használatban van a Windows10 rendszerben (ebben az esetben új mappa létrehozásához). Itt található az összes alapértelmezett Windows parancsikon. Rövid késleltetés után az MCU jelzést küld az összes gomb elengedéséhez, és a funkció kilép a főhurokba.

Az összes gomb ellenőrzése után az MCU ellenőrzi, hogy a forgó jeladó helyzete megváltozott -e, és ha igen, akkor a keyboard_shortcut (i) egyedi azonosítóval hajtódik végre.

A kódológomb megnyomása megfordítja az encoderButtonFlag logikai változót. Amikor a kódolót elforgatják, a számítógépen különböző parancsikonok érkeznek, a forgásiránytól és az encoderButtonFlag értékétől függően.

Ha a debugFlag beállítása 1 hibakeresési üzenet, akkor UART -on keresztül kerül soros monitorra.

4. lépés: Parancsikonok konfigurálása

Parancsikonok konfigurálása
Parancsikonok konfigurálása
Parancsikonok konfigurálása
Parancsikonok konfigurálása

Amit az egyes parancsikonok tesznek, az Önre is vonatkozik, mindannyian eltérő preferenciákkal rendelkezünk. Példaként bemutatom, hogy milyen parancsikonokat konfiguráltam magamnak. Linux Mint 19.3 -at használok xfce4 asztali kezelővel, így példáim főleg bash szkripteket tartalmaznak, de mutatok néhány alapvető példát a Windows10 -re is.

Az első képen láthatja, hogy mely parancsfájlokat milyen parancsikonokhoz rendeltem. Ez az xfce beállítások menüjéből történik, ennek folyamata egyszerű. Ezeket a szkripteket megtalálhatja a GitHub lerakatomban

Az alsó 6 nyomógomb olyan alkalmazások indítására szolgál, mint a webböngésző vagy a fájlkezelő, ezek közül néhányat a start_only_one_app.sh szkriptből hívnak meg, amely lekéri az összes elindított alkalmazás nevét és megkeresi az indítani kívánt alkalmazást. Ha az alkalmazásablak már létezik, akkor fókuszál, különben egy új alkalmazáspéldány indul el.

Egyéb szkriptek:

  • 2nd_display_control.sh - be-/kikapcsolja a második monitort.
  • moon_lamp.sh - BE/KI kapcsolja a Holdlámpámat.
  • pc_load.sh - értesítési buborékot hoz létre a CPU és a GPU aktuális használatával és hőmérsékleteivel.
  • shutdown.sh - inicializálja a számítógép leállítását 1 perces késéssel, és értesítési buborékot hoz létre, amelyben a hátralévő idő jelenik meg.
  • spec_vpn.sh - csatlakozik egy adott OpenVPN szerverhez, vagy ha már létezik kapcsolat, akkor bontja a kapcsolatot a szerverrel.
  • shortcut_controll.sh - a parancsot (plusz, mínusz, tab, bezárás) argumentumként veszi fel, észleli, hogy melyik ablak van most fókuszálva, és ha egy adott alkalmazást aktívnak talál, végrehajtja a vezérlőműveletet. Például az új lap megnyitásához a fenséges szövegszerkesztőben az alapértelmezett parancsikon a "CTRL+N", az xfce terminálban pedig a "CTRL+T", így ez a szkript lehetővé teszi új lap megnyitását fenséges és terminálon ugyanazzal a nyomógombbal.

A forgó kódoló első funkciója a hangerő szabályozása, második funkciója az aktív ablaknagyítás vezérlése a shortcut_controll.sh segítségével.

Windows operációs rendszer esetén a parancsikonokat az alkalmazásokhoz rendelheti a programtulajdonságok ablakán keresztül, ahogyan a második kép mutatja. Bármi máshoz az AutoHotkey -t kell használni. Ez a Windows automatizálási szkriptnyelve.

Néhány egyszerű példa az AHK szintaxisára:

;Hangerőszabályozó

^+t:: Küldés {Volume_Up}

Visszatérés

^+v:: Küldés {Volume_Down}

Visszatérés

; Zárja be az aktív ablakot

^+h:: WinGetTitle, Title, A

PostMessage, 0x112, 0xF060,,, %Cím %

Visszatérés

PC leállítása

^+b:: Leállítás /s futtatása

5. lépés: Javítások

Fejlesztések
Fejlesztések

Néhány lehetséges fejlesztés:

  • Jobb minőségű nyomógombok.
  • A NYÁK prototípusa eléggé hajlítható, ha megnyomja a gombokat.
  • RGB világítás a színváltáshoz, attól függően, hogy a forgó jeladó melyik funkcióra van állítva.
  • További gombok (használja az IO bővítő IC -t).
  • Jobb forgó kódoló (vagy jobb visszaváltó megoldás).

Ajánlott: