? включение светодиода кнопкой ардуино

Оглавление

Как подключить светодиод к Arduino

Для этого занятия нам потребуется:

Для надёжной сборки устройств создаются печатные платы, на что уходит много времени. Для быстрой сборки электрических схем без пайки используют макетную плату (breadboard). Под слоем пластика на макетной плате находятся медные пластины-рельсы (дорожки), выложенные по простому принципу (смотри фото). Дорожки служат для создания контакта между радиоэлементами и проводами.

Быстрая сборка схем на макетной плате

Для чего светодиод включают к Ардуино с резистором? Дело в том, что в светодиоде стоит кристалл который боится больших токов. Резистор призван ограничивать силу тока (Амперы), чтобы светодиод не перегорел. Большой ток губителен для светодиода, меньший ток (благодаря подключению резистора) обеспечивает длительную работу. Чтобы подключить светодиод к Ардуино без резистора, используйте 13 порт.

Если у вас не установлена программа Arduino IDE, то скачайте последнюю версию на официальном сайте www.arduino.cc. С помощью USB кабеля производится запись программ, также плата получает питание от компьютера. Если требуется автономная работа электронного устройства, то плату можно запитать от батарейки или блока питания на 7-12 В. При подаче питания на плате загорится светодиод индикации.

Скетч для включения светодиода от Ардуино

Перед загрузкой программы в микроконтроллер можно выполнить проверку (компиляцию), на наличие ошибок в коде. В случае обнаружения ошибки — будет получено сообщение в нижнем окошке Arduino IDE. В любом случае, при загрузке скетча, сначала происходит проверка и компиляция программы. При компиляции происходит перевод программы в двоичный код, понятный микроконтроллеру.

Перед загрузкой программы в микроконтроллер, потребуется сохранить скетч на компьютере. Нажмите «Сохранить» в появившемся окне и начнется загрузка.

Источник

Подключение светодиодной шкалы к Ардуино

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • 11 светодиодов или светодиодная шкала;
  • 11 резисторов на 220 Ом;
  • провода «папа-папа» и «папа-мама».

Схема подключения светодиодной шкалы к Ардуино

Соберите схему из светодиодов на макетной плате или подключите к Ардуино светодиодную шкалу, как на рисунке выше

Обратите внимание, что в светодиодной шкале нет встроенных резисторов, поэтому не забывайте их добавить в схему, чтобы диоды не сгорели. После сборки схемы скопируйте скетч последовательного включения светодиодной шкалы на Arduino UNO и загрузите в плату

Скетч последовательного включения светодиодов

byte i;           // задаем переменную для цифровых выходов
byte LedMin = 2;  // первый пин со светодиодом
byte LedMax = 11; // последний пин со светодиодом

void setup() {
   // задаем пин со 2 по 11, как выход (OUTPUT)
   for(i=LedMin; i<=LedMax; i++) { pinMode(i, OUTPUT); }
}

void loop() {
   // последовательно зажигаем светодиоды со 2 по 11 пин
   for(i=LedMin; i<=LedMax; i++) {
      digitalWrite(i, HIGH);
      delay(50);
   }

   // последовательно гасим светодиоды с 11 по 2 пин
   for(i=LedMax; i>=LedMin; i--) {
      digitalWrite(i, LOW);
      delay(50);
   }
}

Пояснения к коду:

  1. цикл в скетче содержит в себе два цикла for, работающих попеременно;
  2. переменная типа может хранить 8-битное беззнаковое число от 0 до 255.

В следующем примере изменен порядок последовательного выключения светодиодов на Ардуино. Для этого во втором цикле for все условия повторяются, меняется лишь состояние пинов у светодиодов в цикле с HIGH на LOW. В коде используются глобальные переменные типа byte, поэтому их можно вызывать в любом месте программы, в отличии от локальных переменных в языке Ардуино.

Скетч последовательного выключения светодиодов

