Programiramo LED na telefonu. Čemu služe LED indikatori? Šta je vodeni status u stark telefonu

Ne dozvoljava vam da direktno uključite/isključite LED indikator ili blic kamere.

Kako programski treptati raznobojna svjetla, kako napisati svoju vlastitu "batericu" ili koje druge LED diode uređaja se mogu kontrolirati - o tome ćete naučiti u nastavku.

Sve je počelo kada sam, istražujući sistem datoteka mog HTC Desirea koristeći ES Explorer, slučajno naišao na zanimljive direktorije: /sys/class/leds/blue, /sys/class/leds/flashlight, itd.
Šta je još plavo?! Vidio sam samo narandžasti i zeleni indikator. Ali najzanimljivije je da se unutar ovih direktorija nalazila datoteka svjetline s dozvolom za pisanje! Što sam odmah iskoristio.

Zapravo, ovo nije jednostavna datoteka, već sučelje za rad sa LED drajverom. Dakle, upisivanjem pozitivnog broja u datoteku /sys/class/leds/blue/brightness, uključićemo plavi indikator na kućištu telefona, upisivanjem 0 - isključićemo ga. Slično sa žutim i zelenim indikatorima. Uključujući dvije LED diode zajedno, dobijamo nove boje: amber + plava = ljubičasta; zelena + plava = akva.

Kako je to sve programirano?
public void ledControl (ime niza, int svjetlina) (

probaj (

FileWriter fw = novi FileWriter("/sys/class/leds/" + ime + "/brightness" );

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

fw.close();

) uhvatiti (izuzetak e) (

// LED kontrola nije dostupna

}

}


// Uključite ljubičasti indikator

ledControl("jantar" , 255 );

ledControl("plavo", 255);


// Učinite ekran tamnijim

ledControl("lcd-backlight" , 30 );


// Isključite pozadinsko osvjetljenje dugmeta

ledControl("button-backlight" , 0 );


// Organizirajte baterijsku lampu srednje svjetline

ledControl("flashlight" , 128 );

Može se preuzeti primjer aplikacije sa izvornim kodovima.

Zaključak
Sve! Sada telefon svijetli kao božićno drvce. Kod je testiran samo na HTC Desireu koji koristi Android 2.2, ali će vjerovatno raditi i na drugim uređajima. Pišite mi da li će fokus raditi ili ne na vašem telefonu.

Prikažite simbole na semaforima, elektronskim satovima i još mnogo toga. LED indikator je jednostavan dizajn koji prikazuje abecedne ili simboličke znakove. Strukturno, to je sklop LED dioda, gdje je svaki element osvijetljen indikatorom segmentnog znaka.

Dizajnerske karakteristike i vrste

LED indikatori se sastoje od integrisanih kola koja prikazuju različite informacije. Radni napon se kreće od 2V do 8V. Oni mogu biti:

Segmental;
- Matrix;
- Linearna skala;
- Samac

Prva sorta se najčešće koristi i standardna je vrsta. U zavisnosti od modela, konstrukcija se može sastaviti od 1-4 grupe od sedam segmenata. Veličina objekta i broj prikazanih znakova zavise od njihovog broja. Dakle, jedna grupa od sedam segmenata će prikazati samo jedan broj ili slovo. Četiri grupe se koriste u elektronskim satovima. Prilikom odabira kruga za kućnu upotrebu, kupac treba obratiti pažnju na prisutnost zajedničke anode i katode.
Osim malih indikatora, postoje i oni koji se mogu vidjeti na javnim mjestima. Za povećanje njihove svjetline koriste se sekvencijalno povezane LED diode, ugrađene u svaku pojedinačnu komponentu. Da bi indikator pokazao određeni broj ili simbol, primjenjuje se napon od 11,2 volta. Elementi imaju svoje nazive: A, B, C, D, F ili G. Operaciju određuju digitalni registri pomaka i dekoderi.

Šifrovanje podataka i integrisana kola

Takvi elementi su ugrađeni na ploču koja kontrolira napajanje naponom. Rad se ostvaruje pristupom programskom kodu i upotrebom posebnih mikrokontrolera. Koristeći programiranje, podešava se tajming koji utiče na prikaz komponenti u određenom trenutku.
Integrirano kolo pretvara binarni i binarni decimalni kod koji se isporučuje na displeju. Uobičajeni krugovi za kontrolu domaćih indikatora su K514ID2 ili K176ID2, u uvezenim modelima 74HC595. Upravljanje je moguće na dva načina:

Direktno, preko mikrokontrolera;
- Koristeći pomične registre

Prva opcija je manje uspješna zbog potrebe da se poveže mnogo pinova. Osim toga, potrošnja struje može biti veća nego što je to moguće kod mikrokontrolera. Veliki sedam-segmentni indikatori zavise od MBI5026 čipa.

Karakteristike segmentnih indikatora

U elektronici se koriste za vizuelni pregled. Struktura se sastoji od sljedećih elemenata:

Indikator za sintezu znakova je uređaj u kojem se vizualne informacije prikazuju pomoću jedne ili više komponenti;
- Polje za prikaz podataka – u njemu se prikazuju brojevi ili drugi simboli;
- Element za prikaz – konstruktivni dio koji ima vlastitu kontrolu;
- Segment – ​​element prikaza informacija, predstavljen u obliku ravnih ili zakrivljenih linija;
- Familiar space – prostor potreban za prikaz jednog znaka

Svi elektronski uređaji obavljaju osnovne zadatke:

1. Vizuelne informacije.
2. Imaju kompletan dizajn.
3. Opremljen elektronskom kontrolom

Modifikacije segmenata razlikuju se od modifikacija matrice po tome što je svaki element jedinstven. Oblik znakova je dizajniran posebno za prikaz određenih brojeva ili simbola. Potonji se ne zasnivaju na sedam, već na devet, četrnaest ili šesnaest segmenata. Kada broj prelazi 7, onda je sasvim racionalno koristiti indikaciju dinamičkog prebacivanja. LED displej i indikacija moguća je i u dvobojnom obliku. Koriste se sijalice različitih boja koje se spajaju u zajedničko kolo. Kombinacijom nalaza dobija se kombinovana nijansa.

Zaključak

Rad indikatora je nemoguć bez LED dioda. Takvi uređaji su relevantni ne samo za radio opremu, već se uspješno koriste i za znakove, tajmere i indikatore. Za prikaz informacija mogu se koristiti uređaji različitih tipova kola i upravljanja.
Podijelite informacije o ovoj temi na svojim stranicama na društvenim mrežama.

Sigurno ste već vidjeli indikatore "osam". Ovo je LED indikator od sedam segmenata, koji služi za prikaz brojeva od 0 do 9, kao i decimalne zapete ( D.P.- decimalni zarez) ili zarez.

Strukturno, ovaj proizvod je sklop LED dioda. Svaka LED dioda u sklopu osvjetljava svoj segment znaka.

U zavisnosti od modela, sklop se može sastojati od 1 - 4 grupe od sedam segmenata. Na primjer, indikator ALS333B1 se sastoji od jedne grupe od sedam segmenata, koja može prikazati samo jednu znamenku od 0 do 9.

Ali LED indikator KEM-5162AS već ima dvije grupe od sedam segmenata. Dvocifren je. Sljedeća fotografija prikazuje različite LED indikatore od sedam segmenata.

Tu su i indikatori sa 4 grupe od sedam segmenata - četvorocifreni (na slici - FYQ-5641BSR-11). Mogu se koristiti u domaćim elektronskim satovima.

Kako su indikatori sa sedam segmenata prikazani na dijagramima?

Budući da je sedmosegmentni indikator kombinovani elektronski uređaj, njegova slika na dijagramima malo se razlikuje od njegovog izgleda.

Treba samo obratiti pažnju na činjenicu da svaki pin odgovara određenom segmentu znaka na koji je povezan. Postoji i jedan ili više terminala zajedničke katode ili anode, ovisno o modelu uređaja.

Karakteristike indikatora sa sedam segmenata.

Uprkos prividnoj jednostavnosti ovog dijela, on također ima svoje posebnosti.

Prvo, sedmosegmentni LED indikatori dolaze sa zajedničkom anodom i zajedničkom katodom. Ovu značajku treba uzeti u obzir prilikom kupovine za domaći dizajn ili uređaj.

Evo, na primjer, pinout 4-cifrenog indikatora koji nam je već poznat FYQ-5641BSR-11.

Kao što vidite, anode LED dioda svake znamenke se kombinuju i izlaze na poseban pin. Katode LED dioda koje pripadaju segmentu znakova (npr. G), povezani zajedno. Mnogo ovisi o tome kakav dijagram povezivanja ima indikator (sa zajedničkom anodom ili katodom). Ako pogledate dijagrame sklopova uređaja koji koriste indikatore od sedam segmenata, bit će jasno zašto je to toliko važno.

Pored malih indikatora, postoje veliki, pa čak i vrlo veliki. Mogu se vidjeti na javnim mjestima, obično u obliku zidnih satova, termometara i informatora.

Da bi se povećala veličina brojeva na ekranu i istovremeno održala dovoljna svjetlina svakog segmenta, koristi se nekoliko LED dioda, povezanih u seriju. Evo primjera takvog indikatora - stane na dlan. Ovo FYS-23011-BUB-21.

Jedan segment sastoji se od 4 LED diode povezane u seriju.

Da biste osvijetlili jedan od segmenata (A, B, C, D, E, F ili G), potrebno je na njega primijeniti napon od 11,2 volta (2,8 V za svaku LED diodu). Možete napraviti manje, na primjer, 10V, ali će se i svjetlina smanjiti. Izuzetak je decimalni zarez (DP), njegov segment se sastoji od dvije LED diode. Potrebno mu je samo 5 - 5,6 volti.

Dvobojni indikatori se također nalaze u prirodi. Na primjer, crvene i zelene LED diode su ugrađene u njih. Ispostavilo se da postoje, takoreći, dva indikatora ugrađena u kućište, ali sa LED diodama različitih boja. Ako dovedete napon na oba LED kruga, možete dobiti žuti sjaj iz segmenata. Evo dijagrama ožičenja za jedan od ovih dvobojnih indikatora (SBA-15-11EGWA).

Ako spojite pinove 1 ( RED) i 5 ( ZELENI) na “+” napajanje preko ključnih tranzistora, možete promijeniti boju prikazanih brojeva iz crvene u zelenu. A ako spojite pinove 1 i 5 u isto vrijeme, boja sjaja će biti narandžasta. Ovako se možete igrati sa indikatorima.

Upravljanje indikatorima od sedam segmenata.

Za kontrolu sedmosegmentnih indikatora u digitalnim uređajima koriste se pomični registri i dekoderi. Na primjer, široko korišten dekoder za kontrolu indikatora serije ALS333 i ALS324 je mikro krug K514ID2 ili K176ID2. Evo primjera.

A za kontrolu modernih uvezenih indikatora obično se koriste registri pomaka 74HC595. U teoriji, segmenti displeja se mogu kontrolisati direktno sa izlaza mikrokontrolera. Ali takav sklop se rijetko koristi, jer to zahtijeva korištenje dosta pinova samog mikrokontrolera. Stoga se u tu svrhu koriste pomačni registri. Osim toga, struja koju troše LED diode segmenta znaka može biti veća od struje koju može pružiti običan izlaz mikrokontrolera.

Za kontrolu velikih indikatora od sedam segmenata, kao što je FYS-23011-BUB-21, koriste se specijalizovani drajveri, na primjer, mikrokolo MBI5026.

Šta se nalazi unutar indikatora od sedam segmenata?

Pa, nešto ukusno. Nijedan inženjer elektronike ne bi bio takav da ga ne zanimaju "unutrašnjosti" radio komponenti. Ovo je ono što se nalazi unutar indikatora ALS324B1.

Crni kvadrati na bazi su LED kristali. Ovdje možete vidjeti i zlatne skakače koji spajaju kristal sa jednom od iglica. Nažalost, ovaj indikator više neće raditi, jer su ti isti džamperi otkinuti. Ali možemo vidjeti šta se krije iza dekorativnog panela semafora.

Sl.1 Položaj segmenata LED indikatora

LED indikatori su najjednostavnije sredstvo za prikazivanje simboličkih informacija. Njihov dizajn je skup LED dioda napravljenih u obliku segmenata određenog oblika. Slika 1 prikazuje najčešći izgled segmenta, koji vam omogućava da prikažete brojeve 0...9 i mnoge druge dodatne znakove. Unutar kućišta sve LED diode imaju zajedničku priključnu tačku. Integrirane zajedno mogu biti anode (zajednička anoda) ili katode (zajednička katoda). Najčešće boje sjaja su crvena i zelena. Uz jednaku potrošnju struje, crvene LED diode, po pravilu, imaju veću svjetlosnu snagu. Potrošnja energije zavisi od napona napajanja i tehnologije proizvodnje. Struja segmenta modernih indikatora može biti manja od 1 mA.


Slika 2 Povezivanje indikatora za dinamičku indikaciju

Da biste istakli traženi simbol na indikatoru, trebat ćete koristiti 8 pinova na mikrokontroleru. Jedan red se može sačuvati eliminacijom H segmenta kada prikazivanje tačke (zarez) nije potrebno. Sa većim brojem korištenih indikatora, broj I/O linija će se značajno povećati. Dva indikatora će zahtijevati 16 linija, 3 indikatora će zahtijevati 24, itd. Jasno je da je za većinu aplikacija takva rasipnička upotreba igala potpuno neprihvatljiva. Ovaj problem se može riješiti korištenjem dinamičkog prikaza. Da bi se to postiglo, umjesto direktnog povezivanja segmenata sa mikrokontrolerom, oni se kombinuju u zajedničke grupe, kao što je prikazano na slici 2. Kolo koristi TOT-3361AH-LN indikator za 3 poznate lokacije sa uobičajenim katodama. Port D se koristi za kontrolu LED dioda segmenata A...H. Katode K0...K2 su direktno povezane na vodove 0...2 priključka B, respektivno (za indikatore drugih tipova sa ukupnom strujom od ≥20 mA bit će potrebni dodatni pufer elementi). Na početku se na indikatoru prikazuje simbol koji odgovara nultom poznavanju. U ovom slučaju, nivo napona je postavljen na nizak na liniji PB0, a visok na PB1 i PB2 (u suprotnom će se simbol prikazati na sve tri pozicije). Nakon određenog vremenskog perioda izlazi sledeći simbol po redu i sada je katoda K1 spojena na masu (na liniji PB1 je nizak nivo, na PB0 i PB2 visok nivo). Zatim se informacija prikazuje na najvišoj poziciji indikatora (na PB2 log.0, na PB0, PB1 log.1), zatim ponovo na nuli, itd. Pri učestalosti osvježavanja karaktera ≥ 50 Hz počinje se pojavljivati ​​inercija ljudskog vida. Treperenje (efekat prebacivanja) nestaje. Slika se percipira kontinuirano, kao da svi simboli neprestano svijetle. Primjer potprograma dinamičkog prikaza dat je u nastavku. Potrebna su dva parametra: kod karaktera i broj pozicije na kojoj bi se ovaj znak trebao prikazati.

; Pošto indikator sadrži 3 poznata mjesta, potprogram; Izlaz karaktera mora biti pozvan sa frekvencijom ≥ 150 Hz (3 ; poznavanje x 50 Hz = 150 Hz). Period prebacivanja treba; biti 1/150 Hz = 6667 μs, što je na frekvenciji od 1 MHz za AVR; će biti 6667 ciklusa frekvencije generatora takta. Permanent; Najpogodnije je mjeriti vremenske intervale pomoću tajmera koji radi; u režimu resetovanja slučajnosti (CTC režim). ATmega8 ima ovo; postoji režim za 16-bitni brojač tajmera 1 i 8-; bit timer-counter 2. Za ove svrhe (u slučaju korištenja timer-counter 1) postoje dva registra; RVV razmaci: OCR1AH ​​(visoki bajt), OCR1AL (mali bajt). ; Kada je sklop za poređenje uključen, registar za brojanje; TCNT1H:TCNT1L počinje nakon uključivanja svakog dolaznog impulsa; jedinica povećava svoj sadržaj dok ne; vrijednost nije jednaka upisanoj vrijednosti; OCR1AH:OCR1AL. U ovom trenutku sadržaj TCNT1H:TCNT1L ; se resetuje i OCF1A zastavica je postavljena u TIMSK RV. If; unapred podesite OCIE1A bit u TIMSK i I bit u SREG, ; tada će doći do prelaska na rukovalac prekida slučajno; iz uporednog modula A. Tajmer-brojač 1 takođe postoji; takođe drugi sličan modul za poređenje B sa registrima; poređenja OCR1BH:OCR1BL čije je funkcionisanje slično; gore opisano.<< 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, itd.

Linije I/O porta AVR-a imaju simetrične karakteristike opterećenja. Omogućavaju jednake ulazne i izlazne struje do 20 mA. Stoga se indikatori sa zajedničkom anodom i zajedničkom katodom mogu koristiti s jednakim uspjehom. Osim toga, pinovi za povezivanje segmenata vrlo često obavljaju dodatne funkcije tipki za prozivanje. Na slici 2, na primjer, dugme SBN je povezano na liniju segmenta A preko otpornika za ograničavanje struje RN. Povremeno, PD0 se konfiguriše kao ulaz za čitanje stanja dugmeta. U ovom slučaju, unutarnji pull-up otpornik djeluje kao otpor opterećenja.


Sl.3 Smanjenje broja pinova mikrokontrolera
a - korištenjem registra pomaka
b - korištenjem indikatora s različitim obrascima povezivanja LED-a

Broj pinova se može značajno smanjiti ako se uz mikrokontroler koriste pomoćna mikro kola. Slika 3a, na primjer, pokazuje kako se 74HC164 pomični registar ili slično koristi u tu svrhu. Ova veza oslobađa 6 I/O linija. U nekim slučajevima može biti opravdano koristiti sedmosegmentne kodne dekodere i brojače različitih tipova. Osim toga, postoji još jedna prilika za uštedu zasnovana na korištenju portova z-state. Kolo na slici 3b slično je kolu na slici 2, s tim što je trocifreni indikator sa zajedničkom anodom HG2 dodatno povezan paralelno sa indikatorom sa zajedničkom katodom HG1. Linije PB0...PB2 istovremeno vrše prebacivanje anoda A0...A2 indikatora HG2 i katoda K0...K2 HG1, respektivno. Kada se informacija prikaže na nultom položaju HG2 (anoda A0), na liniji PB0 se generiše visoki napon. Na linijama porta D postavlja se log.0 u onim segmentima koji moraju biti osvijetljeni i z-stanje u segmentima koji se moraju ugasiti. Kada je najniži predznak HG1 (katoda K0) aktivan, na liniji PB0 mora biti prisutan nizak napon, a logička vrijednost izlazi na port D na kojoj nivo logičke 1 na linijama odgovara osvijetljenim segmentima i z-stanju da se ugasi. Ako se znakovi izlaze na položaje indikatora koji nisu A0 i K0, tada se PB0 mora prebaciti u stanje visoke impedancije. Naravno, izlazni program za takvu shemu prebacivanja bit će znatno složeniji od onog prikazanog na Sl. Tablica simbola će se pokazati mnogo veća jer je, prvo, za svaku od njih potrebno, osim vrijednosti PORTD, biti potrebno i pohraniti sadržaj registra DDRD, kroz koji se moraju provući odgovarajući redovi. prebačen u z-stanje (podešeno za unos). I drugo, simboli HG1 će odgovarati drugim, inverznim vrijednostima PORTD u odnosu na indikator sa zajedničkom katodom HG2.

Ne dozvoljava vam da direktno uključite/isključite LED indikator ili blic kamere.

Kako programski treptati raznobojna svjetla, kako napisati svoju vlastitu "batericu" ili koje druge LED diode uređaja se mogu kontrolirati - o tome ćete naučiti u nastavku.

Sve je počelo kada sam, istražujući sistem datoteka mog HTC Desirea koristeći ES Explorer, slučajno naišao na zanimljive direktorije: /sys/class/leds/blue, /sys/class/leds/flashlight, itd.
Šta je još plavo?! Vidio sam samo narandžasti i zeleni indikator. Ali najzanimljivije je da se unutar ovih direktorija nalazila datoteka svjetline s dozvolom za pisanje! Što sam odmah iskoristio.

Zapravo, ovo nije jednostavna datoteka, već sučelje za rad sa LED drajverom. Dakle, upisivanjem pozitivnog broja u datoteku /sys/class/leds/blue/brightness, uključićemo plavi indikator na kućištu telefona, upisivanjem 0 - isključićemo ga. Slično sa žutim i zelenim indikatorima. Uključujući dvije LED diode zajedno, dobijamo nove boje: amber + plava = ljubičasta; zelena + plava = akva.

Kako je to sve programirano?
public void ledControl (ime niza, int svjetlina) (

probaj (

FileWriter fw = novi FileWriter("/sys/class/leds/" + ime + "/brightness" );

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

fw.close();

) uhvatiti (izuzetak e) (

// LED kontrola nije dostupna

}

}


// Uključite ljubičasti indikator

ledControl("jantar" , 255 );

ledControl("plavo", 255);


// Učinite ekran tamnijim

ledControl("lcd-backlight" , 30 );


// Isključite pozadinsko osvjetljenje dugmeta

ledControl("button-backlight" , 0 );


// Organizirajte baterijsku lampu srednje svjetline

ledControl("flashlight" , 128 );

Može se preuzeti primjer aplikacije sa izvornim kodovima.

Zaključak
Sve! Sada telefon svijetli kao božićno drvce. Kod je testiran samo na HTC Desireu koji koristi Android 2.2, ali će vjerovatno raditi i na drugim uređajima. Pišite mi da li će fokus raditi ili ne na vašem telefonu.