Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Electrical Circuit
- Hakbang 2: Assembly
- Hakbang 3: Programming
- Hakbang 4: Pag-configure ng Mga Shortcut
- Hakbang 5: Mga Pagpapabuti
Video: Programmable Keypad: 5 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
Sa proyektong ito ipapakita ko kung paano gumawa ng medyo simple at murang programmable keypad para sa pagmamapa ng iyong pinaka ginagamit na mga keyboard shortcut, application at marami pa.
Ang keypad na ito ay napansin bilang keyboard sa lahat ng pangunahing OS, walang kinakailangang karagdagang mga driver.
Mga gamit
- Rotary encoder.
- Maraming (nakasalalay sa iyong mga pangangailangan) mga pindutan ng itulak.
- Arduino Pro Micro, Arduino Leonardo o anumang iba pang dev board kasama ang Atmega32U4 MCU.
- Wire, solder, soldering iron, atbp.
- (Opsyonal) Ang ilang mabibigat na base para sa pagpapanatili ng keypad mula sa pag-slide, gumagamit ako ng lumang 3.5 "HDD
Hakbang 1: Electrical Circuit
Pinili kong gamitin ang Arduino Pro Micro dev board na may Atmega32U4 MCU na mayroong 18 magagamit na mga digital na pin.
Ang mga pin upang ikonekta ang mga pindutan ng push at rotary encoder ay napili nang walang partikular na kaisipan, ngunit ang ilang mga bagay ay dapat tandaan:
- Ang lahat ng mga digital na may kakayahang basahin na mga pin ay may panloob na mga pull-up na nagbibigay-daan upang mapagaan ang panlabas na mga resistors ng pull-down. Siyempre ang code ay dapat na ma-update nang naaayon, dahil inaasahan nito ang estado ng pin na pumunta mula sa mababa hanggang sa mataas kapag ang mga pindutan ng push ay pinindot.
- Sa encoder.h halimbawa ng library na nabanggit na ang pinakamahusay na pagganap ng encoder ay naabot kapag ang parehong mga pin na konektado sa MCU ay nakakagambala sa may kakayahang mga pin. Karamihan sa mga analog na pin ng Atmega32U4 ay walang nakakagambalang kakayahan.
- Hindi mahalaga ang eksaktong mga halaga ng pull-down na risistor, ang anumang mula sa 1 kΩ hanggang 100 kΩ ay gagana nang maayos. Pinapayagan ng mas malaking halaga ng paglaban ang mas maliit na pagwawaldas ng kuryente ngunit nagreresulta sa mas mabagal na tugon ng pin sa mga pagbabago sa boltahe. Piliin lamang ang anumang halaga ng resistors na mayroon ka ng higit.
- Ang mga mekanikal na encoder ay hindi pinaka-maaasahang mga bagay dahil sa pagsusuot ng contact at pagba-bouncing. Iyon ang dahilan kung bakit kailangan ng isang mahusay na solusyon sa pag-debit. Ang aking napiling mga halaga ng capacitor at pagkaantala ng mga oras sa code ay marahil ay hindi magbibigay ng pinakamahusay na mga resulta para sa iyo. Kaya kailangan ng kaunting eksperimento. O lumipat sa isang bagay tulad ng optical encoder, ngunit ang presyo nito ay mas mataas nang mas mataas.
Hakbang 2: Assembly
Nais kong gawing malinis ang hitsura ng keypad, kaya hinangad ko ang lahat ng mga bahagi sa likuran ng prototype board. Naisip ko na ang keypad ay magiging mas ergonomic kung ginamit ito na nakataas sa maliit na anggulo. Iyon ang dahilan kung bakit hinihinang ko ang Arduino Pro Micro sa magkakahiwalay na board at konektado ang lahat ng mga digital na pin na may wire upang itulak ang mga pindutan. Mas maginhawa upang ikonekta ang USB cable sa ganoong paraan.
Natagpuan ko ang lumang 3.5 HDD na gagamitin bilang isang batayan para sa keypad, medyo mabigat at pinipigilan ang pag-slide ng board form sa buong desk kapag nagpapatakbo (tumutulong din ang mga anti-slip pad). Gayundin mayroon itong maginhawang 3 mm na butas ng tornilyo kung saan pinagsama ko ang mga standoff ng tanso at naayos ang board sa bahagyang anggulo.
Hakbang 3: Programming
Ang code ay nakasulat sa Arduino IDE. Kakailanganin mong mag-install ng 2 mga aklatan:
- Encoder ni Paul Stoffregen
- Keyboard ni Arduino
Upang makatipid para sa Atmega32U4 kailangan mo ring i-install ang Arduino Pro Micro board file, ang Sparkfun ay may mahusay na tutorial kung paano ito gawin.
Ang isang bagay na dapat tandaan nang maaga ay mag-ingat na huwag iwanan ang "mga pindutan na pinindot" sa iyong code. Nangyari ito sa akin at patuloy na nag-spam ang MCU ng ilang pangunahing kumbinasyon ng press. Ang tanging paraan na alam ko kung paano ayusin ito ay muling sunugin ang boot-loader sa MCU. Kung magtatapos ka tulad ko, maaari mong sundin ang gabay na ito upang sunugin ang boot-loader, kakailanganin mo ng isa pang arduino board upang magamit bilang isang programmer.
Sa pangunahing loop MCU unang nabasa ang bawat pindutan ng estado ng pindutan, kung ang pagbabago ng estado mula sa LOW to HIGH ay nakita, ang function na keyboard_shortcut (i) ay naisakatuparan. Ang variable na i ay isang id ng pinindot na pindutan, ang kabuuang numero ng pindutan ng push ay tinukoy ng ALL_BUTTONS (sa aking kaso 15). Kapag naisakatuparan, ang keyboard_shortcut (i) ay nagpapadala ng CTRL + SHIFT at pagkatapos ay isang sulat na nai-map sa button id: 1-> A, 2-> B, 3-> C atbp. Ang ilang mga kumbinasyon tulad ng CTRL + SHIFT + N ay tinanggal dahil ito ay ginamit na sa Windows10 bilang default (sa kasong ito upang lumikha ng isang bagong folder). Narito ang listahan ng lahat ng mga default na Windows shortcut. Pagkatapos ng maikling pagkaantala ang MCU ay nagpapadala ng signal upang palabasin ang lahat ng mga key at exit ng function pabalik sa pangunahing loop.
Matapos masuri ang lahat ng mga pindutan, susuriin ng MCU kung nagbago ang posisyon ng paikot na encoder at kung gagawin ito, ang keyboard_shortcut (i) ay naisakatuparan na may natatanging id.
Ang pindutan ng encoder pindutin ang invertts encoder ButtonFlag boolean variable. Kapag pinaikot ang encoder iba't ibang mga shortcut ay ipinadala sa PC, depende sa direksyon ng pag-ikot at halaga ng encoder ButtonFlag.
Kung ang debugFlag ay nakatakda sa 1 mga mensahe ng pag-debug ay ipinadala sa pamamagitan ng UART sa serial monitor.
Hakbang 4: Pag-configure ng Mga Shortcut
Ang ginagawa ng bawat shortcut ay nakasalalay din sa iyo, lahat tayo ay may iba't ibang mga kagustuhan. Ibibigay ko kung anong mga shortcut ang na-configure ko para sa aking sarili bilang isang halimbawa. Gumagamit ako ng Linux Mint 19.3 kasama ang xfce4 desktop manager, kaya't ang aking mga halimbawa ay pangunahing nagsasangkot ng mga script ng bash, ngunit magpapakita rin ako ng ilang pangunahing mga halimbawa para sa Windows10.
Sa unang larawan maaari mong makita kung aling mga script ang nai-mapa ko sa aling mga mga shortcut. Tapos na ito mula sa menu ng mga setting ng xfce, proseso para sa ito ay tuwid na pasulong. Mahahanap mo ang mga script na ito sa aking Repository ng GitHub
Ang mas maliit na 6 na pindutan ng push sa ibaba ay para sa pagsisimula ng mga application tulad ng web browser o file manager, ang ilan sa mga application na ito ay tinawag mula sa start_only_one_app.sh script, na nagsisimula sa lahat ng mga nagsimulang pangalan ng application at maghanap para sa application na nais mong simulan. Kung mayroon nang window ng application ay nakatuon ito, iba pang bagong halimbawa ng isang application ay nasimulan.
Iba pang mga script:
- 2nd_display_control.sh - lumilipat sa pangalawang monitor na ON / OFF.
- moon_lamp.sh - switch / I-OFF ang aking Moon Lamp.
- pc_load.sh - lumilikha ng bubble ng abiso sa kasalukuyang paggamit ng CPU at GPU at mga temperatura.
- shutdown.sh - pinasimulan ang pag-shutdown ng PC na may 1 minutong pagkaantala at lumilikha ng bubble ng notification kung saan ipinakita ang natitirang oras.
- spec_vpn.sh - kumokonekta sa tukoy na OpenVPN server o kung mayroon nang koneksyon, mag-disconnect mula sa server.
- shortcut_controll.sh - kumukuha ng utos (plus, minus, tab, close) bilang argument, nakita kung anong window ang nakatuon ngayon at kung ang tukoy na application ay matatagpuan na aktibong nagpapatupad ng pagkilos na kontrol. Halimbawa upang buksan ang bagong tab sa sublime text editor default na shortcut ay "CTRL + N" at sa xfce terminal - "CTRL + T", kaya pinapayagan ng script na ito na buksan ang bagong tab sa sublime at terminal na may parehong pindutan ng push.
Ang unang pag-andar ng rotary encoder ay upang makontrol ang dami, pangalawang pagpapaandar ay upang makontrol ang aktibong window zoom sa pamamagitan ng shortcut_controll.sh.
Para sa Windows OS maaari kang mag-map ng mga shortcut sa mga application sa pamamagitan ng window ng mga katangian ng programa tulad ng ipinakita sa pangalawang larawan. Para sa anumang bagay na gugustuhin mong gamitin ang AutoHotkey. Ito ang wika ng pag-script ng awtomatiko para sa Windows.
Ang ilang mga simpleng halimbawa ng AHK syntax:
; Pagkontrol sa dami
^ + t:: Ipadala ang {Volume_Up}
bumalik ka
^ + v:: Ipadala ang {Volume_Down}
bumalik ka
; Isara ang aktibong window
^ + h:: WinGetTitle, Pamagat, A
PostMessage, 0x112, 0xF060,,,% Pamagat%
bumalik ka
; Shutdown PC
^ + b:: Patakbuhin ang pag-shutdown / s
Hakbang 5: Mga Pagpapabuti
Ang ilang mga posibleng pagpapabuti:
- Mas mahusay na kalidad ng mga pindutan ng itulak.
- Ang prototype PCB ay medyo nagbaluktot kapag pinindot ang mga pindutan.
- Ang pag-iilaw ng RGB upang baguhin ang kulay depende sa kung aling function ng rotary encoder ang nakatakda.
- Higit pang mga pindutan (gumamit ng IO expander IC).
- Mas mahusay na rotary encoder (o mas mahusay na solusyon sa pag-debog).
Inirerekumendang:
2D Art Na May Programmable LEDs at Nako-customize na Base at Logo: 5 Hakbang (na may Mga Larawan)
2D Art Sa Programmable LEDs at Nako-customize na Base at Logo: Maligayang pagdating sa itinuturo! Ngayon, ipapakita ko sa iyo kung paano gumawa ng isang 2D Art Project na may isang logo at pangkalahatang disenyo na iyong pinili. Ginawa ko ang proyektong ito dahil maaari nitong turuan ang mga tao tungkol sa maraming mga kasanayan tulad ng pagprograma, mga kable, pagmomodelo ng 3D, at iba pa. Ito
Cardm Programmable Keypad: 8 Hakbang (na may Mga Larawan)
Cardboard Programmable Keypad: Tulad ng pag-unlad ng teknolohiya, ang mga tao ay nagnanais ng mga bagay na maging mas at mas virtual subalit kung minsan ito ay mas praktikal at maginhawa upang magkaroon ng isang bagay na pisikal na maaari mong hawakan at makipag-ugnay sa iyong sariling mga kamay. Isang halimbawa ng
Programmable RGB LED Sequencer (gamit ang Arduino at Adafruit Trellis): 7 Mga Hakbang (na may Mga Larawan)
Programmable RGB LED Sequencer (gamit ang Arduino at Adafruit Trellis): Nais ng aking mga anak na lalaki ang mga LED strip ng kulay upang magaan ang kanilang mga mesa, at hindi ko nais na gumamit ng isang naka-kahong RGB strip controller, dahil alam kong magsawa sila sa mga nakapirming pattern ang mga kumokontrol na ito ay mayroon. Naisip ko rin na magiging isang magandang pagkakataon upang lumikha
Keypad Interface Sa 8051 at Pagpapakita ng Mga Numero ng Keypad sa 7 Segment: 4 na Hakbang (na may Mga Larawan)
Keypad Interface Sa 8051 at Pagpapakita ng Mga Numero ng Keypad sa 7 Segment: Sa tutorial na ito sasabihin ko sa iyo ang tungkol sa kung paano namin mai-interface ang keypad sa 8051 at ipinapakita ang mga numero ng keypad sa 7 segment na pagpapakita
Programmable Watch na May Apat na Character Display: 5 Hakbang (na may Mga Larawan)
Napaprogramang Panonood Sa Apat na Pagpapakita ng Character: Magsasalita ka ng bayan kapag nagsusuot ka ng nakakasuklam, sobrang laki, ganap na hindi praktikal na relo ng relo. Ipakita ang iyong paboritong masamang wika, lyrics ng kanta, pangunahing numero, atbp. May inspirasyon ng Microreader kit, nagpasya akong gumawa ng isang higanteng relo gamit ang