Taula de continguts:
- Subministraments
- Pas 1: Circuit elèctric
- Pas 2: Muntatge
- Pas 3: Programació
- Pas 4: Configuració de les dreceres
- Pas 5: millores
Vídeo: Teclat programable: 5 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
En aquest projecte mostraré com fer un teclat programable relativament senzill i econòmic per mapear les dreceres de teclat, les aplicacions i molt més.
Aquest teclat es detecta com a teclat en tots els sistemes operatius principals, no calen controladors addicionals.
Subministraments
- Codificador rotatiu.
- Molts botons (depèn de les vostres necessitats).
- Arduino Pro Micro, Arduino Leonardo o qualsevol altra placa de desenvolupament amb MCU Atmega32U4.
- Filferro, soldadura, soldador, etc.
- (Opcional) Alguna base pesada per evitar que el teclat es llisqui, estic fent servir un disc dur de 3,5"
Pas 1: Circuit elèctric
Vaig optar per utilitzar la placa de desenvolupament Arduino Pro Micro amb la MCU Atmega32U4 que té 18 pins digitals utilitzables.
Els pins per connectar els botons i el codificador rotatiu es van seleccionar sense tenir en compte cap ordre particular, però cal tenir en compte algunes coses:
- Tots els pins digitals que tenen capacitat de lectura tenen extraccions internes que permeten mitigar les resistències desplegables externes. Per descomptat, el codi s’ha d’actualitzar en conseqüència, perquè s’espera que l’estat del passador vagi de més baix a més alt quan es premen els botons.
- A l'exemple de la biblioteca encoder.h es va assenyalar que s'aconsegueix el millor rendiment del codificador quan els dos pins connectats a l'MCU interrompen els pins capaços. La majoria dels pins analògics d'Atmega32U4 no tenen capacitat d'interrupció.
- Els valors exactes de la resistència desplegable no tenen gaire importància, qualsevol cosa des d’1 kΩ fins a 100 kΩ funcionarà bé. Els valors de resistència més grans permeten una menor dissipació de potència, però es tradueix en una resposta més lenta dels pins als canvis de voltatge. Només heu de triar les resistències de valor que tingueu més.
- Els codificadors mecànics no són les coses més fiables a causa del desgast dels contactes i dels rebots. Per això, cal una bona solució de denúncia. Els valors dels condensadors que he escollit i els temps de retard del codi probablement no us proporcionaran els millors resultats. Per tant, cal una mica d’experimentació. O canvieu a alguna cosa com un codificador òptic, però el seu preu és significativament més alt.
Pas 2: Muntatge
Volia fer que el teclat fos el més net possible, de manera que vaig soldar tots els components a la part posterior del tauler prototip. Vaig pensar que el teclat seria més ergonòmic si s’utilitzés elevat amb un angle reduït. És per això que he soldat Arduino Pro Micro en una placa separada i he connectat tots els pins digitals amb filferro per prémer els botons. És més còmode connectar el cable USB d’aquesta manera.
He trobat un disc dur de 3,5 antic per fer-lo servir com a base per al teclat, és bastant pesat i evita que la taula es pugui lliscar per sobre de l'escriptori durant el funcionament (els coixinets antilliscants també ajuden). va fixar el tauler amb un angle lleuger.
Pas 3: Programació
El codi està escrit amb Arduino IDE. Haureu d’instal·lar dues biblioteques:
- Codificador de Paul Stoffregen
- Teclat d'Arduino
Per compilar Atmega32U4, també heu d’instal·lar el fitxer de placa Arduino Pro Micro, Sparkfun té un gran tutorial sobre com fer-ho.
Una cosa que cal tenir en compte per endavant és tenir cura de no deixar "tecles premudes" al vostre codi. Això em va passar i MCU constantment enviava correu brossa a alguna combinació de tecles. L’única manera de saber com solucionar-ho és tornar a gravar el carregador d’arrencada a MCU. Si acabareu com jo, podeu seguir aquesta guia per gravar el carregador d'arrencada, necessitareu una altra placa arduino per utilitzar-la com a programador.
Al MCU del bucle principal es llegeix primer cada estat del polsador, si es detecta un canvi d'estat de BAIX a ALT, s'executa la funció keyboard_shortcut (i). La variable i és un identificador del botó premut, el nombre total de botons està definit per ALL_BUTTONS (en el meu cas 15). Quan s'executa, keyboard_shortcut (i) envia CTRL + MAJÚS i, a continuació, una lletra assignada a l'identificador de botó: 1-> A, 2-> B, 3-> C, etc. S'ometen algunes combinacions com CTRL + MAJÚS + N perquè ja s’utilitza a Windows10 per defecte (en aquest cas per crear una carpeta nova). Aquí teniu la llista de totes les dreceres de Windows per defecte. Després d'un curt retard, la MCU envia el senyal per deixar anar totes les tecles i la funció torna al bucle principal.
Després de comprovar tots els botons, l'MCU comprova si la posició del codificador rotatiu ha canviat i, si ho fa, keyboard_shortcut (i) s'executa amb un identificador únic.
Prémer el botó del codificador inverteix la variable booleana encoderButtonFlag. Quan es gira el codificador, s'envia una drecera diferent a l'ordinador, en funció de la direcció de rotació i del valor encoderButtonFlag.
Si debugFlag es defineix com a 1, els missatges de depuració s'envien mitjançant UART al monitor sèrie.
Pas 4: Configuració de les dreceres
El que fa cada drecera és vosaltres mateixos, tots tenim diferents preferències. Proporcionaré quines dreceres he configurat per a mi com a exemple. Estic fent servir Linux Mint 19.3 amb el gestor d’escriptori xfce4, de manera que els meus exemples consisteixen principalment en scripts bash, però també mostraré alguns exemples bàsics per a Windows10.
A la primera imatge podeu veure quins scripts he assignat a quines dreceres. Es fa des del menú de configuració de xfce, el procés per a això és senzill. Podeu trobar aquests scripts al meu dipòsit de GitHub
Els 6 botons més petits de la part inferior són per iniciar aplicacions com ara el navegador web o el gestor de fitxers; algunes d'aquestes aplicacions es diuen des de l'script start_only_one_app.sh, que obté tots els noms de les aplicacions iniciades i cerca l'aplicació que voleu iniciar. Si la finestra de l'aplicació ja existeix, es concentra, en cas contrari s'inicia la nova instància d'una aplicació.
Altres guions:
- 2nd_display_control.sh: activa / desactiva el segon monitor.
- moon_lamp.sh: encén / apaga la meva làmpada de lluna.
- pc_load.sh: crea una bombolla de notificació amb l'ús i les temperatures actuals de la CPU i la GPU.
- shutdown.sh: inicialitza l’aturada del PC amb 1 minut de retard i crea una bombolla de notificació en què es mostra el temps restant.
- spec_vpn.sh: es connecta a un servidor OpenVPN específic o, si ja existeix una connexió, es desconnecta del servidor.
- shortcut_controll.sh: pren l'ordre (més, menys, tabulador, tancar) com a argument, detecta quina finestra està enfocada i si es troba una aplicació específica activa, executa l'acció de control. Per exemple, per obrir una nova pestanya a la drecera predeterminada de l'editor de text sublim és "CTRL + N" i al terminal xfce - "CTRL + T", de manera que aquest script permet obrir una nova pestanya en sublim i terminal amb el mateix polsador.
La primera funció del codificador rotatiu és controlar el volum, la segona funció és controlar el zoom de la finestra activa mitjançant shortcut_controll.sh.
Per al sistema operatiu Windows podeu assignar dreceres a aplicacions mitjançant la finestra de propietats del programa, tal com es mostra a la segona imatge. Per a qualsevol altra cosa, voldreu utilitzar AutoHotkey. És un llenguatge de seqüència d’ordres d’automatització per a Windows.
Alguns exemples senzills de sintaxi AHK:
; Control de volum
^ + t:: Envia {Volume_Up}
tornar
^ + v:: Envia {Volume_Down}
tornar
; Tanca la finestra activa
^ + h:: WinGetTitle, Títol, A
PostMessage, 0x112, 0xF060,,,% Title%
tornar
; Apagada del PC
^ + b:: Executa apagat / s
Pas 5: millores
Algunes possibles millores:
- Polsadors de millor qualitat.
- El prototip de PCB es flexiona força quan es premen els botons.
- Il·luminació RGB per canviar de color en funció de la funció que estigui configurada el codificador rotatiu.
- Més botons (utilitzeu IC expansor IO).
- Millor codificador rotatiu (o millor solució de descompte).
Recomanat:
Dessuadora amb caputxa programable Stranger Things: 9 passos (amb imatges)
Dessuadora amb caputxa programable de Stranger Things: potser no haureu de passar temps en un món de monstres de malson, però de vegades només voleu portar una camisa que us digui que hi PODRIU viure totalment si volíeu. Com que aquesta camisa no existeix al mercat lliure, vam decidir fer-nos la nostra
DoReMiQuencer - Seqüenciador MIDI programable amb teclat: 7 passos
DoReMiQuencer - Seqüenciador MIDI programable amb teclat: aquest dispositiu va ser creat per utilitzar-lo amb VCVRack, un sintetitzador modular virtual creat per VCV, però que pot servir com a controlador MIDI d’ús general. Serveix com a seqüenciador o teclat MIDI, segons el mode seleccionat. Les notes MIDI mapades al ke
Teclat programable de cartró: 8 passos (amb imatges)
Teclat programable de cartró: a mesura que es desenvolupa la tecnologia, la gent vol que les coses siguin cada vegada més virtuals, però de vegades és molt més pràctic i convenient tenir alguna cosa física que pugui tocar i interactuar amb les seves pròpies mans. Un exemple de
Seqüenciador LED RGB programable (amb Arduino i Adafruit Trellis): 7 passos (amb imatges)
Seqüenciador LED RGB programable (amb Arduino i Adafruit Trellis): els meus fills volien que les tires LED de color il·luminessin els seus escriptoris i no volia fer servir un controlador de tires RGB enllaçat, perquè sabia que s’avorrien amb els patrons fixos tenen aquests controladors. També vaig pensar que seria una gran oportunitat per crear
Interfície de teclat amb 8051 i visualització de números de teclat en 7 segments: 4 passos (amb imatges)
Interfície de teclat amb 8051 i visualització de números de teclat en 7 segments: en aquest tutorial us explicaré com podem interfície de teclat amb 8051 i mostrar números de teclat en pantalla de 7 segments