За даним принципом конструюються дімери для управління світлодіодними стрічками, звичайними лампами розжарювання та управління потужністю двигунів Підключення світлодіода до схеми з потенціометром
- Ми підключили «землю» світлодіода і змінного резистора (потенціометра) до довгої рейці «-» макетної плати, і вже її з'єднали з входом 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 за допомогою оператора присвоювання =, який записує те, що знаходиться праворуч від нього в ту змінну, яка стоїть зліва