Există LED-uri cu două culori pe piață. Ele sunt aranjate astfel: în interiorul carcasei există două LED-uri de culoare diferită, conectate în paralel, dar cu polaritate diferită. Astfel, dacă aplicați o tensiune de o polaritate - un cristal este aprins și LED-ul emite, de exemplu, o lumină roșie. Dacă schimbați polaritatea, se va aprinde un alt cristal și culoarea verde va deveni verde. Este clar că LED-ul opus nu trece curentul, nu polaritatea acestuia, și nu arde.
Aceasta permite unui LED să afișeze, de exemplu, două stări ale unui sistem: verde pentru funcționare normală și roșu pentru indicarea erorilor. Destul de des, aceste LED-uri sunt puse în interiorul butonului, iar apăsarea butonului este dublată de o clipire a LED-ului sau prin comutarea acestuia într-o altă culoare (bineînțeles, aceasta se face de către un MC extern).
Dar nu toată lumea știe că un astfel de LED poate arăta, de asemenea, oa treia culoare! Nu știință de rachete, trebuie doar să comutați rapid LED-ul de la o culoare la alta. Vă voi arăta cum să faceți acest lucru pe STM32 - mai întâi greșit, atunci bine.
Suntem doar importanti diferenta in potentialele pe terminalele LED-ului. Prin urmare, cel mai convenabil mod de a face acest lucru este: conectați LED-ul la cele două picioare I / O, pentru a activa o singură culoare, vom da "1" primului picior și "0" celui de-al doilea. Pe LED, astfel, va exista o tensiune de + 3.3V, iar culoarea verde va lumina. Dacă schimbați polaritatea, aplicați "0" la primul picior și "1" la cel de-al doilea - pe LED-ul veți obține o tensiune de -3,3 V, iar lumina roșie se va aprinde. Desigur, nu trebuie să uităm de rezistența limitatoare de curent, care nu va permite ca curentul să crească peste 10-20 mA.
O metodă incorectă, dar simplă
Este foarte simplu: conectăm LED-ul prin rezistența de 330 Ohm la niște picioare de intrare / ieșire și le pornim și oprind în ciclu. Folosesc PB0 și PB2 pe placa STM32VLDiscovery.
Codul va fi foarte simplu:
O metodă mai complexă, dar corectă
Folosiți cronometrele din cristal STM32! Ei pot presupune realizarea tuturor acestor întârzieri și cicluri, descărcând miezul de la ei. Este suficient doar să setați cronometrul, să-l activați - și puteți să vă faceți propriile lucruri, ocazional distras de întreruperi.
Reglarea luminozității unui LED cu două culori
Cu LED-uri în două culori este întotdeauna o problemă - luminozitatea cristalelor este diferită, iar în cazul în care conțin același raport de taxe (de exemplu, 50% din timp roșu, verde 50% din timp) - culori amestecate inexacte, și se pare că nu ceea ce ne-am dorit. LED-urile roșii arată întotdeauna mai strălucitoare decât cele verzi - și se dovedește nu galben sau chiar portocaliu, dar aproape complet roșu.
Modul evident de a regla luminozitatea este de a seta diferite durate de întârziere: în primul exemplu, trebuie doar să schimbați del1 și del2, în al doilea exemplu, trebuie să încărcați diferite valori în registrul ARR în pași divergili. Dar este clar și nu există întrebări.
Modul hardware de ajustare pentru cineva poate să nu fie atât de evident. Este clar că puteți modifica rezistența rezistenței limitatoare de curent, dar aceasta va schimba luminozitatea ambelor cristale. Deci, să facem un pic mai dificil - să începem curentul într-o direcție cu un singur rezistor și în cealaltă direcție - într-un alt mod. Acest lucru, desigur, este foarte ușor de făcut cu două diode.