двоколірні світлодіоди

На ринку існують двоколірні світлодіоди. Влаштовані вони так: усередині корпусу встановлені два світлодіоди різного кольору, з'єднаних паралельно але в різній полярності. Таким чином, якщо прикласти напругу однієї полярності - світиться один кристал і світлодіод випромінює, наприклад, червоне світло. Якщо змінити полярність - загориться інший кристал, і стане горіти зелений колір. Зрозуміло, що протилежний світлодіод не пропускає струм не своюполярності, і не горить.

Це дозволяє одним світлодіодом відображати, наприклад, два стану якоїсь системи: зелений для нормальної роботи і червоний для індикації помилки. Досить часто такі світлодіоди ставляться всередину кнопки, і натискання кнопки дублюється переморгуванням світлодіода, або перемиканням його в інший колір (звичайно, це робиться зовнішнім МК).

Але не всі знають, що таким світлодіодом можна показувати ще і третій колір! Ніякої rocket science, потрібно просто швидко перемикати світлодіод з одного кольору в інший. Я покажу, як це зробити на STM32 - спочатку неправильно, а потім правильно.

Адже нам важлива тільки різниця потенціалів на висновках світлодіода? Тому найзручніше вчинити так: підключимо світлодіод до двох ногах введення-виведення, для включення одного кольору подамо «1» на першу ногу і «0» на другу. На светодиоде, таким чином, буде напруга +3,3, і світиться зелений колір. Якщо ж поміняти полярність, подати «0» на першу ногу і «1» на другу - на світлодіоді вийде напруга -3,3В, і загориться червоний колір. Звичайно, не можна забувати про струмообмежувальні резистори, який не дасть струму піднятися вище 10-20мА.

Неправильний, але простий метод

Все дуже просто: підключаємо світлодіод через 330Ом резистор до яких-небудь ніжок введення-виведення, і в циклі їх включаємо і вимикаємо. Я використовую PB0 і PB2 на платі STM32VLDiscovery.

Код буде дуже простим:

Більш складний, але правильний метод

Скористаємося таймерами в кристалі STM32! Вони можуть взяти на себе реалізацію всіх цих затримок і циклів, розвантаживши від них ядро. Достатньо всього один раз налаштувати таймер, включити його - і можна займатися своїми справами, зрідка відволікаючись на переривання.

Регулювання яскравості двоколірного світлодіода

З двоколірними світлодіодами завжди виникає проблема - яскравість кристалів різна, і якщо включати їх з однаковою скважностью (наприклад, 50% часу червоний, 50% часу зелений) - кольори змішуються неточно, і виходить не те що ми хотіли. Червоні світлодіоди завжди виглядають яскравіше, ніж зелені - і виходить не жовтий і навіть не помаранчевий колір, а практично повністю червоний.

Очевидний програмний спосіб регулювання яскравості - поставити різні тривалості затримок: в першому прикладі для цього достатньо змінити дефайни del1 і del2, у другому прикладі потрібно завантажувати в регістр ARR різні значення на різних етапах. Але це все зрозуміло і питань не виникає.

Апаратний спосіб регулювання для кого-то може бути не настільки очевидним. Зрозуміло що можна змінити опір струмообмежувальні резистора, але так зміниться яскравість обох кристалів. Тому зробимо трохи хитріше - пустимо струм в одному напрямку по одному резистору, а в іншому напрямку - по іншому. Це, звичайно, дуже легко зробити двома діодами.

двоколірні світлодіоди

Схожі статті