Nicht Fershtein: predarea unui pinguin să înțeleagă tastele multimedia. Nicht Fershtein: învăț pinguinul să înțeleagă tastele multimedia Scanează codurile pentru tastele de la tastatură dinovo

Numărul tastei trimis de procesorul tastaturii depinde în mod unic de aspectul matricei tastaturii, dar nu de denumirile imprimate pe suprafața tastelor. Acest număr se numește cod de scanare. Cuvântul „scanare” se referă la faptul că computerul cu tastatură scanează tastatura pentru a găsi tasta care a fost apăsată.

Codul Ascii al tastei apăsate

De obicei, programul nu are nevoie de numărul de serie al tastei apăsate, ci de codul corespunzător desemnării acestei taste (cod ASCII).

Codul ASCII nu este direct legat de codul de scanare, deoarece mai multe valori de cod ASCII pot corespunde aceleiași chei, în funcție de starea altor taste. De exemplu, tasta etichetată „1” este folosită și pentru a introduce caracterul „!” (dacă a fost apăsat împreună cu tasta ).

Prin urmare, toate conversiile codului de scanare în cod ASCII sunt efectuate de software. De regulă, în sistem de operare MS-DOS, aceste conversii sunt efectuate de modulele BIOS. Pentru a utiliza caractere chirilice, aceste module sunt extinse cu drivere de tastatură, ambele incluse în versiunile localizate ale MS-DOS și create ca programe separate.

Modul de repetare automată

Dacă apăsați tasta și nu o eliberați, tastatura va intra în modul de repetare automată. În acest caz, codul tastei apăsate este trimis automat la computer după o anumită perioadă de timp, numită perioadă de auto-repetare. Modul de repetare automată facilitează introducerea unui număr mare de caractere identice de la tastatură.

Trebuie remarcat faptul că tastatura conține un buffer intern de 16 octeți prin care comunică cu computerul.

Tipuri de tastaturi

Până de curând, existau trei tipuri diferite de tastaturi. Acestea sunt tastatura pentru computerele IBM PC/XT, tastatura cu 84 de taste pentru IBM PC/AT și tastatura cu 101 taste (extinsă) pentru IBMPC/AT. Unele tastaturi au un comutator pentru modul de funcționare (XT/AT) situat pe capacul inferior. Trebuie instalat în poziția corectă.

După ce sistemul de operare Microsoft Windows s-a răspândit, un nou tip de tastatură a fost creat special pentru acesta. Două butoane au fost adăugate la o tastatură convențională IBMPC / AT, primul dintre care dublează apelul meniului Start, efectuat cu butonul stâng al mouse-ului, iar al doilea - apelul aceluiași meniu folosind butonul din dreapta al mouse-ului.

Porturi pentru tastatură

Alocarea porturilor pentru operarea tastaturii depinde de tipul de computer.

ComputerIbm pc/xt

Pentru a lucra cu o tastatură IBM PC/XT, sunt utilizate porturi cu adrese 60h și 61h.

Portul 60h este doar pentru citire. După efectuarea acestei operații, acesta conține codul de scanare al ultimei taste apăsate.

Portul 61h este disponibil atât pentru citire, cât și pentru scriere. Controlează nu numai tastatura, ci și alte dispozitive computerizate, de exemplu, funcționarea difuzorului încorporat. Dacă bitul înalt al portului 61h este scris la 1, tastatura va fi blocată, dacă 0 - deblocat.

Deoarece portul 61h controlează mai mult decât doar tastatura, modificarea conținutului bitului cel mai semnificativ trebuie să salveze starea biților rămași ai acestui port. Pentru a face acest lucru, puteți mai întâi să citiți conținutul portului în registru, să schimbați starea bitului înalt, apoi să scrieți noua valoare în port.

