INHOUDSOPGAWE:

Programmeerbare toetsbord: 5 stappe (met foto's)
Programmeerbare toetsbord: 5 stappe (met foto's)

Video: Programmeerbare toetsbord: 5 stappe (met foto's)

Video: Programmeerbare toetsbord: 5 stappe (met foto's)
Video: Dit ging niet zoals ik had verwacht..😳 2024, Julie
Anonim
Programmeerbare sleutelbord
Programmeerbare sleutelbord
Programmeerbare sleutelbord
Programmeerbare sleutelbord

In hierdie projek sal ek wys hoe u 'n relatief eenvoudige en goedkoop programmeerbare toetsbord kan maak om u mees gebruikte kortpaaie, toepassings en meer in kaart te bring.

Hierdie bedieningspaneel word as sleutelbord in alle groot bedryfstelsels bespeur, geen bykomende bestuurders is nodig nie.

Voorrade

  • Rotary encoder.
  • Baie (hang af van u behoeftes) drukknoppies.
  • Arduino Pro Micro, Arduino Leonardo of enige ander ontwikkelbord met Atmega32U4 MCU.
  • Draad, soldeer, soldeerbout, ens.
  • (Opsioneel) Ek gebruik 'n ou 3,5 "HDD as 'n sterk basis om te verhoed dat die toetsbord gly

Stap 1: Elektriese stroombaan

Elektriese stroombaan
Elektriese stroombaan

Ek het gekies om die Arduino Pro Micro dev -bord te gebruik met Atmega32U4 MCU met 18 bruikbare digitale penne.

Die penne om drukknoppies en draaikodeerders aan te sluit, is gekies sonder om 'n spesifieke volgorde in gedagte te hou, maar 'n paar dinge moet in ag geneem word:

  1. Alle penne wat digitaal gelees is, het interne optrekkies waarmee eksterne aftrekweerstande verminder kan word. Uiteraard moet die kode dienooreenkomstig opgedateer word, want dit verwag dat die toestand van die pen van laag na hoog sal gaan as drukknoppies ingedruk word.
  2. In die encoder.h -biblioteekvoorbeeld is opgemerk dat die beste prestasie van die encoder bereik word wanneer beide penne wat aan MCU verbind is, onderbreek kan word. Die meeste analoog penne van Atmega32U4 het nie onderbrekingsvermoë nie.
  3. Presiese waardes van die aftrekweerstand maak nie veel saak nie; enigiets van 1 kΩ tot 100 kΩ sal goed werk. Groter weerstandswaardes laat kleiner kragverlies toe, maar lei tot 'n stadiger reaksie van die pen op spanningsveranderings. Kies net watter waardeweerstands u die meeste het.
  4. Meganiese encoders is nie die betroubaarste dinge as gevolg van kontakverlies en weerkaatsing nie. Daarom is 'n goeie ontkoppelingsoplossing nodig. My gekose kondensatorwaardes en vertragingstye in die kode lewer waarskynlik nie die beste resultate vir u nie. So 'n bietjie eksperimentering is nodig. Of skakel oor na iets soos optiese encoder, maar die prys daarvan is aansienlik hoër.

Stap 2: Montering

Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering

Ek wou die toetsbord so skoon moontlik maak, en ek het alle komponente aan die agterkant van die prototipe bord gesoldeer. Ek het gedink dat die toetsbord meer ergonomies sou wees as dit teen 'n klein hoek verhoog word. Daarom het ek Arduino Pro Micro op 'n aparte bord gesoldeer en alle digitale penne met 'n draad verbind om die knoppies te druk. Dit is geriefliker om so 'n USB -kabel aan te sluit.

Ek het gevind dat 'n ou 3,5 HDD as basis vir die toetsbord gebruik kan word; dit is taamlik swaar en voorkom dat die bord oor die lessenaar gly terwyl dit werk (antislipblokkies help ook). Dit het ook gerieflike 3 mm-skroefgate waarin ek koperblokke afgeskroef het en maak die bord skuins vas.

Stap 3: Programmering

Die kode is geskryf met Arduino IDE. U sal 2 biblioteke moet installeer:

  • Encoder deur Paul Stoffregen
  • Sleutelbord deur Arduino

Om vir Atmega32U4 saam te stel, moet u ook die Arduino Pro Micro -kaartlêer installeer; Sparkfun het 'n uitstekende handleiding om dit te doen.

Een ding om vooraf op te let, is om versigtig te wees om nie "sleutels ingedruk" in u kode te laat nie. Dit het met my gebeur en MCU het voortdurend 'n kombinasie van 'n druk op die strooipos gespam. Die enigste manier waarop ek weet hoe om dit op te los, is om die laaiprogram weer na die MCU te verbrand. As u soos ek sal eindig, kan u hierdie gids volg om die laaiprogram te verbrand; u benodig nog 'n arduino-bord om as programmeerder te gebruik.

In die hooflus lees die MCU eers elke drukknoppie -toestand, as toestandverandering van LAAG na HOOG opgespoor word, word die funksie keyboard_shortcut (i) uitgevoer. Veranderlike i is 'n id van die gedrukte knoppie; die totale drukknoppie word gedefinieer deur ALL_BUTTONS (in my geval 15). As dit uitgevoer word, stuur keyboard_shortcut (i) CTRL+SHIFT en dan word 'n letter wat na knoppie-ID gekoppel is: 1-> A, 2-> B, 3-> C ens. Sommige kombinasies soos CTRL+SHIFT+N word weggelaat omdat dit standaard reeds in Windows10 gebruik (in hierdie geval om 'n nuwe gids te skep). Hier is die lys van alle standaard Windows -kortpaaie. Na 'n kort vertraging stuur die MCU 'n sein om alle sleutels los te maak en funksies gaan terug na die hooflus.

Nadat alle knoppies gekontroleer is, kyk die MCU of die posisie van die roterende enkodeerder verander het, en as dit wel gebeur, word keyboard_shortcut (i) uitgevoer met 'n unieke ID.

Encoder knoppie druk omkeer encoderButtonFlag booleaanse veranderlike. As die encoder gedraai word, word 'n ander kortpad na die rekenaar gestuur, afhangende van die rotasierigting en die encoderButtonFlag -waarde.

As debugFlag op 1 ingestel is, word ontfoutingsboodskappe via UART na die seriële monitor gestuur.

Stap 4: Instel kortpaaie

Stel kortpaaie op
Stel kortpaaie op
Stel kortpaaie op
Stel kortpaaie op

Dit is ook u keuse wat elke kortpad doen, ons het almal verskillende voorkeure. Ek gee die kortpaaie wat ek vir myself opgestel het as 'n voorbeeld. Ek gebruik Linux Mint 19.3 met xfce4 lessenaarbestuurder, so my voorbeelde behels hoofsaaklik bash -skrifte, maar ek sal ook 'n paar basiese voorbeelde vir Windows10 wys.

Op die eerste prentjie kan u sien watter skrifte ek na watter kortpaaie gekarteer het. Dit word gedoen vanuit die xfce -instellingsmenu; die proses is eenvoudig. U kan hierdie skrifte in my GitHub -bewaarplek vind

Kleiner 6 drukknoppies onderaan is vir die aanvang van toepassings soos 'n webblaaier of lêerbestuurder, sommige van hierdie toepassings word genoem vanaf die start_only_one_app.sh -script, wat alle programme se name begin en soek na die program wat u wil begin. As die toepassingsvenster reeds bestaan, word dit gefokus, anders word 'n nuwe instansie van 'n toepassing begin.

Ander skrifte:

  • 2nd_display_control.sh - skakel die tweede monitor AAN/UIT.
  • moon_lamp.sh - skakel my maanlamp AAN/UIT.
  • pc_load.sh - skep 'n kennisgewingborrel met die huidige CPU- en GPU -gebruik en temperature.
  • shutdown.sh - initialiseer die afsluiting van die rekenaar met 'n vertraging van 1 minuut en skep 'n kennisgewingborrel waarin die oorblywende tyd vertoon word.
  • spec_vpn.sh - maak verbinding met 'n spesifieke OpenVPN -bediener, of as die verbinding reeds bestaan, word die bediener ontkoppel.
  • shortcut_controll.sh - neem bevel (plus, minus, tab, sluit) as argument, ontdek watter venster nou gefokus is en as 'n spesifieke toepassing gevind word, voer die beheeraksie uit. Byvoorbeeld, om 'n nuwe oortjie in die sublieme teksredakteur oop te maak, is die standaard kortpad "CTRL+N" en in xfce terminale - "CTRL+T", sodat hierdie script die nuwe oortjie in die sublieme en terminale met dieselfde drukknop kan oopmaak.

Die eerste funksie van die roterende encoder is om volume te beheer, die tweede funksie is om die aktiewe vensterzoom via shortcut_controll.sh te beheer.

Vir Windows -bedryfstelsel kan u kortpaaie na toepassings toewys via die programeienskappe -venster, soos in die tweede prentjie getoon. Vir enigiets anders wil u AutoHotkey gebruik. Dit is outomatiese skripttaal vir Windows.

Enkele voorbeelde van AHK -sintaksis:

; Volume beheer

^+t:: Stuur {Volume_Up}

terugkeer

^+v:: Stuur {Volume_Down}

terugkeer

; Maak die aktiewe venster toe

^+h:: WinGetTitle, titel, A

PostMessage, 0x112, 0xF060,,, %Title %

terugkeer

; Sluit rekenaar af

^+b:: Begin afsluit /s

Stap 5: Verbeterings

Verbeterings
Verbeterings

Enkele moontlike verbeterings:

  • Drukknoppies van beter gehalte.
  • Prototipe PCB buig baie as knoppies ingedruk word.
  • RGB -beligting om van kleur te verander, afhangende van watter funksie roterende encoder is ingestel.
  • Meer knoppies (gebruik IO expander IC).
  • Beter roterende enkodeerder (of beter ontkoppelingsoplossing).

Aanbeveel: