Turinys:
- Prekės
- 1 žingsnis: elektros grandinė
- 2 žingsnis: Surinkimas
- 3 žingsnis: programavimas
- 4 veiksmas: nuorodų konfigūravimas
- 5 žingsnis: patobulinimai
Video: Programuojama klaviatūra: 5 žingsniai (su paveikslėliais)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Š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ė
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:
- 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.
- 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.
- 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.
- 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
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
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
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:
Programuojama moliūgų šviesa: 25 žingsniai (su nuotraukomis)
Programuojama moliūgų šviesa: ši instrukcija skirta programuojamai moliūgų šviesai gaminti naudojant ATTiny mikrovaldiklį. Tai buvo sukurta kaip mokomoji demonstracija, skirta visiems (8 metų ir vyresniems) pristatyti elektroniką ir programuoti mikrovaldiklius naudojant „Arduino IDE“. Pasviręs objektas
Lengvai programuojama laistymo sistema su „Arduino“: 4 žingsniai
Lengvai programuojama laistymo sistema su „Arduino“: Šis projektas išlaikys jūsų augalus gyvus be jokio įsikišimo kelias dienas ar net savaites. Apibendrinant tai paprasta programuojama laistymo sistema, maitinama „Arduino“. Jei jums patinka elektronika ir augalai, šis projektas yra skirtas jums. Tai aime
„Python“programuojama „pasidaryk pats“roboto ranka: 5 žingsniai
„Python“programuojama „pasidaryk pats“roboto ranka: kodėl reikia atlikti šį projektą: (a) išmokite valdyti robotinę ranką, faktiškai rašydami „Python“kodą. Tai suteiks jums išsamiausią valdymą, tuo pačiu pridedant kompiuterinį programavimą prie diržo ir mokantis sudėtingų registruotų variklių veikimo
Programuojama kartoninė klaviatūra: 8 žingsniai (su paveikslėliais)
Programuojama kartoninė klaviatūra: Tobulėjant technologijoms, žmonės nori, kad viskas taptų vis virtualiau, tačiau kartais tiesiog praktiškiau ir patogiau turėti ką nors fiziško, prie kurio galite prisiliesti ir sąveikauti savo rankomis. Vienas pavyzdys
Įvadas ir pamoka apie programuojamą maitinimo šaltinį!: 7 žingsniai
Įvadas ir mokomoji programa apie programuojamą maitinimo šaltinį!: Jei kada nors susimąstėte apie programuojamus maitinimo šaltinius, turite perskaityti šią instrukciją, kad gautumėte visas žinias. praktinis programuojamo maitinimo šaltinio pavyzdys. Taip pat visus, kurie domisi elektronika, prašome