Am fost motivat să lucrez la un astfel de dispozitiv de faptul că majoritatea dispozitivelor Gamemort ușor de replicat nu permiteau implementarea unui număr suficient de butoane de control. Portul de joc pentru PC a fost proiectat inițial pentru maximum patru butoane. De asemenea, toate tipurile de extensii nu au flexibilitatea dorită. De exemplu, extensia CH Flightstick Pro, populară în rândul celor care se bridă, îți permite să implementezi până la 14 butoane, dar nu poți folosi nici două butoane în același timp - despre zborul pe astfel de dispozitive în jocurile în care trebuie să „întoarcă capul” în mod constant - la aceleași păsări, poți uita. Unele extensii folosesc exclusiv o interfață digitală - datele de pe butoanele apăsate și deformarea mânerului sunt transmise pe liniile digitale ale portului de joc, care au fost inițial destinate să transmită date pe patru butoane „standard”. Chiar consider astfel de extensii oarecum redundante. Da, iar conversia datelor analogice în digitale complică designul joystick-ului. În plus, nu orice joc va dori să înțeleagă ce fel de monstru i s-a „atașat”. Și clave - iată-l, în toată frumusețea ei de 102 chei! În plus, abonații RU.GAME.FLIGHT au adăugat combustibil focului, întrebându-se din când în când „cum o pot îmblânzi pe Claudia și să încrucișez cu Joy?” si plecand fara nimic.

Pe scurt, sarcina dispozitivului este să „stea” pe autobuzul dintre tastatură și PC și să simuleze apăsările de taste de pe tastatură, conform butoanelor apăsate pe dispozitiv.

Deci, m-am așezat pentru dezvoltare. Înainte de asta, am avut experiență cu diverse microprocesoare și microcontrolere. În general - degetele de la ureche la ureche. Și m-am gândit naiv că acum voi lua docuri, voi face RTFM și peste o săptămână voi fi pe un cal alb. Întreaga problemă s-a dovedit a fi că nu am putut găsi documentație privind protocolul de transfer de date între tastatură și controler nici pe Internet, nici în conferințele Fido relevante. A trebuit să iau un osciloscop și să iau câteva săptămâni să analizez colibe temporare și să încerc să le repet. Prin urmare, majoritatea informațiilor de mai jos sunt rezultatul concluziilor mele și nu sunt documentate. Dacă greșesc cu ceva, voi fi bucuros să aud comentarii la rashpil la ukr punct net.

Principii de bază ale transmiterii datelor

Toate următoarele sunt valabile pentru tastaturile PS / 2 și AT, care diferă doar prin designul conectorului (pot fi conectate printr-un adaptor).

Între tastatură și controlerul situat pe placa de bază a computerului (denumit în continuare pur și simplu „controller”), se realizează schimbul de date în două sensuri. Controlerul transmite diverse comenzi (de exemplu, schimbarea stării LED-urilor sau a vitezei de auto-repetare). Tastatura transmite codurile de scanare ale tastelor apăsate (codul de scanare este simbolul unei taste, care nu trebuie confundat cu codurile ASCII).

Scanează coduri

Cheie Scanează codul Cheie Scanează codul Cheie Scanează codul Cheie Scanează codul
1 16 2 1E 3 26 4 25
5 2E 6 36 7 3D 8 3E
9 46 0 45 - 4E + 55
backspace 66 Tab 0D Q 15 W 1D
E 24 R 2D T 2C Y 35
U 3C eu 43 O 44 P 4d
[ 54 ] 5B introduce 5A Ctrl(L) 14
A 1C S 1B D 23 F 2B
G 34 H 33 J 3B K 42
L 4B ; 4C " 52 ` 0E
Shift(L) 12 \ 61 Z 1A X 22
C 21 V 2A B 32 N 31
M 3A , 41 . 49 / 4A
Shift(R) 59 Alt(L) 11 Spaţiu 29 cap lock 58
Esc 76 F1 05 F2 06 F3 04
F4 0C F5 03 F6 0B F7 83
F8 0A F9 01 F10 09 F11 78
F12 07 blocare derulare 7E * 7C Blocarea numerelor 77
7 6C 8 75 9 7D - 7B
4 6B 5 73 6 74 + 5A
1 69 2 72 3 7A 0 70
. 71 Alr(R) E0-11 Ctrl(R) E0-14 Captură de ecran E0-12-E0-7C
Introduce E0-70 Șterge E0-71 Stânga E0-6B Acasă E0-6C
Sfârșit E0-69 Sus E0-75 Jos E0-72 Pagină sus E0-7D
In josul paginii E0-7A Dreapta E0-74 introduce E0-5A / E0-4A

Notă: de fapt, tastatura AT are trei set diferit coduri de scanare. Am dat doar valorile pentru numărul setului 2 - cea implicită.

Când o tastă este apăsată, tastatura trimite codul de scanare al acelei taste către controler. Când este eliberat - mai întâi prefixul 0F0h, apoi codul de scanare al cheii eliberate.

Combinațiile de taste cu Shift, Alt și Ctrl sunt transmise ca o secvență de două coduri de scanare. Din punctul de vedere al controlerului, aceste taste nu sunt diferite de toate celelalte. La fel, modurile Num Lock și Caps Lock nu diferă la nivel hardware - diferă la nivel de software prin programul care servește întreruperile de la tastatură.

Pe scurt, vreau să mă opresc asupra implementării modului de repetare automată. De regulă, funcțiile de repetare automată sunt atribuite tastaturii în sine - după un anumit timp, dacă tasta nu este eliberată, tastatura trimite un alt cod de scanare exact același. Dacă în acest moment este apăsată încă o tastă, atunci un alt cod de scanare va „zbura” către controler și se va considera că doar o tastă a fost apăsată. În jocuri, această problemă este rezolvată într-un mod elementar - tasta este considerată apăsată până când sosește codul de scanare corespunzător cu prefixul 0F0h. Prin urmare, nu am implementat funcții de auto-repetare în principiu.

În plus față de codurile de scanare de mai sus, tastatura poate returna unele comenzi de service. Dar aceste comenzi, precum și comenzile emise de controlor, nu au nicio valoare practică în acest caz. Prin urmare, nu mă voi opri asupra lor.

Descrierea protocolului de schimb

Schimbul de date între tastatură și controler se realizează asincron folosind un protocol serial. Esența transmisiei asincrone este că datele sunt transmise numai atunci când există ceva de transmis - o tastă de pe tastatură este apăsată / eliberată și trebuie să emiteți codul de scanare corespunzător sau controlerul trebuie să emită o comandă la tastatură.

Pentru schimbul de date sunt utilizate două linii - KBData și KBSync. La transmiterea codurilor de scanare, tastatura setează următorul bit de date pe linia KBData și confirmă transmisia prin transferarea semnalului de la „1” la „0” pe linia KBSync. La primirea datelor de la controler, tastatura citește bitul de date din linia KBData și emite o confirmare de primire prin transferarea semnalului de la „1” la „0” pe linia KBSync. Controlerul poate semnala refuzul său de a transmite/primi date cu un nivel scăzut pe linia KBSync. În restul timpului, când nu există date de transmis, ambele linii au un nivel de semnal ridicat. Rata de repetare a pulsului liniei KBSync este de aproximativ 10-25KHz.

Datele sunt transmise în următoarea ordine: un bit de pornire - „0”, opt biți de date, bit de paritate (suma tuturor biților +1), un bit de oprire - „1”. După primirea fiecărui octet de date, controlerul se setează nivel scăzut pe linia KBSync, semnalând astfel că este ocupat cu procesarea datelor primite și nu este pregătit să le primească pe următoarele. Aceasta poate fi considerată o recunoaștere a acceptării. Tastatura confirmă fiecare octet al comenzii primite prin emiterea codului 0FAh. Dacă apare o eroare în timpul transmisiei, controlerul poate solicita ca transmisia ultimului octet să fie repetată prin lansarea comenzii 0FEh. Tastatura se comportă diferit - pur și simplu ignoră erorile. Nu văd nimic fatal în asta - dacă sistemul dvs. produce blocări frecvente, atunci nu are loc pe desktop.

Cel mai probabil, explicațiile mele au fost prea confuze, așa că voi încerca să le ilustrez cu câteva diagrame de timp.

Vedere generală a transmisiei de date de la tastatură (S1 - bit de pornire; S2 - bit de oprire; D0-D7 - date; P - bit de paritate; W - procesarea datelor primite)

Un exemplu de transmitere a octetului 74h este tasta „6” de pe tastatura numerică. În acest exemplu, atunci când tastatura inițiază o transmisie, controlerul semnalează că nu este pregătit să primească date și tastatura așteaptă eliberarea liniei KBSync.

Implementarea hardware

Acum voi merge direct la descrierea implementării dispozitivului în hardware.

Dispozitivul este inclus în decalajul dintre semnalele KBSync și KBData și transmite semnale de la / către tastatură prin el însuși, verifică starea celor patru butoane și emite codurile de scanare corespunzătoare, simulând astfel funcționarea tastaturii.

Baza dispozitivului este un microcontroler AT89C2051 cu un singur cip. Microcontrolerul AT89C2051 de la Atmel aparține familiei MCS-51 (analogicul casnic este MK-51). Principala diferență dintre AT89C2051 și i8051 este consumul de energie mai mic, numărul de linii I/O redus la 15, incapacitatea de a utiliza memorie externa. Mai mult informatii detaliate pentru AT89C2051 și i8051 pot fi găsite la www.atmel.com și www.intel.com. În loc de AT89C2051, puteți utiliza AT89C51, i8051 (KP1816BE51) sau i8031 (KP1816BE31) cu ROM extern. Dar doi ultima versiune datorită consumului lor crescut de energie, pot arde siguranța controlerului tastaturii.

Pe microcontrolerele Atmel, după denumirea principală, este indicată frecvența maximă a generatorului de ceas în megaherți. Vă sfătuiesc să instalați un microcontroler conceput pentru o frecvență de 24 MHz și cuarț cu o frecvență mai mare - 16-20 MHz.

schema circuitului. (R1-R4 - 47K; R5 - 10K; C1, C2 - 18pF; C3 - 1uF; D1 - AT89C2051; BQ1 - cuarț 12-24MHz)

Linia P1.4 este folosită ca ieșire de activare a sondajului de buton. Aceasta este o rezervă pentru extinderi viitoare - liniile P1.4-P1.7 vor fi folosite pentru a emite adresa liniei pentru sondarea butoanelor apăsate (până la 16 linii a câte 4 butoane fiecare). „0” pe linia P1.0-P1.3 înseamnă că butonul corespunzător este apăsat.

Elementele C3 și R5 implementează un circuit pentru generarea unui semnal de resetare atunci când este aplicată puterea.

Liniile KBData de la tastatură și controler sunt alimentate la intrările P3.2 (INT0) și P3.3 (INT1). Astfel, o încercare de a iniția un transfer de date de la tastatură sau controler provoacă întreruperea corespunzătoare. Rutinele pentru deservirea acestor întreruperi pur și simplu difuzează semnalele corespunzătoare transferului unui octet prin microcontroler. Într-un moment în care microcontrolerul nu este ocupat cu transmiterea datelor, liniile P1.0-P1.4 sunt interogate, datele primite sunt procesate și codurile de scanare corespunzătoare sunt emise controlerului. În această versiune, se acordă prioritate datelor transmise de dispozitivul însuși. Prin urmare, datele de la tastatură se pot pierde uneori.

Încheind această secțiune, voi oferi pinout-ul conectorilor de la tastatură AT și PS / 2.

Semnalul -KBReset este un semnal opțional. Unele controlere îl pot folosi pentru a reseta tastatura.

Textul firmware-ului

Ofer codul sursă pentru firmware-ul microcontrolerului AT89C2051 în speranța că un cititor curios să mă poată corecta sau să adapteze programul pentru a funcționa cu un alt tip de microcontroler.

