Orodha ya maudhui:

Keypad inayopangwa: Hatua 5 (na Picha)
Keypad inayopangwa: Hatua 5 (na Picha)

Video: Keypad inayopangwa: Hatua 5 (na Picha)

Video: Keypad inayopangwa: Hatua 5 (na Picha)
Video: Псевдо-вирус на python 2024, Julai
Anonim
Keypad inayopangwa
Keypad inayopangwa
Keypad inayopangwa
Keypad inayopangwa

Katika mradi huu nitaonyesha jinsi ya kutengeneza vitufe rahisi na vya bei rahisi vya kupanga ramani njia zako za mkato, matumizi na zaidi.

Kitufe hiki hugunduliwa kama kibodi katika OS zote kuu, hakuna dereva za ziada zinazohitajika.

Vifaa

  • Usimbuaji Rotary.
  • Kura ya (inategemea mahitaji yako) vifungo vya kushinikiza.
  • Arduino Pro Micro, Arduino Leonardo au bodi yoyote ya dev na Atmega32U4 MCU.
  • Waya, solder, chuma cha kutengeneza, nk.
  • (Hiari) Baadhi ya msingi mzito wa kuweka vitufe kutoka kuteleza, ninatumia HDD ya zamani ya 3.5

Hatua ya 1: Mzunguko wa Umeme

Mzunguko wa Umeme
Mzunguko wa Umeme

Nilichagua kutumia bodi ya Arduino Pro Micro dev na Atmega32U4 MCU ambayo ina pini 18 za dijiti zinazoweza kutumika.

Pini za kuunganisha vifungo vya kushinikiza na encoder ya rotary ilichaguliwa bila mpangilio fulani katika akili, lakini mambo mengine yanapaswa kuzingatiwa:

  1. Pini zote zenye uwezo wa kusoma kwa dijiti zina vuta nikuzi vya ndani ambavyo huruhusu kupunguza vipinga-nje vya nje. Kwa kweli nambari inapaswa kusasishwa ipasavyo, kwa sababu inatarajia hali ya pini kwenda kutoka chini hadi juu wakati vifungo vya kushinikiza vinabanwa.
  2. Katika mfano wa maktaba ya encoder.h ilibaini kuwa utendaji bora wa kisimbuzi hufikiwa wakati pini zote mbili zilizounganishwa na MCU zinakatiza pini zenye uwezo. Pini nyingi za Analog za Atmega32U4 hazina uwezo wa kukatiza.
  3. Maadili halisi ya kupinga-kuvuta haijalishi sana, chochote kutoka 1 kΩ hadi 100 kΩ kitafanya kazi vizuri. Thamani kubwa za upinzani huruhusu utaftaji mdogo wa nguvu lakini husababisha majibu ya polepole ya pini kwa mabadiliko ya voltage. Chagua tu vipinga vyovyote vya thamani unavyo zaidi.
  4. Usimbuaji wa mitambo sio vitu vya kuaminika zaidi kwa sababu ya kuvaa na kugongana. Ndio sababu suluhisho nzuri ya kujiondoa inahitajika. Maadili yangu yaliyochaguliwa ya capacitor na nyakati za kuchelewesha kwa nambari labda haitoi matokeo bora kwako. Kwa hivyo jaribio kidogo linahitajika. Au badili kwa kitu kama kisimbuzi cha macho, lakini bei yake ni kubwa zaidi.

Hatua ya 2: Mkutano

Mkutano
Mkutano
Mkutano
Mkutano
Mkutano
Mkutano
Mkutano
Mkutano

Nilitaka kutengeneza keypad iwe safi iwezekanavyo, kwa hivyo niliuza vitu vyote nyuma ya bodi ya mfano. Nilidhani kuwa keypad itakuwa ergonomic zaidi ikiwa ingetumika kuinuliwa kwa pembe ndogo. Ndio sababu niliuza Arduino Pro Micro kwenye ubao tofauti na nikaunganisha pini zote za dijiti na waya kushinikiza vifungo. Ni rahisi zaidi kuunganisha kebo ya USB kwa njia hiyo.

Nilipata HDD ya zamani ya 3.5 kutumia kama msingi wa keypad, nzito kabisa na inazuia fomu ya bodi kuteleza kwenye dawati wakati wa kufanya kazi (pedi za kuteleza husaidi pia). Pia ina mashimo ya visima ya milimita 3 ambayo nilikunja viwiko vya shaba na fasta bodi kwa pembe kidogo.

Hatua ya 3: Programu

Nambari imeandikwa na Arduino IDE. Utahitaji kufunga maktaba 2:

  • Encoder na Paul Stoffregen
  • Kinanda na Arduino

Kukusanya Atmega32U4 unahitaji pia kusanikisha faili ya bodi ya Arduino Pro Micro, Sparkfun ina mafunzo mazuri ya jinsi ya kufanya hivyo.

Jambo moja la kumbuka mapema ni kuwa mwangalifu usiondoke "funguo zilizobanwa" kwenye nambari yako. Hii ilinitokea na MCU ilikuwa ikitema spamming mchanganyiko muhimu wa waandishi wa habari. Njia pekee ninayojua jinsi ya kurekebisha hii ni kuchoma tena boot-loader kwa MCU. Ikiwa utaishia kama mimi, unaweza kufuata mwongozo huu kuchoma boot-loader, utahitaji bodi nyingine ya arduino kutumia kama programu.