byte i;           // задаем переменную для цифровых выходов
byte LedMin = 2;  // первый пин со светодиодом
byte LedMax = 11; // последний пин со светодиодом

void setup() {
   // задаем пин со 2 по 11, как выход (OUTPUT)
   for(i=LedMin; i<=LedMax; i++) { pinMode(i, OUTPUT); }
}

void loop() {
   // последовательно зажигаем светодиоды со 2 по 11 пин
   for(i=LedMin; i<=LedMax; i++) {
      digitalWrite(i, HIGH);
      delay(50);
   }

   // последовательно гасим светодиоды со 2 по 11 пин
   for(i=LedMin; i<=LedMax; i++) {
      digitalWrite(i, LOW);
      delay(50);
   }
}

Пояснения к коду:

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

Принцип управления нагрузкой через Ардуино

Плата Ардуино имеет два типа портов вывода: цифровой и аналоговый (ШИМ-контроллер). У цифрового порта возможно два состояния – логический ноль и логическая единица. Если подключить к нему светодиод он либо будет светиться, либо не будет.

Аналоговый выход представляет собой ШИМ-контроллер, на который подаётся сигнал частотой около 500Гц с регулируемой скважностью. Что такое ШИМ-контроллер и принцип его работы можно найти в интернете

Через аналоговый порт  возможно не только включать и выключать нагрузку, а и изменять напряжение (ток) на ней.

Синтаксис команд

Цифровой вывод:

pinMode(12, OUTPUT); — задаём порт 12 портом вывода данных;digitalWrite(12, HIGH); — подаём на дискретный выход  12 логическую единицу, зажигая светодиод.

Аналоговый вывод:

analogOutPin = 3; – задаём порт 3 для вывода аналогового значения;analogWrite(3, значение); – формируем на выходе сигнал с напряжением от 0 до 5В

Значение – скважность сигнала от 0 до 255. При значении 255 максимальное напряжение

Способы управления светодиодами через Ардуино

Напрямую через порт можно подключить лишь слабый светодиод, да и то лучше через ограничительный резистор. Попытка подключить более мощную нагрузку выведет его из строя.

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

Смотрите видео, как включить светодиод через кнопку в Arduino UNO

В следующих статьях мы вернёмся снова к этой схеме, сделаем так чтобы при нажатии на кнопку светодиод продолжал гореть, а при повторном нажатии выключался.

Новые статьи

  • Управление погружным насосом на Arduino — 18/06/2019 17:07
  • Arduino и датчик ультразвука. Определение расстояния до объекта. — 12/04/2019 14:52
  • Arduino в роли вольтметра. Вывод напряжения на LCD дисплей — 10/04/2019 15:32
  • Подключаем терморезистор к arduino, получим температуру в градусах по Цельсию и по Фаренгейту — 23/02/2019 20:51
  • Как подключить дисплей LCD1602 к Arduino — 23/02/2019 19:35
  • Как подключить сервомотор к Arduino — 23/02/2019 19:12
  • Подключение RGB светодиода к Arduino — 12/01/2019 15:25
  • Фоторезистор и светодиоды на Arduino — 12/01/2019 11:38
  • Играем ноты на пищалке с Arduino — 12/01/2019 10:34
  • Вынос мозга!!! АЦКИЙ BUZZER — омерзительная пищалка на Arduino Uno — 12/01/2019 09:55
  • Новогодняя мини гирлянда в Arduino UNO. Как сделать мини гирлянду в Arduino UNO на светодиодах. — 12/01/2019 08:40
  • Скетч — выключатель, светодиод и кнопка в Arduino UNO — 12/01/2019 08:15

Предыдущие статьи

  • Управление светодиодом в Arduino UNO — 14/12/2018 18:24
  • Установка среды разработки для Arduino UNO и пример программы — 14/12/2018 17:49

Различные программы

Библиотеки с программами для платы Arduino можно загрузить с официального сайта или найти в Интернете на других информационных ресурсах. Если есть навыки, можете даже самостоятельно написать скетч-программу (исходный код). Для сбора электрической цепи не требуется каких-то специфичных знаний.

Варианты применения системы под управлением Arduino:

  1. Освещение. Наличие датчика позволит задать программу, в соответствии с которой свет в комнате либо появляется сразу, либо плавно включается параллельно заходу солнца (с увеличением яркости). Для включения можно использовать Wi-Fi, телефон и интеграцию в систему «Умный дом».
  2. Освещение коридора и лестничных площадок. Arduino позволит организовать освещение каждой детали (к примеру, ступени) отдельно. Добавьте в плату датчик движения, чтобы адресные светодиоды загорались последовательно в зависимости от того места, где зафиксировано движение объекта. Если движения нет, диоды будут гаснуть.
  3. Светомузыка. Воспользуйтесь фильтрами и подайте на аналоговый вход звуковые сигналы, чтобы на выходе организовать светомузыку (эквалайзер).
  4. Модернизация компьютера. Некоторые датчики позволят создать зависимость цвета светодиодов от температуры процессора, его загрузки, нагрузки на оперативную память. Используется протокол DMX 512.

Микросхемы Arduino расширяют возможности применения монохромных и многоканальных (RGB) светодиодных лент. Помимо слияния различных цветов, образования сотен тысяч оттенков сможете создать неповторимые эффекты — затухание при заходе солнца, периодическое включение/выключение при фиксации движения и многое другое.

Управление яркостью светодиода

Мы можем не только включать или выключать свет, но и управлять его яркостью. Для этого используется специальная технология с красивым названием ШИМ. Подключившись к пинам контроллера, поддерживающим ШИМ, можно регулировать интенсивность свечения с помощью функции analogWrite(). Мы должны указывать ей в качестве параметров номер пина и значение из диапазона от 0 до 255. Чем больше число, тем ярче будет светить лампочка. Например, для пина 3 пример будет выглядеть так: analogWrite(3, 255) или analogWrite(3, 100). В первом случае яркость будет максимально возможная, во втором – гораздо меньше.

Нужно помнить, что далеко не все пины контроллера поддерживают ШИМ. У Arduino Uno, Nano, основанных на ATMEGA328, шим поддерживают пины 3, 5, 6, 9, 10, 11. У платы Mega таких пинов гораздо больше.

Светодиодная лента Ардуино – Подключение

Чтобы подключить 12v светодиодную ленту к Arduino, вам понадобится несколько компонентов: ● 12v RGB светодиодная лента(SMD5050); ● 1 x Arduino Uno (любая совместимая плата подойдет); ● 3 x 10 кОм резисторов; ● 3 x логических уровня N-канальных МОП-транзисторов (MOSFET); ● 1 х макет; ● Монтажные провода; ● Блок питания на 12 В.

Подключение адресной светодиодной ленты к Ардуино

Всякий раз, когда вы управляете прибором с более высоким напряжением, чем у вашего микроконтроллера, вам нужно установить что-нибудь между ними, чтобы избежать поломки или даже возгорания. Один из простых способов сделать это – использовать MOSFET. Передавая сигналы широтно-импульсной модуляции (ШИМ), вы можете контролировать количество энергии, проходящее между стоками и источником. Пропустив каждый из цветов светодиодной полосы через МОП-транзисторы, вы можете регулировать яркость каждого цвета на светодиодной ленте. При использовании микроконтроллеров не забывайте о компонентах логического уровня для обеспечения стабильной работы. Убедитесь, что ваши МОП-транзисторы являются логическим уровнем, а не стандартным.

Настройте свою схему следующим образом:

1. Подключите контакты Arduino 9, 6 и 5 к концам затвора трех МОП-транзисторов и подключите резистор 10 кОм в соответствии с заземлением. 2. Подключите ножки источника к заземлению. 3. Подключите дренажные опоры к разъемам Green, Red и Blue на светодиодной ленте. 4

Подключите шину питания к разъему +12v светодиодной полосы (обратите внимание, что на изображении выше провод питания черный, чтобы соответствовать цветам разъемов на моей светодиодной полосе). 5

Подключите заземление Arduino. 6. Подключите стабилизатор питания 12 В в сеть. Большинство светодиодных полосок имеет разъемы Dupont, к которым легко подключиться. Если у вас нет таких, вам понадобится припаять провода к диодной ленте. Не паникуйте, если вы новичок в пайке — это легкая работа. В интернете есть множество руководств по началу работы с паяльником, с которыми можно ознакомиться, если пайка доставляет вам трудности. Для этого проекта мы будем управлять нашей платой Arduino по USB . Вы можете выбрать питание платы с помощью вывода VIN, но перед этим убедитесь, что вы знаете ограничения мощности для своего устройства.

Светодиодные ленты

Светодиодная лента представляет собой цепь соединённых светодиодов. Соединены они не просто так, например обычная 12V лента состоит из сегментов по 3 светодиода в каждом. Сегменты соединены между собой параллельно, то есть на каждый приходят общие 12 Вольт. Внутри сегмента светодиоды соединены последовательно, а ток на них ограничивается общим резистором (могут стоять два для более эффективного теплоотвода):

Таким образом достаточно просто подать 12V от источника напряжения на ленту и она будет светиться. За простоту и удобство приходится платить эффективностью. Простая математика: три белых светодиода, каждому нужно по ~3.2V, суммарно это 9.6V. Подключаем ленту к 12V и понимаем, что 2.5V у нас просто уходят в тепло на резисторах. И это в лучшем случае, если резистор подобран так, чтобы светодиод горел на полную яркость.

Подключаем к Arduino

Здесь всё очень просто: смотрите предыдущий урок по управлению нагрузкой постоянного тока. Управлять можно через реле, транзистор или твердотельное реле. Нас больше всего интересует плавное управление яркостью, поэтому продублирую схему с полевым транзистором:

Конечно же, можно воспользоваться китайским мосфет-модулем! Пин VCC кстати можно не подключать, он никуда не подведён на плате.

Управление

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

Про RGB и адресные светодиодные ленты мы поговорим в отдельных уроках.

Питание и мощность

Светодиодная лента потребляет немаленький ток, поэтому нужно убедиться в том, что выбранный блок питания, модуль или аккумулятор справится с задачей. Но сначала обязательно прочитайте урок по закону Ома! Потребляемая мощность светодиодной ленты зависит от нескольких факторов:

  • Яркость. Максимальная мощность будет потребляться на максимальной яркости.
  • Напряжение питания (чаще всего 12V). Также бывают 5, 24 и 220V ленты.
  • Качество, тип и цвет светодиодов: одинаковые на вид светодиоды могут потреблять разный ток и светить с разной яркостью.
  • Длина ленты. Чем длиннее лента, тем больший ток она будет потреблять.
  • Плотность ленты, измеряется в количестве светодиодов на метр. Бывает от 30 до 120 штук, чем плотнее – тем больший ток будет потреблять при той же длине и ярче светить.

Лента всегда имеет характеристику мощности на погонный метр (Ватт/м), указывается именно максимальная мощность ленты при питании от номинального напряжения. Китайские ленты в основном имеют чуть меньшую фактическую мощность (в районе 80%, бывает лучше, бывает хуже). Блок питания нужно подбирать так, чтобы его мощность была больше мощности ленты, т.е. с запасом как минимум на 20%.

  • Пример 1: нужно подключить 4 метра ленты с мощностью 14 Ватт на метр, лента может работать на максимальной яркости. 14*4 == 56W, с запасом 20% это будет 56*1.2 ~ 70W, ближайший блок питания в продаже будет скорее всего на 100W.
  • Пример 2: берём ту же ленту, но точно знаем, что яркость во время работы не будет больше половины. Тогда можно взять блок на 70 / 2 == 35W.

Важные моменты по току и подключению:

  • Подключение: допустим, у нас подключено ленты на 100W. При 12 Вольтах это будет 8 Ампер – весьма немаленький ток! Ленту нужно располагать как можно ближе к блоку питания и подключать толстыми (2.5 кв. мм и толще) проводами. Также при создании освещения есть смысл перейти на 24V ленты, потому что ток в цепи будет меньше и можно взять более тонкие провода: если бы лента из прошлого примера была 24-Вольтовой, ток был бы около 4 Ампер, что уже не так “горячо”.
  • Дублирование питания: лента сама по себе является гибкой печатной платой, то есть ток идёт по тонкому слою меди. При подключении большой длины ленты ток будет теряться на сопротивлении самой ленты, и чем дальше от точки подключения – тем слабее она будет светить. Если требуется максимальная яркость на большой длине, нужно дублировать питание от блока питания дополнительными проводами, или ставить дополнительные блоки питания вдоль ленты. Дублировать питание рекомендуется каждые 2 метра, потому что на такой длине просадка яркости становится заметной уже почти на всех лентах.
  • Охлаждение: светодиоды имеют не 100% КПД, плюс ток в них ограничивается резистором, и как результат – лента неслабо греется. Рекомендуется приклеивать яркую и мощную ленту на теплоотвод (алюминиевый профиль). Так она не будет отклеиваться и вообще проживёт гораздо дольше.

Подключение к Arduino

Прямое подключение светодиодной ленты к Arduino уместно только в случае применения слабых LED-диодов. Для светодиодной ленты между ней и платой необходимо установить дополнительные электротехнические элементы.

Через реле

Подключите реле к плате Arduino через цифровой выход. Управляемая полоса может иметь одно из двух состояний — включения или выключения. Если нужно организовать управление RGB-лентой, понадобятся три реле.

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

С помощью биполярного транзистора

Если нужно повысить ток или напряжение на выходе, подключите биполярный транзистор. При его выборе ориентируйтесь на ток нагрузки. Ток управления не превышает 20 мА, поэтому добавьте резистор на 1 – 10 кОм для ограничения тока за счет сопротивления.

С помощью полевого транзистора

Вместо биполярных транзисторов для управления светодиодными лентами возьмите полевые (сокращенно — МОП). Разница между ними связана с принципом управления: биполярные изменяют ток, полевые — напряжение на затворе. Благодаря этому небольшой ток затвора управляет большой нагрузкой (десятками ампер).

С помощью плат расширения

Если нет желания использовать реле и транзисторы, можно купить целые блоки — платы расширения. К ним относятся Wi-Fi, Bluetooth, эквалайзер, драйвер и т. д., которые необходимы для управления нагрузкой разных мощностей и напряжений. Это могут быть как одноканальные элементы, которые подойдут монохромным лентам, так и многоканальные (для управления цветными RGB-лентами).

Управление яркостью светодиода

Мы можем не только включать или выключать свет, но и управлять его яркостью. Для этого используется специальная технология с красивым названием ШИМ. Подключившись к пинам контроллера, поддерживающим ШИМ, можно регулировать интенсивность свечения с помощью функции analogWrite(). Мы должны указывать ей в качестве параметров номер пина и значение из диапазона от 0 до 255. Чем больше число, тем ярче будет светить лампочка. Например, для пина 3 пример будет выглядеть так: analogWrite(3, 255) или analogWrite(3, 100). В первом случае яркость будет максимально возможная, во втором – гораздо меньше.

Нужно помнить, что далеко не все пины контроллера поддерживают ШИМ. У Arduino Uno, Nano, основанных на ATMEGA328, шим поддерживают пины 3, 5, 6, 9, 10, 11. У платы Mega таких пинов гораздо больше.

Лампа на светодиодной ленте с красивыми эффектами

Сразу скажу, что проект не мой, а является немного доработанной версией лампы от Alex Gyver, за что ему большое спасибо!

Вот ссылка на оригинальный проект: огненный светильник.

Из изменений:

  • корпус напечатан на 3D-принтере (файлы для печати ниже)
  • разъем для подключения блока питания
  • не сенсорная а обычная кнопка, размещенная сбоку внизу

Лампу делал не с целью улучшения, а в подарок, но решил все-таки добавить описание на сайт – вдруг кому-то пригодится.

Подготовка

Итак, для реализации проекта использовался все тот же плафон из Леруа-мерлен “плафон цилиндр”:

Все остальное можно заказать у китайцев:

  • Arduino Nano:   
  • Адресная RGB-лента WS2812B:   
  • Блок питания на 5 вольт (3А, но хватит и 2A):   
  • Кнопка (использовал самую большую):   
  • Резистор на 220 Ом:   
  • Разъем питания использовал такой:

Были использованы следующие инструменты:

  • Паяльник (пользуюсь таким давно, идеальный по соотношения цена/качество):   
  • 3D-принтер (закрытый корпус, можно печатать и PLA, и ABS без проблем): ,  
  • Инструмент для зачистки и обжима проводов (фирменный китайский LAOA): ,  

Сборка

Файлы для печати верхней и нижней части: lamp.zip.

При печати следует учесть, что, хоть размеры подгонялись под конкретный плафон, все же могут быть небольшие расхождения в размерах. Зависит от того, на каком 3D-принтере вы печатаете, с какими настройками и каким пластиком. Поэтому для плотного прилегания плафона к напечатанным частям может понадобится чуть подкорректировать размер моделей и перепечатать, либо применить изоленту/напильник.

Для лампы я использовал 4 куска светодиодной ленты по 10 светодиодов на каждом. У вас может быть другое количество светодиодов, в зависимости от типа ленты. Главное: лента должна быть именно адресная WS2812B.

После печати нижней части можно приступать к сборке. В модели предусмотрено гнездо для кнопки. Сажаем ее туда, приклеив на любой подходящий клей (я использовал клеевой пистолет). Предварительно нужно отломать 2 из 4 ножек, а 2 оставшиеся должны пропускать ток при нажатии (они расположены рядом). Просовываем их в отверстие сверху от углубления. И вставляем разъем питания.

Ну и наклеиваем куски ленты

Обратите внимание на то, что наклеивать их нужно одинаково, контактами DO вниз. Так как при использовании ленты она нагревается, я после всей остальной сборки закрепил ленту небольшими хомутами, через каждые 2 светодиода, чтобы она не отклеилась. Далее – спаиваем 4 части адресной ленты – контакты 5v, gnd и сигнальный

Как именно – подробно показано в видео на странице оригинального проекта. Если вы только учитесь паять – не следует бояться паять адресную ленту, паяется все она очень легко. Единственный совет – я использую жидкий флюс ЛТИ-120. Он в разы лучше, чем твердая канифоль. Наносить его удобнее всего кисточкой от лака для ногтей. Также он не является активным, поэтому после его применения не нужно очищать контакты

Далее – спаиваем 4 части адресной ленты – контакты 5v, gnd и сигнальный. Как именно – подробно показано в видео на странице оригинального проекта. Если вы только учитесь паять – не следует бояться паять адресную ленту, паяется все она очень легко. Единственный совет – я использую жидкий флюс ЛТИ-120. Он в разы лучше, чем твердая канифоль. Наносить его удобнее всего кисточкой от лака для ногтей. Также он не является активным, поэтому после его применения не нужно очищать контакты.

Вся остальная сборка делается по инструкции оригинального проекта, там все подробно показано, а также есть схема, что и как спаять. Разница только в использовании механической кнопки, припаять ее нужно к разъемам gnd (земле) и любому цифровому пину платы.

Код

Код был полностью взять с оригинального проекта. Единственное изменение, которое нужно сделать, это поменять тип используемой кнопки. Для этого в основном файле прошивки (на данный момент это gyverLight_v1.4.ino) меняем строчку 39:

на

В общем то и все.

Плавное управление RGB светодиодом

Управление rgb светодиодом на Arduino можно сделать плавным, используя аналоговые выходы с «ШИМ». Для этого ножки светодиода необходимо подключить к аналоговым выходам, например, к пинам 11, 10 и 9. И подавать на аналоговые выходы микроконтроллера различные значения ШИМ (PWM), для этого воспользуемся циклом for, с помощью которого можно повторять нужные команды в программе.

Скетч для плавного мигания RGB светодиода

#define RED 11  // присваиваем имя RED для пина 11
#define GRN 10 // присваиваем имя GRN для пина 10
#define BLU  9   // присваиваем имя BLU для пина 9
 
void setup() {
   pinMode(RED, OUTPUT);  // используем Pin11 для вывода
   pinMode(GRN, OUTPUT); // используем Pin10 для вывода
   pinMode(BLU, OUTPUT);  // используем Pin9 для вывода
}
 
void loop() {
   // плавное включение/выключение красного цвета
   for (int i = 0; i <= 255; i++) {
      analogWrite(RED, i);
      delay(2);
   }
   for (int i = 255; i >= 0; i--) {
      analogWrite(RED, i);
      delay(2);
   }

   // плавное включение/выключение зеленого цвета
   for (int i = 0; i <= 255; i++) {
      analogWrite(GRN, i);
      delay(2);
   }
   for (int i = 255; i >= 0; i--) {
      analogWrite(GRN, i);
      delay(2);
   }

   // плавное включение/выключение синего цвета
   for (int i = 0; i <= 255; i++) {
      analogWrite(BLU, i);
      delay(2);
   }
   for (int i = 255; i >= 0; i--) {
      analogWrite(BLU, i);
      delay(2);
   }
}

Пояснения к коду:

  1. с помощью директивы мы заменили номера пинов 9, 10 и 11 на соответствующие имена , и . Это сделано для удобства, чтобы не запутаться в скетче и понимать какой цвет мы включаем;
  2. пины 9, 10 и 11 мы использовали, как аналоговые выходы .

Работа схемы

Структурно рассматриваемое нами устройство состоит из 4-х модулей: модуль датчиков, модуль управления, модуль отображения и модуль реле.

В модуле датчиков, схема которого представлена на рисунке ниже, мы имеем два инфракрасных датчика с инфракрасными диодами, потенциометр, компаратор (на операционном усилителе) и светодиоды. Потенциометр предназначен для установки опорного напряжения компаратора (для регулировки чувствительности устройства). Инфракрасные датчики обнаруживают отсутствие или присутствие объекта (человека) в поле своего действия и выдают соответствующие сигналы на компаратор. Компаратор сравнивает два напряжения и обеспечивает соответствующий цифровой сигнал на своем выходе. В представленном устройстве мы использовали два компаратора (поскольку у нас два модуля инфракрасных датчиков), реализованных на микросхеме LM358.

Модуль управления построен на основе платы Arduino UNO, которая используется для управления всем устройством. Выходы компараторов подсоединены к цифровым контактам 14 и 19 Arduino. Плата Arduino считывает сигналы с этих цифровых контактов и на их основе выдает соответствующие управляющие сигналы на реле, которое управляет включением и выключением цепи электрической лампочки (bulb).

Модуль отображения состоит из ЖК дисплея 16×2, на котором будет отображаться число людей, находящихся в комнате и статус света (включен/выключен) когда никого нет в комнате.

Модуль реле состоит из транзистора BC547 и реле на 5 В, управляющим включением/выключением электрической лампочки. Транзистор необходим для управления реле поскольку плата Arduino не обеспечивает необходимые значения токов и напряжений для этого. Плата Arduino будет подавать управляющие команды на транзистор, а он с помощью реле будет включать и выключать электрическую лампочку.

Полная схема устройства представлена на следующем рисунке.

Выходы инфракрасных датчиков непосредственно подключены к цифровым контактам Arduino 14(A0) и 19(A5). База транзистора через резистор подключена к контакту 2 Arduino. ЖК дисплей подсоединен к Arduino в 4-битном режиме. Контакты RS и EN ЖК дисплея подключены к контактам 13 и 12 Arduino. Контакты данных ЖК дисплея D4-D7 подключены к контактам 11-8 Arduino.

Основные принципы работы устройства

Рассматриваемый нами проект цифрового счетчика посетителей основан на использовании таких компонентов как датчики, двигатели, плата Arduino Uno и т.д. Этот счетчик будет способен подсчитывать количество посетителей в двух (обоих) направлениях. То есть он будет увеличивать счетчик посетителей когда человек проходит в центр/офис/стадион через входные ворота и уменьшать счетчик посетителей когда человек выходит из центра/офиса/стадиона через выходные ворота. Кроме указанных применений подобный счетчик можно также использовать на автопарковках и других общественных местах.

Проект разделен на 4 части: датчики, контроллер, дисплей для отображения числа посетителей и ворота. Датчик будет обнаруживать проходящих людей и подавать соответствующий сигнал на контроллер, который будет увеличивать или уменьшать счетчик посетителей в зависимости от того, вошел человек или вышел. Затем контроллер выдает команду на ЖК дисплей отобразить текущее количество посетителей.

Принцип обнаружения человека инфракрасным датчиком основан на том, что проходящий человек прерывает поток света на некоторое время и это прерывание света обнаруживается приемным инфракрасным датчиком.

Подключение и настройка

Проблема с микроконтроллерами заключается в том, что при больших функциональных возможностях ведь в них кроме процессора есть еще довольно богатый набор периферийных устройств они имеют ограниченное число выводов. Если скачан архив, то его нужно распаковать и запустить файл Arduino.

На шилде расположены дополнительные разъемы питания и земли, разъемы для подключения внешнего источника напряжения, светодиод и кнопка перезагрузки.

Память ATmega обладает 16 килобайтами флэш-памяти для хранения кода программы из которых 2 килобайта используется загрузчиком ; ATmega обладает 32 килобайтами из которых 2 килобайта также используется загрузчиком. Можно подавать ток на него и все это будет работать только при условии, что напряжение подаваемого тока строго равно пяти вольтам!

Эти выводы могут быть сконфигурированы для вызова прерывания по фронту или по спаду импульса или по изменению уровня на выводе. Конструктор Arduino создан для любителей электроники и робототехники начального уровня, чтобы помочь им обойти сложности низкоуровнего программирования микроконтроллеров, где требуются знания инженера-профи и опыт. Все выводы, цифровые и аналоговые, могут работать в диапазоне 0 … 5 В. Входы и выходы Каждый из 20 , на схеме аrduino nano распиновка помещены в сиреневые параллелограммы, на той же схеме в серых параллелограммах указаны выводы микроконтроллера цифровых выводов Arduino Nano может работать в качестве входа или выхода.

Распиновка Arduino Nano v 3.0

Например, остался без внимания аналоговый компаратор. Обычно используется для добавления кнопки сброса на платы расширения, закрывающей доступ к кнопке сброса на самой плате Arduino. Все выводы могут быть программно подключены к источнику питания микроконтроллера 5 В через подтягивающие резисторы сопротивлением кОм.

Данные выводы могут быть сконфигурированы в качестве источников прерываний, возникающих при различных условиях: при низком уровне сигнала, по фронту, по спаду или при изменении сигнала. Экран подключен. Для проверки работоспособности откроем приложение для Arduino. Для работы используйте библиотеку Wire. На первых двух светодиод загорается, когда уровень сигнала низкий, и показывает, что сигнал TX или RX активен.

Если все прошло нормально, вы увидите сообщение «загрузка успешно завершена». Вместе с тем активное распространение Ардуино-плат для освоения разработки и проектирования устройств на микроконтроллерных системах породило новый виток в вопросе качества и эргономики.

Пришлось это сделать вручную. Arduino Nano 2.
Уроки Ардуино #0 — что такое Arduino, куда подключаются датчики и как питать Ардуино