Turinys:

Programuojama klaviatūra: 5 žingsniai (su paveikslėliais)
Programuojama klaviatūra: 5 žingsniai (su paveikslėliais)

Video: Programuojama klaviatūra: 5 žingsniai (su paveikslėliais)

Video: Programuojama klaviatūra: 5 žingsniai (su paveikslėliais)
Video: Tekstų rengyklė – 3 dalis. Teksto lygiuotės. 5 klasei 2024, Liepa
Anonim
Programuojama klaviatūra
Programuojama klaviatūra
Programuojama klaviatūra
Programuojama klaviatūra

Šiame projekte parodysiu, kaip sukurti palyginti paprastą ir nebrangią programuojamą klaviatūrą, kad būtų galima susieti dažniausiai naudojamus sparčiuosius klavišus, programas ir dar daugiau.

Ši klaviatūra aptinkama kaip klaviatūra visose pagrindinėse OS, papildomų tvarkyklių nereikia.

Prekės

  • Rotacinis kodavimo įrenginys.
  • Daug (priklauso nuo jūsų poreikių) mygtukų.
  • „Arduino Pro Micro“, „Arduino Leonardo“ar bet kuri kita kūrėjų lenta su „Atmega32U4 MCU“.
  • Viela, lituoklis, lituoklis ir kt.
  • (Neprivaloma) Sunkus pagrindas, kad klaviatūra neslystų, naudoju seną 3,5 colio HDD

1 žingsnis: elektros grandinė

Elektros grandinė
Elektros grandinė

Aš nusprendžiau naudoti „Arduino Pro Micro dev“plokštę su „Atmega32U4 MCU“, kurioje yra 18 tinkamų naudoti skaitmeninių kaiščių.

Smeigtukai, skirti prijungti mygtukus ir sukamąjį kodavimo įrenginį, buvo pasirinkti neatsižvelgiant į tam tikrą tvarką, tačiau reikėtų atkreipti dėmesį į kai kuriuos dalykus:

  1. Visi skaitmeninio skaitymo kaiščiai turi vidinius ištraukimus, kurie leidžia sušvelninti išorinius ištraukiamus rezistorius. Žinoma, kodas turėtų būti atitinkamai atnaujinamas, nes tikimasi, kad paspaudus mygtukus, kaiščio būsena pereis nuo žemos iki aukščiausios.
  2. Encoder.h bibliotekos pavyzdyje pažymėta, kad geriausias kodavimo įrenginio veikimas pasiekiamas, kai abu prie MCU prijungti kaiščiai nutraukia galimus kaiščius. Dauguma analoginių „Atmega32U4“kaiščių neturi pertraukimo galimybės.
  3. Tikslios nuleidžiamos rezistoriaus vertės neturi didelės reikšmės, viskas nuo 1 kΩ iki 100 kΩ veiks gerai. Didesnės pasipriešinimo vertės leidžia mažinti galios išsisklaidymą, tačiau lėtas kaiščio atsakas į įtampos pokyčius. Tiesiog pasirinkite labiausiai vertingus rezistorius.
  4. Mechaniniai kodavimo įrenginiai nėra patys patikimiausi dėl kontaktų nusidėvėjimo ir atšokimo. Štai kodėl reikalingas geras pašalinimo sprendimas. Mano pasirinktos kondensatoriaus vertės ir kodo atidėjimo laikas tikriausiai nesuteiks jums geriausių rezultatų. Taigi reikia šiek tiek eksperimentuoti. Arba perjunkite kažką panašaus į optinį kodavimo įrenginį, tačiau jo kaina yra žymiai didesnė.

2 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Norėjau, kad klaviatūra atrodytų kuo švaresnė, todėl visus komponentus lituosiu prototipo plokštės gale. Aš supratau, kad klaviatūra būtų ergonomiškesnė, jei ji būtų naudojama pakelta mažu kampu. Štai kodėl aš litavau „Arduino Pro Micro“ant atskiros plokštės ir prijungiau visus skaitmeninius kaiščius laidais prie mygtukų. Taip patogiau prijungti USB kabelį.

Radau seną 3,5 colio HDD, kurį galima naudoti kaip pagrindą klaviatūrai, jis yra gana sunkus ir neleidžia plokštės formai slysti per stalą (taip pat padeda neslidžios pagalvėlės). Taip pat jame yra patogios 3 mm varžtų skylės, į kurias įsukau žalvario atramas ir pritvirtino plokštę nedideliu kampu.

3 žingsnis: programavimas

Kodas parašytas naudojant „Arduino IDE“. Jums reikės įdiegti 2 bibliotekas:

  • Koderis Paulius Stoffregenas
  • Arduino klaviatūra

Norėdami sudaryti „Atmega32U4“, taip pat turite įdiegti „Arduino Pro Micro“plokštės failą, „Sparkfun“turi puikią pamoką, kaip tai padaryti.

Vienas dalykas, į kurį reikia atkreipti dėmesį iš anksto, - būkite atsargūs ir nepalikite „klavišų paspaustų“savo kode. Tai atsitiko man, o MCU nuolat šlamšto kai kuriuos klavišų paspaudimus. Vienintelis būdas, kuriuo žinau, kaip tai išspręsti, yra iš naujo įrašyti įkrovos įkroviklį į MCU. Jei baigsite kaip aš, galite sekti šį vadovą, kad įrašytumėte įkrovos įkėlimo programą, jums reikės kitos arduino plokštės, kad galėtumėte naudoti kaip programuotoją.