org 0 sjmp start org 3 jmp from_keyboard ; INT0 org 13h jmp to_keyboard ; INT1 start mov a,#5 ; setarea tipului de întrerupere mov tcon,a ; INT0 si INT1 pe fata - mov a,#0 ; trecerea de la „1” la „0” mov ip,a mov a,#85h mov ie,a mov a,#0ffh ; la adresa 06h se stochează ultima mișcare 6,a; cod procesat clr p1.4 ; activați bucla de interogare mov a,p1; starea butoanelor este citită anl a,#15 ; - junior patru biți de portul P1; D0 - sus; D1 - dreapta; D2 - jos; D3 - stânga mov dptr,#hat_table ; citiți date despre patru butoane movc a,@a+dptr ; extinderea în opt direcții; D0 - sus; D1 - dreapta; D2 - jos; D3 - stânga; D4 - dreapta sus; D5 - dreapta-jos; D6 - stânga-jos; D7 - mișcare stânga sus r2,a ; salvare date mov r0,a xrl a,6 ; dacă noile date sunt identice cu jz loop; primit în ciclul anterior - repetați sondajul mov r1,#8 ; buclă pentru opt biți loop3 jnb acc.7,loop2; "1" - a existat o schimbare push acc mov a,r1 mov dptr,#key_table-1 ; extrage codul de scanare corespunzător movc a,@a+dptr push acc mov a,r0 ; registrul R0 - semn de apăsare/eliberare a rlc a ; cheie emulată mov r0,a ; „1” - „key” a fost eliberat pop acc mov acc.7,c ; if D7=1 - scancode va fi precedat de 0f0h acall send_key ; cod de scanare de ieșire pop acc sjmp loop2a loop2 push acc mov a,r0 rlc a mov r0,a pop acc loop2a rl a djnz 1,loop3 mov 6,r2 sjmp loop send_key mov ie,#80h ; întreruperi dezactivate acall send2comp ; trimite codul de scanare, de exemplu, #85h; întreruperi activate ret send2comp jnb acc.7,send ; la nevoie, 0f0h push acc mov a,#0f0h acall trimite pop acc clr acc.7 mov b,#200 l9 nop djnz b,l9 trimite push 1 push 0 clr p3.3 ; P3.3 - KBData mov b,#6 ; set start bit l10 nop djnz b,l10 clr p3.5 mov b,#15 l2 nop djnz b,l2 setb p3.5 mov b,#6 l3 nop djnz b,l3 mov r0,#8 ; mov r1,#1 byte_loop xrl 1h,a rrc a mov p3.3,c mov b,#6 l6 nop djnz b,l6 clr p3.5 mov b,#15 l4 nop djnz b, l4 setb p3.5 mov b ,#6 l5 nop djnz b,l5 djnz r0,byte_loop mov a,r1 mov c,acc.0 mov p3.3,c ; ieșire paritate mov b,#6 l8 nop djnz b,l8 clr p3.5 mov b,#15 l12 nop djnz b,l12 setb p3.5 mov b,#6 l13 nop djnz b,l13 setb p3.3 ; bit oprire ieșire mov b,#6 l7 nop djnz b,l7 clr p3.5 mov b,#15 l11 nop djnz b,l11 setb p3.5 mov b,#200 l14 nop djnz b,l14 setb p3.5 pop 0 pop 1 ret from_keyboard ; trimite un octet către controler mov, adică #80h push psw push acc push b mov b,#2 in6 jnb p3. 4,in8 djnz b,in6 sjmp in7 in8 mov b,#10 in1 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in1 in2 mov a,p3 rl a orl a,#11010111b mov p3,a jb p3.4,in2 djnz b,in1 in3 mov a,p3 rl a orl a,#11010111b mov p3,a jnb p3.4,in3 mov p3,#0ffh in4 jb p3.5,in4 in5 jnb p3 .3,in7 clr p3.4 jnb p3.5,in5 in7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov ie,#85h reti to_keyboard ; trimite un octet la tastatură, adică #80h push psw push acc push b mov b,#5 out61 jb p3.5,out7 djnz b,out61 setb p3.4 setb p3.2 out62 jnb p3.5,out62 out6 mov c ,p3.4 mov p3.5,c mov c,p3.3 mov p3.2,c jb p3.4,out6 out8 mov b,#10 out1 mov c,p3.4 mov p3.5,c mov c, p3.3 mov p3.2,c jnb p3.4,out1 out2 mov c,p3.4 mov p3.5,c mov c,p3.3 mov p3.2,c jb p3.4,out2 djnz b,out1 out3 mov c,p3.4 mov p3.5,c mov c,p3.2 mov p3.3,c jnb p3.2,out3 out7 mov p3,#0ffh pop b pop acc pop psw mov tcon,#5 mov ie ,#85h reti hat_table ; tabel pentru extinderea datelor citite de la portul P1; index în tabel - cod binar din patru cifre; date - starea a opt chei emulate; "0" - tasta apăsată db 0ffh ; stânga+dreapta+sus+jos=combinație ilegală db 0ffh ; stânga+dreapta+jos=combinație ilegală db 0ffh ; stânga+sus+jos=combinație ilegală db 0bfh ; stânga+jos=stânga-jos db 0ffh ; stânga+dreapta+sus=combinație ilegală db 0ffh ; stânga+dreapta=combinație ilegală db 07fh ; stânga+sus=stânga sus db 0f7h ; stânga db 0ffh ; dreapta+sus+jos=combinație ilegală db 0dfh ; jos+dreapta=jos-dreapta db 0ffh ; sus+jos=combinație ilegală db 0fbh ; jos db 0efh ; dreapta+sus=dreapta sus db 0fdh ; dreapta db 0feh ; sus db 0ffh ; nu a fost apăsat niciun buton key_table; scan cod tabel db 75h ; tastatura numerica 8 db 74h; tastatura numerica 6 db 72h ; tastatura numerica 2 db 6bh ; numpad 4 db 7dh ; numpad 9 db 7ah ; tastatura numerica 3 db 69h ; numpad 1 db 6ch ; tastatura numerica 7

În arhiva tools.zip veți găsi două programe: a51.exe este un asamblator, hex2bin este un convertor de fișiere hex care sunt obținute la ieșirea asamblatorului într-un format binar potrivit pentru flash-ul ROM-ului microcontrolerului cu un programator .

Asamblare și depanare

Puteți asambla dispozitivul conform schemei de mai sus pe o placă, o placă gravată acasă sau fabricată industrial. Puneți o priză sub microcontroler. Cel mai bine este să lăsați loc pe placă pentru 2-3 pachete DIP cu 16 pini - acestea vor fi adăugate în versiunile viitoare.

În plus, după efectuarea modificărilor dorite, codul sursă al microprogramului este asamblat - prin programul a51.exe. Pentru intermiterea de către programator, fișierul hex primit este convertit într-o imagine binară de către programul hex2bin.exe.

După asamblarea completă a dispozitivului, îl conectăm la tastatură și computer. Trei... Doi... Unu... Să mergem!... Un dispozitiv asamblat corespunzător din componente bune cunoscute ar trebui să funcționeze imediat. Dacă nu, verificați instalarea corectă, prezența alimentării pe microcontroler. Utilizați un osciloscop pentru a verifica dacă generatorul de ceas a pornit și dacă un impuls de nivel înalt ajunge la intrarea RST atunci când este pornit. La apăsarea tastelor de pe tastatură, impulsurile de pe liniile P3.3 și P3.5 ar trebui să repete, cu o oarecare întârziere, impulsurile de pe liniile P3.2 și, respectiv, P3.4. Când apăsați / eliberați butoanele dispozitivului, impulsurile ar trebui să apară și pe liniile P3.3 și P3.5. Dacă acest lucru nu ajută - scrie-mi ( rashpil la aport punct ro) raport de eroare, specificând modelul și tipul (AT, PS/2) tastaturii, plăcii de bază/multicardului, microcontrolerului folosit și frecvența rezonatorului cuarț utilizat. Am încercat să testez dispozitivul cu număr maxim disponibil pentru mine plăci de bazăși tastaturi - nu au fost identificate probleme. În cazul meu, a fost folosit cuarț de 14,2 MHz.

bug-uri cunoscute

Versiunea actuală a firmware-ului conține următoarele defecte:

  • Codurile de scanare pe doi octeți nu sunt urmărite. Acest lucru duce la faptul că uneori, atunci când utilizați pălăria și tastatura în același timp, tastele de la tastatură „îngheață” în starea apăsată sau sunt percepute incorect;
  • Uneori, datele sunt transferate incorect de la controler la tastatură. Acest lucru poate fi exprimat, de exemplu, prin faptul că LED-urile nu își schimbă starea atunci când sunt apăsate tastele Num Lock, Caps Lock, Scroll Lock;
  • Săritura de contacte ale butoanelor cabanei. Până acum, acest lucru nu a devenit fatal pentru mine în jocuri.

Planuri de viitor

Iată o listă scurtă cu ceea ce aș dori să implementez în versiunile viitoare:

  • Remedieri minore de erori - procesare mai corectă a semnalului; urmărirea codurilor de scanare pe doi octeți;
  • Conectarea unei matrice 16x4 - suport pentru până la 64 de butoane sau două cabane și până la 56 de butoane;
  • Suport pentru până la 16 machete diferite de coduri de scanare stocate în ROM-ul microcontrolerului;
  • Conectarea unui cip NVRAM cu capacitatea de a salva și reprograma „din mers” până la 32 de aspecte de cod de scanare.

Concluzie

Am încercat să prezint toate datele necesare pentru a înțelege principiul de funcționare a dispozitivului meu. Această descriere nu pretinde a fi 100% exactă din punct de vedere tehnic. Dacă greșesc cu ceva, vă rog să-mi spuneți versiunea dvs. despre evenimente. Dacă puteți face îmbunătățiri și completări la circuitul și/sau firmware-ul meu, dacă aveți idei pentru dezvoltarea ulterioară a circuitului, anunțați-mă și pe mine. În plus, aștept informații de la meșteri care au putut să repete sau să adapteze acest dispozitiv pentru alte tipuri de microcontrolere.

Vladimir „Rasp” Klimus (rashpil la ukr punct net)

Cel mai probabil pe telefonul tău instalat implicit Scanner de coduri QR, puteți scana cu ușurință primul cod QR cu acesta. Este foarte ușor să faci asta. Doar urmați instrucțiunile noastre.

1. Deschideți cititorul de coduri QR de pe telefon.

2. Țineți dispozitivul deasupra codului QR, astfel încât să fie vizibil clar pe ecranul smartphone-ului dvs.

Dacă țineți corect smartphone-ul peste codul QR, atunci se va întâmpla următoarele:

  • Telefonul scanează automat codul.
  • În unele aplicații, trebuie să faceți clic pe o imagine pentru a scana un cod în loc de un buton, așa cum ați face pentru a face o fotografie pe smartphone.

3. Apăsaţi butonul indicat dacă este necesar.

Super! Smartphone-ul dvs. citește codul și urmează linkul dat, ceea ce nu se întâmplă întotdeauna instantaneu. Pe majoritatea dispozitivelor, acest lucru poate dura câteva secunde.

Veți începe să vedeți coduri QR peste tot. Sunt folosite pentru a preda, a informa, a explica și pentru multe alte lucruri. Găsiți-le și scanați! Codurile QR vă vor economisi mult timp și efort.

Cum să scanezi coduri QR pe ​​Android

Și acum vă vom spune cum să utilizați aplicația de scanare a codurilor QR pe ​​Android.

Scurt:
1. Deschide Magazin Play .
2. Căutați Cititor de coduri QR .
3. Selectați Cititor de coduri QR(prin Scanare).
4. Faceți clic pe „ Instalare".
5. Deschideți programul Citirea codului QR.
7. Îndreptați camera către codul QR.
8. Faceți clic pe „ BINE".

Pasul 1. Deschideți Magazinul Play pe Android. Este o pictogramă într-o aplicație sau pe ecranul de pornire.

Pasul 2 Introduceți cititorul de cod QR în motorul de căutare. Va apărea o listă de aplicații pentru citirea codului QR.

  • Acest articol explică cum să utilizați QR Code Reader, dar puteți alege aplicația care vă place. Asigurați-vă că citiți despre aplicație înainte de a descărca.
  • Pașii ar trebui să fie aceiași pentru toate aplicațiile de citire a codurilor QR.

Pasul 3Faceți clic pe QR Code Reader dezvoltat de Scan. Numele dezvoltatorului este listat sub fiecare aplicație. Poate fi necesar să derulați în jos pe pagină pentru a găsi aplicația creată de Scan.

Pasul 4Faceți clic pe Instalare. Va apărea o fereastră pop-up care vă va cere să acordați permisiunea de a accesa informațiile de pe Android.

Pasul 5Faceți clic pe „Accept”. QR Code Reader va fi acum instalat pe dispozitivul dvs. Android.

    • Când aplicația este descărcată, butonul „Instalare” se va schimba în „Deschidere” și veți avea o pictogramă nouă în aplicație.

Pasul 6Deschideți QR Code Reader. Este o pictogramă care arată ca un cod QR în aplicație. Se va deschide o aplicație care arată ca un ecran de cameră standard.

Pasul 7Aliniați codul QR în cadrul camerei. Cam așa cum faci fotografii, cu excepția faptului că nu trebuie să apeși niciun buton. Când scanerul de coduri de bare citește codul, va apărea o fereastră pop-up cu adresa URL în cod.


Pasul 8Faceți clic pe OK pentru a deschide site-ul web. Aceasta lansează browserul dvs. web implicit și navighează la adresa URL din codul QR.