Programăm LED-ul pe telefon. Pentru ce sunt indicatoarele LED? Care este starea LED-ului în telefonul Stark

Nu vă permite să porniți/opriți direct indicatorul LED sau blițul camerei; unele telefoane au această opțiune.

Cum să clipiți programatic lumini multicolore, cum să vă scrieți propria „lanterna” sau ce alte LED-uri de dispozitiv pot fi controlate - veți afla despre acest lucru mai jos.

Totul a început când, în timp ce exploram sistemul de fișiere al HTC Desire folosind ES Explorer, am dat din greșeală de directoare interesante: /sys/class/leds/blue, /sys/class/leds/flashlight etc.
Ce altceva este albastru?! Am văzut doar un indicator portocaliu și verde. Dar cel mai interesant lucru este că în interiorul acestor directoare era un fișier de luminozitate cu permisiunea de scriere! De care am profitat imediat.

De fapt, acesta nu este un fișier simplu, ci o interfață pentru lucrul cu un driver LED. Deci, scriind un număr pozitiv în fișierul /sys/class/leds/blue/brightness, vom aprinde indicatorul albastru de pe carcasa telefonului, scriind 0 - îl vom opri. La fel și cu indicatoarele chihlimbar și verde. Aprinzând împreună două LED-uri, obținem culori noi: chihlimbar + albastru = violet; verde + albastru = aqua.

Acum cum este totul programat?
public void ledControl (nume șir, luminozitate int) (

încerca (

FileWriter fw = new FileWriter("/sys/class/leds/" + nume + "/luminozitate");

fw.write(Integer.toString(luminozitate));

fw.close();

) prinde (Excepția e) (

// Controlul LED nu este disponibil

}

}


// Porniți indicatorul violet

ledControl("chihlimbar" , 255 );

ledControl ("albastru" , ​​255 );


// Faceți afișajul mai întunecat

ledControl("lcd-backlight" , 30 );


// Opriți iluminarea de fundal a butonului

ledControl ("button-backlight" , 0 );


// Organizați o lanternă de luminozitate medie

ledControl("lanterna" , 128 );

Se poate descărca un exemplu de aplicație cu coduri sursă.

Concluzie
Toate! Acum telefonul se aprinde ca un pom de Crăciun. Codul a fost testat doar pe HTC Desire care rulează Android 2.2, dar probabil va funcționa pe alte dispozitive. Scrie-mi dacă focalizarea va funcționa sau nu pe telefonul tău.

Afișați simboluri pe tablouri de bord, ceasuri electronice și multe altele. Un indicator LED este un design simplu care afișează caractere alfabetice sau simbolice. Din punct de vedere structural, este un ansamblu de LED-uri, unde fiecare element este iluminat de un indicator de semn-segment.

Caracteristici și tipuri de design

Indicatoarele LED constau din circuite integrate care afișează diverse informații. Tensiunea de funcționare variază de la 2V la 8V. Ei pot fi:

Segmentală;
- Matrice;
- scară liniară;
- Singur

Primul soi este folosit cel mai des și este tipul standard. În funcție de model, structura poate fi asamblată din 1-4 grupuri de șapte segmente. Mărimea obiectului și numărul de caractere afișate depind de numărul acestora. Astfel, un grup de șapte segmente va afișa doar un număr sau o literă. În ceasurile electronice sunt folosite patru grupuri. Atunci când alegeți un circuit pentru uz casnic, cumpărătorul ar trebui să acorde atenție prezenței unui anod și catod comun.
Pe lângă micii indicatori, există și cei care pot fi văzute în locuri publice. Pentru a le crește luminozitatea, se folosesc LED-uri conectate secvenţial, încorporate în fiecare componentă individuală. Pentru ca indicatorul să arate un anumit număr sau simbol, se aplică o tensiune de 11,2 volți. Elementele au propriile nume: A, B, C, D, F sau G. Funcționarea este determinată de registre și decodoare digitale cu deplasare.

Criptarea datelor și circuite integrate