Pagrindinėje grandinėje MCU pirmiausia nuskaito kiekvieną mygtuko būseną, jei aptinkamas būsenos pasikeitimas iš LOW į HIGH, vykdoma funkcija keyboard_shortcut (i). Kintamasis i yra paspausto mygtuko ID, bendras mygtukų skaičius apibrėžiamas ALL_BUTTONS (mano atveju 15). Vykdant klaviatūros klavišą (i) siunčiami CTRL+SHIFT ir tada raidė, susieta su mygtuko ID: 1-> A, 2-> B, 3-> C ir tt Kai kurie deriniai, pvz., CTRL+SHIFT+N, praleidžiami, nes pagal numatytuosius nustatymus jau naudojamas sistemoje „Windows10“(šiuo atveju, norint sukurti naują aplanką). Čia yra visų numatytųjų „Windows“nuorodų sąrašas. Po trumpo delsimo MCU siunčia signalą, kad atleistų visus klavišus, o funkcija išeina atgal į pagrindinę kilpą.

Patikrinus visus mygtukus, MCU patikrina, ar nepasikeitė sukamojo kodavimo įrenginio padėtis, ir jei pasikeičia, klaviatūros_spartas (i) vykdomas su unikaliu ID.

Kodavimo mygtuko paspaudimas apverčia encoderButtonFlag loginį kintamąjį. Kai kodavimo įrenginys pasukamas, į kompiuterį siunčiamas kitas spartusis klavišas, atsižvelgiant į sukimosi kryptį ir „encoderButtonFlag“vertę.

Jei „debugFlag“nustatyta į 1 derinimo pranešimus, jie siunčiami per UART į serijinį monitorių.

4 veiksmas: nuorodų konfigūravimas

Nuorodų konfigūravimas
Nuorodų konfigūravimas
Nuorodų konfigūravimas
Nuorodų konfigūravimas

Tai, ką daro kiekviena nuoroda, priklauso ir nuo jūsų, mes visi turime skirtingas nuostatas. Kaip pavyzdį pateiksiu, kokias nuorodas sukonfigūravau sau. Aš naudoju „Linux Mint 19.3“su „xfce4“darbalaukio tvarkykle, todėl mano pavyzdžiai daugiausia susiję su „bash“scenarijais, tačiau taip pat parodysiu keletą pagrindinių „Windows10“pavyzdžių.

Pirmoje nuotraukoje galite pamatyti, kuriuos scenarijus susiejau su kokiais sparčiaisiais klavišais. Tai daroma iš „xfce“nustatymų meniu, o procesas yra tiesioginis. Šiuos scenarijus galite rasti mano „GitHub“saugykloje

Mažesni 6 mygtukai apačioje skirti paleisti programas, pvz., Žiniatinklio naršyklę ar failų tvarkyklę, kai kurios iš šių programų yra iškviečiamos iš scenarijaus start_only_one_app.sh, kuriame pateikiami visų paleistų programų pavadinimai ir ieškoma programa, kurią norite pradėti. Jei programos langas jau yra, jis sutelkiamas, kitaip pradedamas naujas programos egzempliorius.

Kiti scenarijai:

  • 2nd_display_control.sh - įjungia/išjungia antrą monitorių.
  • moon_lamp.sh - įjungia/išjungia mano mėnulio lempą.
  • pc_load.sh - sukuria pranešimų debesėlį su dabartiniu CPU ir GPU naudojimu bei temperatūra.
  • shutdown.sh - inicijuoja kompiuterio išjungimą su 1 minutės vėlavimu ir sukuria pranešimų burbulą, kuriame rodomas likęs laikas.
  • spec_vpn.sh - prisijungia prie konkretaus „OpenVPN“serverio arba, jei ryšys jau yra, atsijungia nuo serverio.
  • shortcut_controll.sh - priima komandą (pliusas, minusas, skirtukas, uždaryti) kaip argumentą, nustato, koks langas dabar yra sutelktas, ir jei konkreti programa yra aktyvi, atlieka valdymo veiksmą. Pavyzdžiui, norint atidaryti naują skirtuką didingame teksto redaktoriuje, numatytasis spartusis klavišas yra „CTRL+N“, o „xfce“terminale - „CTRL+T“, todėl šis scenarijus leidžia atidaryti naują skirtuką didingame ir terminale tuo pačiu mygtuku.

Pirmoji sukamojo kodavimo funkcija yra garsumo valdymas, antroji - aktyvaus lango mastelio valdymas naudojant shortcut_controll.sh.

„Windows“operacinėje sistemoje galite susieti programų nuorodas per programos ypatybių langą, kaip parodyta antrame paveikslėlyje. Visiems kitiems dalykams norėsite naudoti „AutoHotkey“. Tai automatizavimo scenarijų kalba, skirta „Windows“.

Keletas paprastų AHK sintaksės pavyzdžių:

;Garso valdymas

^+t:: Siųsti {Volume_Up}

grįžti

^+v:: Siųsti {Volume_Down}

grįžti

; Uždaryti aktyvų langą

^+h:: WinGetTitle, Title, A

PostMessage, 0x112, 0xF060,,, %Pavadinimas %

grįžti

; Išjungti kompiuterį

^+b:: Vykdyti išjungimą /s

5 žingsnis: patobulinimai

Patobulinimai
Patobulinimai

Kai kurie galimi patobulinimai:

  • Geresnės kokybės mygtukai.
  • Paspaudus mygtukus, prototipo PCB gana daug lankstosi.
  • RGB apšvietimas keičia spalvą, priklausomai nuo to, kuri funkcija yra sukamajame kodavimo įrenginyje.
  • Daugiau mygtukų (naudokite IO plėtiklio IC).
  • Geresnis sukamasis kodavimo įrenginys (arba geresnis išjungimo sprendimas).

Rekomenduojamas: