Пульсар на світлодіодній шкалі

Способи підключення світлодіодів, біжучих вогнів, світлодіодних панелей та індикаторів, гирдлянди, світлодіодні стрічки та керування ними. Дисплеї та цифрові сегментні індикатори
Відповісти
Аватар користувача
Arduino
Site Admin
Повідомлень: 98
З нами з: 16 травня 2017 18:18

Пульсар на світлодіодній шкалі

Повідомлення Arduino » 25 травня 2017 15:17

В цьому прикладі вивчається:
  • керування навантаженням через транзистор - нарощуємо яскравість світлодіодним шкали.
Світлодіодна шкала - це кілька світлодіодів в одному корпусі. Нам потрібно щоб живлення йшло до анодів світлодіодів, а катоди зєднювалися із мінусом. Використовується транзистор в якості підсилювача струму.
База біполярного транзистора - це його середня ніжка. Якщо повернути транзистор плоскою стороною до себе, ніжками вниз, то ліва ніжка це колектор, а права - емітер.
Якщо цю схему зібрати без резистора між базою транзистора і портом Arduino, ми практично влаштуємо коротке замикання порту на землю. Рано чи пізно це виведе з ладу транзистор або вихід мікроконтролера.
Навіщо тут взагалі транзистор? Без нього така кількість світлодіодів буде споживати струму більше ніж дозволених 40 мА, які може собі дозволити Arduino. Тому ми беремо живлення з порту 5V, розрахованого на струм до 500 мА, а на цифровий порт ставимо транзистор, щоб за допомогою малого струму управляти великим.
l6-pulsar1.jpg
В даному випадку ми включили 10 світлодіодів паралельно, кожен через окремий резистор. Включати їх через один резистор неправильно: навіть світлодіоди з однієї партії мають мінімальний розкид вольтамперних характеристик, внаслідок чого вони:
  • Світилися б з різною яскравістю
  • Через мінімальної різниці в часі включення, більший струм, що пройшов через перший ввімкнувся світлодіод, міг би вивести його з ладу. І так по ланцюжку.

#define CONTROL_PIN 9
// змінні верхнього рівня, тобто оголошені поза функцій,
// називають глобальними. Їх значення зберігаються весь час,
// поки працює мікроконтролер
int brightness = 0 ;

void setup ( )
{
pinMode ( CONTROL_PIN, OUTPUT ) ;
}

Void loop ( )
{
// збільшуємо значення яскравості на одиницю, щоб наростити
// яскравість. Однак яскравість не повинна бути більше 255, тому
// використовуємо операцію залишку від ділення, щоб при
// досягненні значення 255, таким значенням знову став 0
// Y% X - це залишок від ділення Y на X;
// плюс, мінус, ділити, помножити, дужки - як в алгебрі.
brightness = ( brightness + 1 ) % 256 ;

// подаємо обчислений ШІМ-сигнал яскравості на пін з базою
// керуючого транзистора
analogWrite ( CONTROL_PIN, brightness ) ;

// чекаємо 10 мс перед наступним нарощуванням яскравості. Таким
// чином, повне розжарення буде відбуватися протягом
// 256 × 10 = 2560 мс
delay ( 10 ) ;
}

Відповісти

Повернутись до “Індикація та LED, дисплеї”