Ардуино: управление светодиодом

Как известно, первая программа, которую человек пишет при изучении программирования называется «Hello World!». Суть этой программы сводится к тому, чтобы после запуска на экране появилась указанная простая фраза.

В мире микроэлектроники, симметричной задачей смело можно назвать мигание светодиодом :) Другими словами, нам необходимо управлять включением и выключением светодиода при помощи микроконтроллера. В нашем случае, таким контроллером станет Ардуино. Приступим!

1. Устройство светодиода

Светодиод — это устройство, которое представляет собой полупроводниковый прибор, способный излучать свет при пропускании через него электрического тока в прямом направлении (от анода к катоду). Ниже приведена схема типичного светодиода с линзой.

LED

Для того чтобы правильно включить светодиод в электрическую цепь, необходимо отличать катод от анода. Сделать это можно по двум признакам:

1) Анод светодиода имеет более длинный проводник
2) Со стороны катода, корпус светодиода немного срезан

А вот так выглядят светодиоды «в живую».

LEDs-2

Это обычные одноцветные светодиоды. А бывают еще двух, и даже трехцветные. Вот так, например, выглядит трехцветный (RGB) светодиод:

RGB_LED

У этого светодиода сразу четыре ноги. Одна — катод, а три другие — аноды для трех разных цветов.

В современной микроэлектронике применяются миниатюрные светодиоды для поверхностного монтажа. Такие индикаторы, например, имеются на Ардуино Уно для информирования пользователя о состоянии системы. Вот он светит зелененьким цветом:

Arduino_led-4

2. Схема включения

Чтобы зажечь светодиод, нам потребуется подключить его к одному из цифровых выводов Ардуино. Пусть это будет линия №2.

Катод светодиода подключим к минусу (земля), а анод пойдет у нас на линию №2 через токозадающий резистор 150 — 250 Ом.

Принципиальная схема подключения светодиода

ledx1_light_схема

Внешний вид макета

ledx1_bb

Резистор помогает решить две задачи. Во-первых, при подключении к источнику питания, светодиод старается бесконтрольно пропустить через себя как можно больше тока. Это может привести к самосожжению самого светодиода и к повреждению контроллера! Обычному светодиоду нужно всего 20 мА тока.

Вторую функцию, которую выполняет резистор — снижение напряжение с 5 Вольт до 2 Вольт, что для многих стандартных светодиодов является рабочим напряжением.

Учитывая эти два пожелания, мы можем рассчитать номинал нашего токозадающего резистора. Закона Ома в студию!

I = U/R;
R = U/I = (5В-2В)/20мА = 150 Ом

Итак, мы выяснили, что токозадающий резистор для классических выводных светодиодов имеет номинал 150 Ом, именно его мы и установим в схему.

Вообще, если под рукой нет резистора на 150Ом, можно любой другой большего номинала. Просто светодиод будет гореть менее ярко. Big deal.

3. Функция вывода цифровых данных

Теперь, когда светодиод подключен а Ардуино, настало время программирования.

Для вывода высокого или низкого уровня сигнала на один из контактов общего назначения, в редакторе программ Arduino IDE используется функция digitalWrite. Вызов этой функции имеет вид:

digitalWrite( номер_контакта, уровень_сигнала );

где аргумент уровень_сигнала может принимать два значения: HIGH (высокий, +5В) или LOW (низкий, заземлен).

Другими словами, если написать:

digitalWrite( 2, HIGH );

То Ардуино соединит ногу №2 с питанием +5В и светодиод, ясен пень, вспыхнет!

Если же напишем:

digitalWrite( 2, LOW );

Анод светодиода замкнется на землю, и светодиод погаснет :(

С этим понятно. Остался еще один момент. Чтобы контакт №2 именно выводил сигнал, а не принимал его, потребуется использовать специальную функцию для установки режима контактов — pinMode. Формат этой функции таков:

pinMode( номер_контакта, режим_контакта );

где аргумент режим_контакта может принимать значения: OUTPUT (вывод) и INPUT (ввод).

То есть нам, чтобы помигать светодиодом, надо будет добавить в программу строчку:

pinMode( 2, OUTPUT );

4. Программа

Итоговая программа для мигания светодиодом будем иметь вид:

int led = 2;
void setup() { 
    pinMode(led, OUTPUT); // установка 2-го контакта в режим вывода
}
void loop() {
    digitalWrite(led, HIGH); // вывод №2 в активное состояние
    delay(1000); // пауза 1-секунда
    digitalWrite(led, LOW); // вывод №2 в неактивное состояние
    delay(1000); // пауза 1-секунда
}

В программе присутствует еще одна полезная функция — delay. Это просто пауза, задаваемая в миллисекундах. delay (1000) — означает паузу в 1000мс, что равно 1-й секунде.

Все. Загружаем программу на Ардуино, и смотрим на мигающий светодиод! Вы сделали это сами. Запрограммировали микроконтроллер! Круто, не правда ли?:)


Изменено:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>