Прикла коду блимання світлодіодом (Blink), схема підключення та розрахунок струмообмежувального резистора на Arduino Uno. Цей приклад можна використати для для інших Arduino NANO, MINI, MEGA, DUO, а також ESP32, ESP8266. Також поблимаєм вбудованим світлодіод на платі Uno, для якого резистор вже розпаяний на платі та не потрібно додаткових компонентів.
Розрахунок резистора
Катод світлодіода підключається до GND, анод через струмообмежувальний резистор до живлення. Для розрахунку резостора потрібно знати падіння напруги на світлодіоді, його струм та напругу живлення.
Типовий струм для індикаторних світлодіодів 20 mA.
Таблиця падіння напруги для більшості індикаторних світлодіодів.
Колір | Напруга |
---|---|
Інфрачервоний | ~ 1.6 V |
Червоний | 1.6 – 2.0 V |
Помаранчовий | 2.0 – 2.1 V |
Жовтий | 2.1 – 2.2 V |
Зелений | 1.9 – 3.5 V |
Синій | 2.5 – 3.6 V |
Білий | 2.8 – 4.0 V |
Формула розрахунку струмообмежувального резистора
Rs = (Us – Uf ) / If ;
Де Rs – опір струмообмежувального резистора в Ом.
Us – Напруга живлення до якого підключатиметься світлодіод, в нашому випадку 5 V.
Uf – Падіння напруги на світлодіоді, в нашому випадку червоний світлодіод 1.6 – 2.0 V.
If – струм світлодіода, в нашому випадку 20 mA, або 0.02 A.
Розраховуєм Rs = (5 – 2) / 0.02 = 150 Om
Опір резистора світлодіода 150 Ом, для нашого прикладу резистор підійде від 150 Ом до 1000 Ом (1 кОм). Чим більший буде опір тим тмянішим буде світлодіод, нам для блимання яскравість неважлива.
Максимально допустимий струм на одному піні у Arduino 40 mA, номінальний 20 mA. Тому навантаження яке споживає більше 40 mA потрібно підключати через транзистор або реле. Керування потужним навантаженням за допомогою Arduino.
Код для Arduino Uno
Будемо вмикати світлодіод на 1 секунду та вимикати на пів секунди.
#include <Arduino.h>
#define LED_PIN 10 // Пін для керування світлодіодом.
void setup()
{
pinMode(LED_PIN, OUTPUT); // Встановлюєм LED_PIN як вихід.
}
void loop()
{
digitalWrite(LED_PIN, HIGH); // Встановлюєм високий рівень на виході LED_PIN.
delay(1000); // Очікуєм 1000 ms
digitalWrite(LED_PIN, LOW); // Встановлюєм низький рівень на виході LED_PIN.
delay(500); // Очікуєм 500 ms
}
Для вбудованого світлодіода змініть в коді LED_PIN з 10 на 13.
Керування яскравістю світлодіода за допомогою PWM (широтно імпульсна модуляція).