Katika kitanzi kuu MCU inasoma kwanza kila hali ya kitufe cha kushinikiza, ikiwa mabadiliko ya hali kutoka LOW hadi HIGH hugunduliwa, kazi keyboard_shortcut (i) inatekelezwa. Variable i ni kitambulisho cha kitufe kilichobanwa, nambari ya kitufe cha kushinikiza imefafanuliwa na ALL_BUTTONS (kwa upande wangu 15). Unapotekelezwa, keyboard_shortcut (i) hutuma CTRL + SHIFT na kisha barua ambayo imewekwa kwa kitambulisho cha kitufe: 1-> A, 2-> B, 3-> C nk michanganyiko kama CTRL + SHIFT + N imeachwa kwa sababu ni tayari kutumika katika Windows10 kwa chaguo-msingi (katika kesi hii kuunda folda mpya). Hapa kuna orodha ya njia zote za mkato chaguomsingi za Windows. Baada ya kuchelewa kwa muda mfupi MCU hutuma ishara kutolewa vifunguo vyote na kazi hutoka tena kwenye kitanzi kuu.

Baada ya vifungo vyote kukaguliwa, MCU huangalia ikiwa nafasi ya usimbuaji wa rotary imebadilishwa na ikiwa inabadilika, keyboard_shortcut (i) inatekelezwa na id ya kipekee.

Kitufe cha Encoder bonyeza kitufe cha EncoderButtonFlag boolean variable. Wakati encoder inapozungushwa njia mkato tofauti hutumwa kwa PC, kulingana na mwelekeo wa kuzunguka na thamani ya encoderButtonFlag.

Ikiwa debugFlag imewekwa kwa ujumbe 1 wa utatuzi hutumwa kupitia UART kwa ufuatiliaji wa serial.

Hatua ya 4: Kusanidi njia za mkato

Inasanidi njia za mkato
Inasanidi njia za mkato
Inasanidi njia za mkato
Inasanidi njia za mkato

Kile kila njia ya mkato inafanya pia ni wewe, sisi sote tuna upendeleo tofauti. Nitatoa njia za mkato ambazo nimejiwekea kama mfano. Ninatumia Linux Mint 19.3 na xfce4 meneja wa desktop, kwa hivyo mifano yangu inahusisha maandishi ya bash, lakini nitaonyesha mifano ya msingi ya Windows10 pia.

Katika picha ya kwanza unaweza kuona ni hati gani nilizochora kwa njia za mkato. Imefanywa kutoka kwa menyu ya mipangilio ya xfce, mchakato wa hii ni sawa mbele. Unaweza kupata hati hizi kwenye hazina yangu ya GitHub

Vifungo vidogo 6 vya kushinikiza chini ni kuanzisha programu kama kivinjari cha wavuti au meneja wa faili, baadhi ya programu hizi huitwa kutoka kwa script ya start_only_one_app.sh, ambayo hupata majina yote ya programu zilizoanza na kutafuta programu unayotaka kuanza. Ikiwa dirisha la programu tayari lipo linazingatia, mwingine mfano mpya wa programu umeanza.

Hati zingine:

  • 2nd_display_control.sh - swichi kufuatilia pili ON / OFF.
  • moon_lamp.sh - inazima Taa yangu ya Mwezi ON / OFF.
  • pc_load.sh - inaunda kiputo cha arifa na matumizi ya sasa ya CPU na GPU na joto.
  • shutdown.sh - inazindua kuzima kwa PC na kucheleweshwa kwa dakika 1 na inaunda kiputo cha arifa ambayo wakati uliobaki unaonyeshwa.
  • spec_vpn.sh - inaunganisha kwa seva maalum ya OpenVPN au ikiwa unganisho tayari lipo, hukata kutoka kwa seva.
  • njia ya mkato_controll.sh - inachukua amri (pamoja, minus, tabo, karibu) kama hoja, hugundua ni dirisha gani ambalo limelenga sasa na ikiwa programu maalum inapatikana inapatikana inachukua hatua ya kudhibiti. Kwa mfano kufungua kichupo kipya kwa njia ya mkato ya mkato ya maandishi ya hali ya juu ni "CTRL + N" na kwenye terminal ya xfce - "CTRL + T", kwa hivyo hati hii inaruhusu kufungua kichupo kipya kwa hali ya juu na terminal na kitufe sawa cha kushinikiza.

Kazi ya kwanza ya kisimbuzi cha rotary ni kudhibiti sauti, kazi ya pili ni kudhibiti zoom inayotumika kupitia njia ya mkato_controll.sh.

Kwa Windows OS unaweza kuweka njia za mkato kwa programu kupitia dirisha la mali ya programu kama inavyoonekana kwenye picha ya pili. Kwa kitu kingine chochote utataka kutumia AutoHotkey. Ni lugha ya maandishi ya kiotomatiki ya Windows.

Baadhi ya mifano rahisi ya sintaksia ya AHK:

Udhibiti wa ujazo

^ + t:: Tuma {Volume_Up}

kurudi

^ + v:: Tuma {Volume_Down}

kurudi

; Funga dirisha linalotumika

^ + h:: WinGetTitle, Kichwa, A

Ujumbe wa Post, 0x112, 0xF060,,,% Kichwa%

kurudi

PC ya kuzima

^ + b:: Endesha kuzima / s

Hatua ya 5: Maboresho

Maboresho
Maboresho

Baadhi ya maboresho yanayowezekana:

  • Vifungo bora vya kushinikiza.
  • Mfano PCB hubadilika sana wakati vifungo vinabanwa.
  • Taa za RGB kubadilisha rangi kulingana na ni kazi ipi encoder ya rotary imewekwa.
  • Vifungo zaidi (tumia IO expander IC).
  • Usimbuaji bora wa rotary (au suluhisho bora la kuondoa).

Ilipendekeza: