Turinys:

„Arduino PS/2“į USB adapterį: 7 žingsniai (su nuotraukomis)
„Arduino PS/2“į USB adapterį: 7 žingsniai (su nuotraukomis)

Video: „Arduino PS/2“į USB adapterį: 7 žingsniai (su nuotraukomis)

Video: „Arduino PS/2“į USB adapterį: 7 žingsniai (su nuotraukomis)
Video: 1. Q Light Controller + pradedama naudoti QLC +. Šviestuvai ir funkcijos 2024, Liepa
Anonim
„Arduino PS/2“į USB adapterį
„Arduino PS/2“į USB adapterį
„Arduino PS/2“į USB adapterį
„Arduino PS/2“į USB adapterį

Ar kada nors norėjote naudoti seną PS/2 klaviatūrą su nešiojamuoju kompiuteriu ar nauju staliniu kompiuteriu ir sužinojote, kad juose nebėra PS/2 prievadų? Ir tada, užuot pirkę pigų PS/2 prie USB adapterį, kaip tai darytų įprastas žmogus, norėjote naudoti „Arduino“kaip PS/2 USB adapterį. Tada atėjai į reikiamą vietą:)

Sąžiningas įspėjimas, kol mes į jį neįeiname. Kai naudojate UNO/Mega kaip USB-HID įrenginį (neapsiribojant klaviatūra, tai gali būti net pelė, vairasvirtė ir pan.), Laikinai prarasite „Arduino“funkcijas. Turiu omenyje, kad negalite naudoti serijinio ryšio ir negalite jo perprogramuoti per USB. Taip yra todėl, kad perrašysime programinę-aparatinę įrangą jo USB sąsajos mikroschemoje (mažas vaikinas šalia USB prievado Atmega8U2 ir 16U2, priklausomai nuo peržiūros). Tačiau nesijaudinkite, kad iš tikrųjų negalite užmūryti savo UNO/Mega, nes tai visada yra grįžtama.

Taip pat atsitiktinai, jei turite „Arduino“, kuris jau turi USB-HID funkciją („Arduino Pro Micro“ar „Leonardo“ir tt, atlikite „Google“paiešką), galite pamiršti, kad kada nors egzistavusi pamokoma instrukcija yra čia, kad išgelbėtumėte save nuo bėdų pasaulio. juokauju!

Prekės

  • Techninė įranga
    • „Arduino UNO“arba „Mega“
    • PS/2 klaviatūra
    • Pasirinktinai gali praversti papildomas „Arduino“ar bet koks USB programuotojas („USBasp“ir kt.).
  • Programinė įranga
    • Atmel FLIP
    • „PS2KeyAdvanced“biblioteka, skirta „Arduino IDE“

1 žingsnis: laidų prijungimas ir nustatymas

Elektros instaliacija ir nustatymas
Elektros instaliacija ir nustatymas
Elektros instaliacija ir nustatymas
Elektros instaliacija ir nustatymas
Elektros instaliacija ir nustatymas
Elektros instaliacija ir nustatymas
Elektros instaliacija ir nustatymas
Elektros instaliacija ir nustatymas

Priklausomai nuo situacijos, galite rasti pertraukimo plokštę arba išgelbėti seną prievadą iš pagrindinės plokštės (antras mano bandymas) arba, jei jaučiatės ypač nusiteikę, netgi galite visiškai nupjauti violetinį lizdą ir atskleisti 4 laidus (pirmasis bandymas) ir prijungti juos prie UNO.

Klaviatūra _Arduino

+5V (VCC) _+5V

GROUND_GND

2 laikrodis **

DUOMENYS _ PIN3*

*Galite pakeisti DATA kaištį į ką tik norite, tačiau nepamirškite atnaujinti eskizo.

** „CLOCK“turi būti prijungtas prie „Arduino“pertraukimo kaiščio, kuris gali būti tik 2 arba 3 PIN kodas (nepamirškite atnaujinti eskizo) UNO. Norėdami gauti daugiau informacijos ir įvairių lentos konfigūracijų, galite peržiūrėti PS2KeyAdvanced bibliotekos pavyzdžių komentarų skiltį.

2 veiksmas: išbandykite klaviatūrą

Prieš eidami į rankas, pirmiausia įsitikinkite, kad viskas veikia klaviatūroje ir bibliotekoje.

Čia pridėjau pakeistą „SimpleTest.ino“versiją iš „PS2KeyAdvanced“bibliotekos pavyzdžių su atnaujintais laikrodžio ir duomenų kaiščiais, taip pat „padaryti“ir „pertrauka“. Štai keletas išvesties paaiškinimų.

  • Ši „make“ir „break“nuskaitymo kodo sistema ir „Code“, kuris yra atskiras (c & 0xFF) nuspaudimo klavišu arba klavišo atleidimo kodas, vaidina svarbų vaidmenį konvertuojant PS/2 į USB, todėl rekomenduoju jums išstudijuoti kiti du pavyzdžiai, pateikiami kartu su biblioteka, kad geriau suprastumėte, ar planuojate tobulinti ar keisti (pakeisti skirtingo išdėstymo klavišus) galutinį eskizą. Taip pat galite gauti visą PS/2 nuskaitymo kodų sąrašą iš bibliotekos, atidarę „PS2KeyAdvanced.h“arba „PS2KeyCode.h“failus iš „\ Documents / Arduino / libraries / PS2KeyAdvanced / src \“
  • „Būsenos bitai“reiškia modifikavimo klavišus („Ctrl“, „Alt“, „Windows“, „Shift“/„Caps“) ir pamatysite, kad su kiekvienu papildomu modifikavimo klavišu ši vertė pasikeičia, o pagrindinis įprasto (nekeičiamojo) rakto „kodas“nesikeičia. Tačiau galutiniame eskize aš nepaisiau šio metodo ir įgyvendinau šiuos modifikavimo klavišus kaip paprastus klavišų paspaudimus (pamatysite, kad šie modifikavimo klavišai taip pat turi „make“ir „break“nuskaitymo kodą, nepriklausančius nuo įprastų klavišų, nesvarbu, ar paspaudžiami keli klavišai.) nes tai palengvina darbą naudojant USB-HID protokolą.

3 veiksmas: PS/2 į USB konversijos peržiūra

Prieš atnaujindami „Atmega8U2“arba „16U2“(„UNO Rev3“), kad mūsų „Arduino“taptų USB klaviatūra, turėtume įsitikinti, kad visi konvertavimo elementai veikia tinkamai ir galutinis galutinis eskizas yra įkeltas, arba kitaip bus labai skaudu perrašyti programinė įranga vėl ir vėl tarp originalių ir USB klaviatūros šešiakampių failų, kad galėtumėte įkelti teisingą eskizą. Tai ypač aktualu, jei neturite išorinio programuotojo, pvz., „USBasp“ar kito „Arduino“, kurį galėtumėte naudoti kaip IPT. Taigi čia mes įkelsime galutinio eskizo „DEBUG“versiją su žmogaus skaitoma išvestimi (per serijinį monitorių), kad išbandytume viską.

Išvestis, kurią matysite, bus suformatuota, kai bus paleistas kiekvienas raktas, 00 00 00 00 00 00 00 00

Štai pagrindinis laukiamos produkcijos paaiškinimas,

Kiekvieną kartą paspausdami kelis keitiklio klavišus, turėtumėte gauti naują eilutę su skirtingomis „xx“reikšmėmis. Galiausiai, kai atleisite visus modifikavimo klavišus, „xx“turėtų tapti 00

xx 00 00 00 00 00 00 00

Kiekvieną kartą pakartotinai paspaudus kelis įprastus klavišus (pavyzdžiui, paspausime ir hipotetinį klavišą a, klavišą b, ir klavišą c su reikšmėmis „xx“, „yy“ir „zz“tokia tvarka) turėtumėte gauti nuolatinį (neprivalomą) tokios naujos eilutės,

00 00 x x yy zz 00 00 00

kai tik atleisite klavišą b, išvestis turėtų pasikeisti į,

00 00 x x 00 zz 00 00 00

ir jei paspausite naują klavišą d, kurio vertė yra „nn“, neatleisdami klavišo a ar b, jūsų išvestis turėtų pasikeisti į,

00 00 xx nn zz 00 00 00

ir pagaliau grįžkite prie to, kai atleidžiamas kiekvienas raktas,

00 00 00 00 00 00 00 00

ir galiausiai, jei paspausite „Caps Lock“, „Num Lock“arba „Scroll Lock“, turėtumėte gauti kažką panašaus į kelias eilutes tuo pačiu metu,

00 00 x x 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Jei viskas čia atsitiks, jums bus auksas tęsti!

4 žingsnis: techninis paaiškinimas

Techninis paaiškinimas
Techninis paaiškinimas
Techninis paaiškinimas
Techninis paaiškinimas

Jei jums patinka, galite praleisti šį žingsnį. Tai tik ankstesnių rezultatų paaiškinimas. Išvesties 8 baitų masyvas, kurį matėte, yra suformatuotas pagal aukščiau pateiktą 1 pav. Galite sužinoti daug daugiau apie tai ir kaip modifikavimo raktų būsenos baitas yra parašytas iš šio wiki apie USB-HID. Iš esmės tai, ką daro mano kodas, yra kiekvieną kartą paspaudus naują klavišą (PS/2 protokolas nurodo tai kaip „padaryti“), jis pereina per paskutinius 6 masyvo baitus, kurie naudojami įprastai paspaudžiant klavišus, ir užpildo pirmąjį tuščias baitas, kurį jis randa su atitinkamu „HID scancode“(parodyta 2 pav. Taip pat galite rasti išsamų sąrašą iš pridėto PDF) gautam „PS/2 scancode“. Ir galiausiai, kai atitinkamas raktas bus paleistas (PS/2 protokolas tai nurodo kaip „pertrauką“), kodas pereis per dabartinį baitų masyvą ir išvalys tik atitinkamą baitą.

Jei sekėte iki čia ir perskaitę „wiki“puslapį, pamatysite, kad su šiuo metodu yra nedidelė problema, paprastai, kai raktas atleidžiamas, HID protokole likę baitai pertvarkomi taip, kad atsikratytų tuščių baitų tarp likusių tuščių baitų. Tačiau dėl tam tikrų priežasčių, nepaisant to, kiek būdų bandžiau, negalėjau pasiekti, kad jis veiktų taip, kaip numatyta, netyčia neišvalius paspaudžiamų klavišų nepageidaujamų baitų. Jei galite tai patobulinti, kad jis veiktų, palikite komentarą. Nors dienos pabaigoje ši problema neturi įtakos klaviatūros funkcionalumui, kol „Arduino“vis tiek užregistruoja kiekvieną paspaustą klavišą, neatsižvelgiant į jų paspaudimo tvarką (o tai praktiškai neturi įtakos).

5 veiksmas: galutinio eskizo įkėlimas

Taigi, prieš galutinai atnaujindami „Atmega8U2“arba „16U2“programinę įrangą (UNO Rev3), kad mūsų „Arduino“būtų USB klaviatūra, turime įkelti galutinį eskizą. Įkėlę šį elementą, eidami prie serijinio monitoriaus pamatysite, kad su kiekvienu nauju klavišu paspaudžiamas šiukšlių spausdinimas - tai geras ženklas, kad viskas veikia taip, kaip numatyta, ir galime pereiti prie paskutinio žingsnio. VALIO!!!

6 veiksmas: atnaujinkite programinę -aparatinę įrangą

Galiausiai galite atnaujinti „Arduino“programinę įrangą, kad užregistruotumėte ją kaip USB klaviatūrą. Šiuo tikslu aš nesileisiu į daug smulkmenų, nes tai pavers per pamoką per ilgai.

  1. Vykdykite šį arduino.cc vadovą apie „Atmega8U2 ir 16U2 atnaujinimą„ Uno “ar„ Mega2560 “naudojant DFU“, o ne naudodami „Arduino-usbserial-uno.hex“, naudokite pridedamą „Arduino-keyboard-0.3.hex“
  2. FLIP nepamirškite pasirinkti tikslinio įrenginio kaip „Atmega8U2“arba „16U2“, priklausomai nuo jūsų, „Arduino“, ir iš pasirinktos ryšio terpės pasirinkite USB ir, galiausiai, prieš pasirinkdami vykdyti, įkelkite teisingą šešiabriaunį failą.
  3. Jei susidūrėte su tvarkyklės klaida, eikite į „Windows“įrenginių tvarkytuvę ir pasirinkite ieškoti nežinomos tvarkyklės FLIP '\ Program Files (x86) Atmel / "diegimo kataloge
  4. Jei atnaujindami programinę -aparatinę įrangą iš FLIP kelis kartus susidūrėte su klaidomis, uždarykite FLIP ir paleiskite „Reset Preferences“iš „Start menu / FLIP \“, tada iš naujo paleiskite „FLIP“ir atlikite konfigūravimo veiksmus prieš bandydami dar kartą.
  5. Jei norite atkurti pradinę „Arduino“būseną, tiesiog vykdykite aukščiau pateiktą arduino.cc laiško vadovą, nenaudodami šio šešiakampio failo.

7 žingsnis: mėgaukitės ……

Mėgautis……
Mėgautis……

Dabar mėgaukitės naujai konvertuota PS/2 į USB klaviatūrą…. P. S. Ši instrukcija buvo visiškai parašyta iš išorinės PS/2 klaviatūros, prijungtos prie mano nešiojamojo kompiuterio per „Arduino“:)

Rekomenduojamas: