Використання аналогового входу і потенціометра для управління світлодіодом

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

Використання аналогового входу і потенціометра для управління світлодіодом

Повідомлення Arduino » 24 травня 2017 11:37

В прикладі використовуються схеми: зчитування напруги з поенціометра через аналоговий вхід, використання результату дискретного значення напруги для управління ШІМ методом яскравістю світлодіода - передача значення напруги в цифровому вигляді на вхід керування напругою джерела світла
За даним принципом конструюються дімери для управління світлодіодними стрічками, звичайними лампами розжарювання та управління потужністю двигунів
l3-svetilniksupravljarkost1.jpg
Підключення світлодіода до схеми з потенціометром
  • Ми підключили «землю» світлодіода і змінного резистора (потенціометра) до довгої рейці «-» макетної плати, і вже її з'єднали з входом GND мікроконтролера. Таким чином ми використовували менше входів і від макетке до контролера тягнеться менше проводів.
  • Підписи «+» і «-» на макетній платі не зобов'язують вас використовувати їх строго для живлення, просто найчастіше вони використовуються саме так і маркування нам допомагає
  • Не важливо, яка з крайніх ніжок потенціометра буде підключена до 5 В, а яка до GND, зміниться тільки напрямок, в якому потрібно крутити ручку для збільшення напруги. Запам'ятайте, що сигнал ми зчитуємо з середньою ніжки
  • Для зчитування аналогового сигналу, що приймає широкий спектр значень, а не просто 0 або 1, як цифровий, підходять тільки порти, помічені на платі як «ANALOG IN» і пронумеровані з префіксом A. Для Arduino Uno - це A0-A5.
// даємо розумні імена для пінів з світлодіодом
// і потенціометром (англ potentiometer або просто «pot»)
#define LED_PIN 9
#define POT_PIN A0

void setup ( )
{
// пін з світлодіодом - вихід, як і раніше ...
pinMode ( LED_PIN, OUTPUT ) ;

// ... а ось пін з потенціометром повинен бути входом
// (англ. «Input»): ми хочемо зчитувати напруга,
// що видається їм
pinMode ( POT_PIN, INPUT ) ;
}

void loop ( )
{
// заявляємо, що далі ми будемо використовувати 2 змінні з
// іменами rotation і brightness, і що зберігати в них будемо
// цілі числа (англ. «integer», скорочено просто «int»)
int rotation, brightness ;

// зчитуємо в rotation напруга з потенціометра:
// мікроконтролер видасть число від 0 до 1023
// пропорційне куту повороту ручки
rotation = analogRead ( POT_PIN ) ;

// в brightness записуємо отримане раніше значення rotation
// поділене на 4. Оскільки в змінних ми побажали зберігати
// цілі значення, дрібна частина від ділення буде відкинута.
// В результаті ми отримаємо ціле число від 0 до 255
brightness = rotation / 4 ;

// видаємо результат на світлодіод
analogWrite ( LED_PIN, brightness ) ;
}


Пояснення до коду програми
  • За допомогою директиви #define ми сказали компілятору замінювати ідентифікатор POT_PIN на A0- номер аналогового входу. Ви можете зустріти код, де звернення до аналогового порту буде за номером без індексу A. Такий код буде працювати, але щоб уникнути плутанини з цифровими портами використовуйте індекс.
  • Змінним прийнято давати назви, що починаються з малої літери.
  • Щоб використовувати змінну, необхідно її оголосити, що ми і робимо інструкцією:
    INT обертання, яскравість ;
  • Для оголошення змінної необхідно вказати її тип, тут - int(від англ. Integer) - цілочисельне значення в діапазоні від -32 768 до 32 767, з іншими типами ми познайомимося пізніше
  • Змінні одного типу можна оголосити в одній інструкції, перерахувавши їх через кому, що ми і зробили
  • Функція analogRead(pinA) повертає цілочисельне значення в діапазоні від 0 до 1023, пропорційна напрузі, поданим на аналоговий вхід, номер якого ми передаємо функції як параметр pinA
  • Зверніть увагу, як ми отримали значення, повернене функцією analogRead(): ми просто помістили його в змінну rotation за допомогою оператора присвоювання =, який записує те, що знаходиться праворуч від нього в ту змінну, яка стоїть зліва

Відповісти

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