Astfel de elemente sunt instalate pe o placă care controlează alimentarea cu tensiune. Lucrarea se datorează accesului la codul programului și utilizării de microcontrolere speciale. Folosind programare, se setează sincronizarea care afectează afișarea componentelor la un anumit moment.
Circuitul integrat convertește codul zecimal binar și binar furnizat pe afișaj. Circuitele comune pentru controlul indicatoarelor interne sunt K514ID2 sau K176ID2, în modelele importate 74HC595. Managementul este posibil în două moduri:

Direct, prin microcontrolere;
- Utilizarea registrelor de deplasare

Prima opțiune este mai puțin reușită din cauza necesității de a conecta mulți pini. În plus, consumul de curent poate fi mai mare decât este posibil cu microcontrolere. Indicatorii mari cu șapte segmente depind de cipul MBI5026.

Caracteristicile indicatorilor de segment

În electronică, acestea sunt utilizate pentru inspecția vizuală. Structura este formată din următoarele elemente:

Un indicator de sinteză a caracterelor este un dispozitiv în care informațiile vizuale sunt afișate folosind una sau mai multe componente;
- Câmp de afișare a datelor – în el sunt afișate numere sau alte simboluri;
- Element de afișare – o parte structurală care are propriul control;
- Segment – ​​un element de afișare a informațiilor, prezentat sub formă de linii drepte sau curbe;
- Spațiu familiar – spațiul necesar pentru afișarea unui caracter

Toate dispozitivele electronice îndeplinesc sarcini de bază:

1. Informații vizuale.
2. Au un design complet.
3. Echipat cu control electronic

Modificările de segment diferă de modificările matricei prin faptul că fiecare element este unic. Forma caracterelor este concepută special pentru a afișa anumite numere sau simboluri. Acestea din urmă se bazează nu pe șapte, ci pe nouă, paisprezece sau șaisprezece segmente. Când numărul depășește 7, atunci este destul de rațional să folosiți indicația de comutare dinamică. Afișajul și indicarea cu LED-uri sunt, de asemenea, posibile în formă bicoloră. Sunt folosite becuri de diferite culori și conectate la un circuit comun. Prin combinarea constatărilor, se obține o nuanță combinată.

Concluzie

Funcționarea indicatoarelor este imposibilă fără LED-uri. Astfel de dispozitive sunt relevante nu numai pentru echipamentele radio, ci sunt utilizate cu succes pentru semne, cronometre și indicatoare. Dispozitivele de diferite tipuri de circuite și control pot fi utilizate pentru a afișa informații.
Distribuiți informații pe paginile dvs. de socializare cu privire la acest subiect.

Cu siguranță ați văzut deja cei „opt” indicatori. Acesta este un indicator LED cu șapte segmente, care servește la afișarea numerelor de la 0 la 9, precum și a punctului zecimal ( D.P.- Punct zecimal) sau virgulă.

Din punct de vedere structural, acest produs este un ansamblu de LED-uri. Fiecare LED din ansamblu luminează propriul său segment de semn.

În funcție de model, ansamblul poate consta din 1 - 4 grupuri cu șapte segmente. De exemplu, indicatorul ALS333B1 constă dintr-un grup de șapte segmente, care este capabil să afișeze doar o cifră de la 0 la 9.

Dar indicatorul LED KEM-5162AS are deja două grupuri de șapte segmente. Este format din două cifre. Următoarea fotografie prezintă diferiți indicatori LED cu șapte segmente.

Există, de asemenea, indicatori cu 4 grupuri de șapte segmente - patru cifre (foto - FYQ-5641BSR-11). Pot fi folosite în ceasurile electronice de casă.

Cum sunt indicați indicatorii cu șapte segmente pe diagrame?

Deoarece indicatorul cu șapte segmente este un dispozitiv electronic combinat, imaginea sa de pe diagrame diferă puțin de aspectul său.

Trebuie doar să acordați atenție faptului că fiecare pin corespunde unui anumit segment de semn la care este conectat. Există, de asemenea, unul sau mai multe terminale ale unui catod sau anod comun, în funcție de modelul dispozitivului.

Caracteristici ale indicatorilor cu șapte segmente.

În ciuda simplității aparente a acestei părți, are și propriile sale particularități.

În primul rând, indicatoarele LED cu șapte segmente vin cu un anod comun și un catod comun. Această caracteristică ar trebui să fie luată în considerare atunci când o achiziționați pentru un design sau dispozitiv de casă.

Iată, de exemplu, pinout-ul indicatorului cu 4 cifre deja familiar pentru noi FYQ-5641BSR-11.

După cum puteți vedea, anozii LED-urilor fiecărei cifre sunt combinați și scos la un pin separat. Catozii LED-urilor care aparțin segmentului semnului (de exemplu, G), conectate între ele. Multe depind de ce fel de diagramă de conectare are indicatorul (cu un anod sau catod comun). Dacă vă uitați la schemele de circuit ale dispozitivelor care folosesc indicatori cu șapte segmente, va deveni clar de ce acest lucru este atât de important.

Pe lângă indicatorii mici, există și alții mari și chiar foarte mari. Ele pot fi văzute în locuri publice, de obicei sub formă de ceasuri de perete, termometre și informatori.

Pentru a crește dimensiunea numerelor de pe afișaj și în același timp a menține luminozitatea suficientă a fiecărui segment, se folosesc mai multe LED-uri, conectate în serie. Iată un exemplu de astfel de indicator - se potrivește în palma mâinii tale. Acest FYS-23011-BUB-21.

Un segment al acestuia este format din 4 LED-uri conectate în serie.

Pentru a ilumina unul dintre segmente (A, B, C, D, E, F sau G), trebuie să-i aplicați o tensiune de 11,2 volți (2,8 V pentru fiecare LED). Puteți face mai puțin, de exemplu, 10V, dar și luminozitatea va scădea. Excepția este punctul zecimal (DP), segmentul său este format din două LED-uri. Are nevoie doar de 5 - 5,6 volți.

Indicatorii cu două culori se găsesc și în natură. De exemplu, leduri roșii și verzi sunt încorporate în ele. Se pare că există, parcă, două indicatoare încorporate în carcasă, dar cu LED-uri de diferite culori. Dacă aplicați tensiune la ambele circuite LED, puteți obține o strălucire galbenă din segmente. Iată o diagramă de cablare pentru unul dintre acești indicatori cu două culori (SBA-15-11EGWA).

Dacă conectați pinii 1 ( ROȘU) și 5 ( VERDE) la alimentarea cu „+” prin tranzistoare cheie, puteți schimba culoarea numerelor afișate de la roșu la verde. Și dacă conectați pinii 1 și 5 în același timp, culoarea strălucitoare va fi portocalie. Acesta este modul în care vă puteți juca cu indicatorii.

Managementul indicatorilor cu șapte segmente.

Pentru a controla indicatorii cu șapte segmente în dispozitivele digitale, se folosesc registre de deplasare și decodoare. De exemplu, un decodor utilizat pe scară largă pentru controlul indicatorilor din seriile ALS333 și ALS324 este un microcircuit K514ID2 sau K176ID2. Iată un exemplu.

Și pentru a controla indicatorii moderni importați, se folosesc de obicei registrele de deplasare 74HC595. În teorie, segmentele de afișare pot fi controlate direct de la ieșirile microcontrolerului. Dar un astfel de circuit este rar folosit, deoarece acest lucru necesită folosirea unor pini ai microcontrolerului în sine. Prin urmare, registrele de deplasare sunt utilizate în acest scop. În plus, curentul consumat de LED-urile segmentului de semn poate fi mai mare decât curentul pe care îl poate furniza ieșirea obișnuită a microcontrolerului.

Pentru a controla indicatoare mari cu șapte segmente, cum ar fi FYS-23011-BUB-21, se folosesc drivere specializate, de exemplu, un microcircuit MBI5026.

Ce se află în interiorul indicatorului cu șapte segmente?

Ei bine, ceva gustos. Orice inginer electronic nu ar fi unul dacă nu ar fi interesat de „interiorul” componentelor radio. Acesta este ceea ce se află în interiorul indicatorului ALS324B1.

Patratele negre de pe baza sunt cristale LED. Aici puteți vedea și jumperii aurii care conectează cristalul la unul dintre pini. Din păcate, acest indicator nu va mai funcționa, deoarece aceleași jumperi au fost rupte. Dar putem vedea ce se ascunde în spatele panoului decorativ al tabloului de bord.

Fig.1 Amplasarea segmentelor indicatoare LED

Indicatoarele LED sunt cele mai simple mijloace de afișare a informațiilor simbolice. Designul lor este un set de LED-uri realizate sub formă de segmente de o anumită formă. Figura 1 prezintă cea mai obișnuită aspect al segmentului, care vă permite să afișați numerele 0...9 și multe alte caractere suplimentare. În interiorul carcasei, toate LED-urile au un punct de conectare comun. Integrați împreună pot fi anozi (anod comun) sau catozi (catod comun). Cele mai comune culori strălucitoare sunt roșu și verde. Cu un consum de curent egal, LED-urile roșii, de regulă, au o putere de lumină mai mare. Consumul de energie depinde de tensiunea de alimentare și de tehnologia de fabricație. Curentul de segment al indicatoarelor moderne poate fi mai mic de 1 mA.


Fig.2 Conectarea indicatorului pentru indicarea dinamică

Pentru a evidenția simbolul necesar pe indicator, va trebui să utilizați 8 pini pe microcontroler. O linie poate fi salvată prin eliminarea segmentului H când nu este necesară afișarea punctului (virgulă). Cu un număr mai mare de indicatori utilizați, numărul de linii I/O va crește semnificativ. Doi indicatori vor necesita 16 linii, 3 indicatori vor necesita 24 etc. În mod clar, pentru majoritatea aplicațiilor, o astfel de utilizare irosită a știfturilor este complet inacceptabilă. Această problemă poate fi rezolvată prin utilizarea afișajului dinamic. Pentru a face acest lucru, în loc să conecteze direct segmentele la microcontroler, acestea sunt combinate în grupuri comune, așa cum se arată în Fig. 2. Circuitul folosește un indicator TOT-3361AH-LN pentru 3 locații familiare cu catozi comuni. Portul D este folosit pentru a controla LED-urile segmentelor A...H. Catozii K0...K2 sunt conectați direct la liniile 0...2 ale portului B, respectiv (pentru indicatoare de alte tipuri cu un curent total ≥20 mA, vor fi necesare elemente tampon suplimentare). La început, simbolul corespunzător familiarității zero este afișat pe indicator. În acest caz, nivelul de tensiune este setat la scăzut pe linia PB0 și ridicat pe PB1 și PB2 (în caz contrar, simbolul va fi afișat în toate cele trei poziții). După o anumită perioadă de timp, următorul simbol în ordine este scos și acum catodul K1 este conectat la masă (există un nivel scăzut pe linia PB1, un nivel ridicat pe PB0 și PB2). În continuare, informațiile sunt afișate în cea mai înaltă poziție a indicatorului (la PB2 log.0, la PB0, PB1 log.1), apoi din nou la zero, etc. La rate de reîmprospătare a caracterelor ≥ 50 Hz, începe să apară inerția vederii umane. Pâlpâirea (efectul de comutare) dispare. Imaginea este percepută continuu, ca și cum toate simbolurile sunt iluminate constant. Un exemplu de subrutină de afișare dinamică este prezentat mai jos. Este nevoie de doi parametri: codul caracterului și numărul de poziție în care acest caracter ar trebui să fie afișat.

; Deoarece indicatorul conține 3 locuri familiare, subrutina; ieșirea caracterelor trebuie apelată cu o frecvență ≥ 150 Hz (3 ; familiaritate x 50 Hz = 150 Hz). Perioada de comutare ar trebui; fie 1/150 Hz = 6667 μs, care este la o frecvență de 1 MHz pentru AVR; va fi de 6667 de cicluri ale frecvenței de ceas a generatorului. Permanent; Cel mai convenabil este să măsurați intervalele de timp cu un cronometru de rulare; în modul de resetare coincidență (mod CTC). ATmega8 are asta; modul există pentru timer-counter pe 16 biți 1 și 8-; bit timer-counter 2. În aceste scopuri (în cazul utilizării timer-counter 1) există două registre; Spații RVV: OCR1AH ​​​​(octet mare), OCR1AL (octet scăzut). ; Când circuitul de comparație este activat, registrul de numărare; TCNT1H:TCNT1L pornește după fiecare impuls de intrare; unitatea își mărește conținutul până când acesta; valoarea nu este egală cu valoarea înscrisă în; OCR1AH:OCR1AL. În acest moment, conținutul TCNT1H:TCNT1L ; este resetat și indicatorul OCF1A este setat în TIMSK RV. Dacă; presetați bitul OCIE1A în TIMSK și bitul I în SREG, ; atunci va avea loc o tranziție la manipulatorul de întreruperi prin coincidență; din modulul de comparație A. Există și cronometru 1; de asemenea, un al doilea modul similar pentru compararea B cu registrele; comparații OCR1BH:OCR1BL a căror funcționare este similară; descris mai sus. .def data = R16 ;înregistrați cu codul simbol.def pos = R17 ;înregistrați cu numărul poziției indicatorului curent.def temp = R18 ;înregistrați pentru operațiuni intermediare.dseg .org SRAM_START ;celule în SRAM pentru buffer de afișare: . octetul 3 ;on indicator.cseg .org 0 rjmp initial ;start program.org 0x0006 ;manager de întrerupere pentru rjmp service_T1COMPA ;potrivire din modulul de comparare A ; Perioada de întrerupere în modul CTC: T=(OCR1AH:OCR1AL+1); /(Fclk/N), unde N este coeficientul de diviziune prescaler; frecvența la intrarea temporizatorului-contor 1. Modul de funcționare este setat; biți WGM13:WGM10 (WGM10 și WGM11 în controlul RV TCCR1A, ; WGM12 și WGM13 în TCCR1B), iar valoarea N este specificată prin biți; CS12:CS10 în registrul TCCR1A. Pentru perioada T = 6667 μs; (WGM13:WGM10 = 0100 – cut CTC), N =1(CS12:CS10 = 001 – ; prescaler dezactivat) și Fclk=1 MHz – conținutul OCR1AH:OCR1AL ; = 6667. .org 0x0020 initial: ldi temp,high(RAMEND) ;stack initialization out SPH,temp ldi temp,low(RAMEND) out SPL,temp . clr pos clr temp ldi temp,1 ;umpleți tamponul de afișare cu numerele 1...3 sts buffer,temp ldi temp,2 sts buffer+1,temp ldi temp,3 sts buffer+2,temp out TCCR1A,temp ldi temp ,(1<< WGM12)|(1<< CS10) out TCCR1B,temp ldi temp,high(6667) out OCR1AH,temp ldi temp,low(6667) out OCR1AL,temp ldi temp,1<< OCIE1A out TIMSK,temp sei . service_T1COMPA: ;обработчик прерывания по совпадению OCR1A in temp,SREG ;при входе сохраняем в стеке push temp ;регистры temp, SREG clr temp ldi YH,high(buffer) ;заносим в указатель Y адрес ldi YL,low(buffer) ;буфера индикации buffer add YL,pos ;добавляем к Y смещение, что соответствует adc YH,temp ;ячейке с текущей позицией pos индикатора ld data,Y ;заносим в data кодом символа текущей позиции rcall din_ind ;вызов подпрограммы индикации inc pos ;циклически изменяем номер позиции cpi pos,3 ;индикатора 0->1->2->0 etc. brne PC+2 clr pos pop temp ;la ieșire, restaurare din stack out SREG,temp ;registers temp, SREG reti ; Subrutină de afișare dinamică; ZH:ZL – index pentru conversie tabelară; R18 – registru pentru operațiuni intermediare; R16 – numărul caracterului din tabelul de conversie ind_tabl; la intrarea într-o subrutină; R17 – numărul poziţiei la intrarea în subrutină (0…2); steagul T de la intrarea în subrutină determină; prezența (T=1) sau absența (T=0) a unei virgule din_ind: clr R18 ;șterge registrul auxiliar la intrarea ldi ZH,high(2*ind_tabl) ;introduceți adresa de început a ldi ZL,low(2*ind_tabl ) în indexul Z; tabelele de conversie a caracterelor se adaugă ZL,R16 ;se adaugă la indicatorul Z un offset, adc ZH,R18 ;corespunzător poziției simbolului în tabelul lpm R16,Z ;se extrage simbolul bld R16,7 din tabelul în R16;introduceți valoarea în bitul cel mai semnificativ al lui R16 (segmentul H) clt ;virgulă, care este transmisă prin flag T ldi R18,0b11111110 sbrc R17,0 ;dacă cifra curentă este 1, atunci introducem R18 masca ldi R18,0b11111101 ;portul B pentru a porni catodul K1 sbrc R17,1 ;dacă cifra curentă este 2, atunci puneți în R18 masca ldi R18,0b11111011 ;portul B pentru a porni catodul K2 apăsați R17 ; salvați pe stivă registrul cu numărul de poziție în R17,PORTB;citește în buffer R17 starea curentă a portului ori R17,0b00000111 și R18,R17 afară PORTB,R17;stinge toate segmentele aplicând log.1 la K0. ..K2 out PORTD,R16 ; scoateți următorul simbol afară PORTB, R18 la portul D ; conectați următorul catod pop R17 la masă ; restaurați registrul cu numărul de poziție din stiva ret ind_tabl: ; tabelul unor simboluri cu un comun comun catod; HGFEDCBA Numărul de caractere HGFEDCBA din tabel.db 0b00111111, 0b00000110 ; 0,1 0, 1 .db 0b01011011, 0b01001111; 2,3 2, 3 .db 0b01100110, 0b01101101; 4,5 4, 5 .db 0b01111101, 0b00000111; 6,7 6, 7 .db 0b01111111, 0b01101111; 8,9 8, 9 .db 0b01110111, 0b01111100; A,b 10, 11 .db 0b01011110, 0b01011110; C,d 12, 13.db 0b01111001, 0b01110001; E,F 14, 15 .db 0b01000000, 0b00000000; -,spațiul 16, 17

Liniile de porturi I/O ale AVR au caracteristici de sarcină simetrică. Acestea permit curenți egali de intrare și ieșire de până la 20 mA. Prin urmare, indicatorii atât cu un anod comun, cât și cu un catod comun pot fi utilizați cu succes egal. În plus, pinii pentru conectarea segmentelor îndeplinesc foarte des funcții suplimentare ale butoanelor de sondare. În Fig. 2, de exemplu, butonul SBN este conectat la linia segmentului A prin rezistorul de limitare a curentului RN. Periodic, PD0 este configurat ca intrare pentru a citi starea butonului. În acest caz, rezistența internă de tragere acționează ca o rezistență de sarcină.


Fig.3 Reducerea numărului de pini al microcontrolerului
a - folosind un registru de deplasare
b - utilizarea indicatoarelor cu modele diferite de conectare cu LED-uri

Numărul de pini poate fi redus semnificativ dacă se utilizează microcircuite auxiliare împreună cu microcontrolerul. Figura 3a, de exemplu, arată cum este utilizat un registru de deplasare 74HC164 sau similar în acest scop. Această conexiune eliberează 6 linii I/O. În unele cazuri, poate fi justificată utilizarea decodoarelor și contoarelor de cod cu șapte segmente de diferite tipuri. În plus, există o altă oportunitate de economisire bazată pe utilizarea liniilor de port z-state. Circuitul din Fig. 3b este similar cu circuitul din Fig. 2, cu singura excepție că un indicator cu trei cifre cu un anod comun HG2 este conectat suplimentar în paralel cu indicatorul cu un catod comun HG1. Liniile PB0...PB2 realizează simultan comutarea anozilor A0...A2 ai indicatorului HG2 și, respectiv, a catozilor K0...K2 ai HG1. Când informațiile sunt afișate în poziția zero a HG2 (anodul A0), pe linia PB0 este generat un nivel de tensiune ridicat. Pe liniile portului D se setează log.0 în acele segmente care trebuie iluminate și starea z în segmentele care trebuie stinse. Când semnul cel mai mic HG1 (catodul K0) este activ, pe linia PB0 trebuie să fie prezent un nivel de tensiune scăzut și o valoare logică este transmisă la portul D la care nivelul logic 1 de pe linii corespunde segmentelor iluminate și stării z. la stins. Dacă caracterele sunt transmise în alte poziții ale indicatorului decât A0 și K0, atunci PB0 trebuie să fie comutat la o stare de impedanță ridicată. Desigur, programul de ieșire cu o astfel de schemă de comutare va fi vizibil mai complicat decât cel prezentat în Fig. Tabelul de simboluri se va dovedi a fi mult mai mare, deoarece, în primul rând, pentru fiecare dintre ele este necesar, pe lângă valoarea PORTD, va fi necesară și stocarea conținutului registrului DDRD, prin care liniile corespunzătoare trebuie să fie transferat în starea z (setat pentru intrare). Și în al doilea rând, simbolurile lui HG1 vor corespunde altor valori PORTD inverse în raport cu indicatorul cu un catod comun HG2.

Nu vă permite să porniți/opriți direct indicatorul LED sau blițul camerei; unele telefoane au această opțiune.

Cum să clipiți programatic lumini multicolore, cum să vă scrieți propria „lanterna” sau ce alte LED-uri de dispozitiv pot fi controlate - veți afla despre acest lucru mai jos.

Totul a început când, în timp ce exploram sistemul de fișiere al HTC Desire folosind ES Explorer, am dat din greșeală de directoare interesante: /sys/class/leds/blue, /sys/class/leds/flashlight etc.
Ce altceva este albastru?! Am văzut doar un indicator portocaliu și verde. Dar cel mai interesant lucru este că în interiorul acestor directoare era un fișier de luminozitate cu permisiunea de scriere! De care am profitat imediat.

De fapt, acesta nu este un fișier simplu, ci o interfață pentru lucrul cu un driver LED. Deci, scriind un număr pozitiv în fișierul /sys/class/leds/blue/brightness, vom aprinde indicatorul albastru de pe carcasa telefonului, scriind 0 - îl vom opri. La fel și cu indicatoarele chihlimbar și verde. Aprinzând împreună două LED-uri, obținem culori noi: chihlimbar + albastru = violet; verde + albastru = aqua.

Acum cum este totul programat?
public void ledControl (nume șir, luminozitate int) (

încerca (

FileWriter fw = new FileWriter("/sys/class/leds/" + nume + "/luminozitate");

fw.write(Integer.toString(luminozitate));

fw.close();

) prinde (Excepția e) (

// Controlul LED nu este disponibil

}

}


// Porniți indicatorul violet

ledControl("chihlimbar" , 255 );

ledControl ("albastru" , ​​255 );


// Faceți afișajul mai întunecat

ledControl("lcd-backlight" , 30 );


// Opriți iluminarea de fundal a butonului

ledControl ("button-backlight" , 0 );


// Organizați o lanternă de luminozitate medie

ledControl("lanterna" , 128 );

Se poate descărca un exemplu de aplicație cu coduri sursă.

Concluzie
Toate! Acum telefonul se aprinde ca un pom de Crăciun. Codul a fost testat doar pe HTC Desire care rulează Android 2.2, dar probabil va funcționa pe alte dispozitive. Scrie-mi dacă focalizarea va funcționa sau nu pe telefonul tău.