Андрей Смирнов
Время чтения: ~11 мин.
Просмотров: 0

Урок 4. arduino и множество светодиодов

Ардуино задержка включения / выключения

В этой записи мы рассмотрим только основные характеристики функций задержки, а примеры использования представим в виде небольших скетчей. Для работы вам потребуется только сама плата Ардуино. Начнем обзор с delayMicroseconds Arduino, т.к. данную функцию не часто можно встретить в программах, а также рассмотрим, как заменить задержку delay на millis в программировании Arduino IDE.

Ардуино delayMicroseconds()

Команда delayMicroseconds останавливает выполнение программы на заданное количество микросекунд (в 1 секунде 1 000 000 микросекунд). При необходимости задержки в программе более чем на несколько тысяч микросекунд рекомендуется использовать delay(). Продемонстрируем на простом примере использование функции в скетче для мигания встроенным светодиодом на плате Arduino.

// пример использования delayMicroseconds() для мигания светодиодом
void setup() {
   pinMode(13, OUTPUT);
}
 
void loop() {
   digitalWrite(13, HIGH);      // подаем сигнал HIGH на выход
   delayMicroseconds(100);  // задержка 100 микросекунд
   digitalWrite(13, LOW);       // подаем сигнал LOW на выход
   delayMicroseconds(100);  // задержка 100 микросекунд
}

Ардуино delay()

Команда delay останавливает выполнение программы на заданное количество миллисекунд (в 1 секунде 1 000 микросекунд). Во время задержки программы с помощью функции delay(), не могут быть считаны подключенные к плате датчики или произведены другие операции, например, запись в еепром Ардуино данных. В качестве альтернативы следует использовать функцию millis(). Смотри пример далее.

// пример использования delay() для мигания светодиодом
void setup() {
   pinMode(13, OUTPUT);
}
 
void loop() {
   digitalWrite(13, HIGH);   // подаем сигнал HIGH на выход
   delay(100);                        // задержка 100 миллисекунд
   digitalWrite(13, LOW);    // подаем сигнал LOW на выход
   delay(100);                        // задержка 100 миллисекунд
}

Ардуино millis()

Команда millis возвращает количество прошедших миллисекунд с момента начала выполнения программы. Счетчик времени сбрасывается на ноль при переполнении значения unsigned long (приблизительно через 50 дней). Функция miilis позволяет сделать многозадачность Ардуино, так как выполнение программы не останавливается и можно выполнять параллельно другие операции в скетче.

// пример использования millis() при мигании светодиодом
unsigned long time;

void setup() {
   pinMode(13, OUTPUT);
   Serial.begin(9600);  // запускаем монитор порта
   time = millis();          // запускаем отсчет времени
}
 
void loop() {
   digitalWrite(13, HIGH);   // подаем сигнал HIGH на выход
   delay(1000);                      // задержка 1 секунда
   digitalWrite(13, LOW);    // подаем сигнал LOW на выход
   delay(1000);                      // задержка 1 секунда

   // выводим количество миллисекунд прошедших с момента начала программы
   Serial.print("Time: ");
   Serial.println(time);
}


Arduino команды millis, delay, delaymicroseconds

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

Подключение к ардуино желательно делать через резистор. В arduino подключение возможно и через встроенный резистор, но это требует специальный синтаксис команд и лучше его не использовать. Ограничительный резистор между выходом порта и светодиодом берем на 150 — 200 Ом.

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

Для плавного включения используем новую команду ШИМ-модуляции сигнала.

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

В Ардуино модуляция сигнала происходит с частотой около 500 импульсов в секунду.

Команда analogWrite (порт, частота модуляции) подает на заданный порт модулированный сигнал. При частоте 255 выдается 100% мощности, при частоте 127 соответственно 50%. Изменяя частоту модуляции мы можем менять яркость. Для модулированного сигнала используют аналоговые входы-выходы.

void setup() // процедура setup{pinMode (6, OUTPUT); // включаем аналоговый порт 6 на вывод}void loop(){

Цикл увеличения частоты модуляции с 0 до 255

For (int i=0; i<=255;i++){analogWrite(6, i);delay(20); // задержка 20 миллисекунд. Светодиод «разгорится» за 5 сек.}

Цикл уменьшения частоты модуляции с 255 до 0

for(int i=255;i>=0;i—){analogWrite(6, i);delay(20);}

В этом примере светодиод плавно разгорается за 5 сек. потом постепенно гаснет в течении 5 сек.

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

Как устроен RGB-светодиод и его назначение

Светодиодная лента состоит из 3 цветных кристаллов и 4 выходов: 12 (общий вывод), R (Red), G (Green), B (Blue). Основные комплектующие помещены в пластиковый корпус. Также в некоторых моделях RGB LED Arduino присутствуют встроенные резисторы. Они подключены к цветным выходам. Анодные и катодные электроды обладают самыми длинными выводами.

Одной из самых современных моделей RGB Ардуино является адресная светодиодная лента. Она состоит из диодов и контроллера. В это устройство по умолчанию встроены 3 полевых транзистора, что позволяет регулировать цвет светодиодов по отдельности.

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

Для питания резисторов и выводов нужно подключить адресную ленту к следующим приборам:

  1. Powerbank 5V: лента подсоединяется к данному устройству при помощи USB-штекеров. Емкость Powerbank 5V составляет 3350 мА*ч, что позволяет питать светодиоды током с силой 3А.
  2. Батарейки АА: используются в количестве 3 шт. Общая емкость этих приборов составляет 180 мА*ч. Они подают ток с напряжением до 5,5 В. Рекомендуется использовать батарейки AA, изготовленные из лития или апкалина.
  3. Никелевые аккумуляторы: имеют напряжение до 1,4 В. Для питания RGB Arduino требуется не менее 4 аккумуляторов из никеля. Емкость сборки составляет 2700 мА*ч.
  4. Литиевые аккумуляторы: имеют напряжение 4,2 В. В процессе эксплуатации значение этого показателя снижается до 3 В. Литиевые аккумуляторы позволяют сохранять полную яркость светодиодов. Они питают диоды током с силой до 2 А.

В зависимости от способа подачи электрического тока светодиоды будут гореть разными цветами. Если подать питание на 3 цветных светодиода одновременно, то кристаллы станут белыми. Для настройки цветовой гаммы Arduino RGB используются контроллеры с пультом управления. Они состоят из 3 полевых транзисторов и микропроцессора. Это приспособление позволяет настроить цветовую гамму светодиодов на дальнем расстоянии. Работа контроллеров с пультом управления обеспечивается при помощи скетчей, написанных в программной среде Ардуино.

Выделяют 2 основные модели RGB LED Arduino:

  1. WS2811: светодиоды питаются от чипа WS2811, расположенного отдельно от RGB-ленты. Питание устройства составляет 12 В.
  2. WS2812b: представляет собой ленту с напаянными светодиодами. В диоды встроены чипы WS2812b. Они позволяют менять окрас светодиодов по отдельности. Питание ленты WS2812b составляет 5 В.

Основными преимуществами RGB LED Arduino являются простота конструкции и высокий КПД. Эти приспособления активно используются при изготовлении осветительных приборов и декоративных подсветок. Также технология RGB нашла применение в трехмерной графике и WEB-разработке.

Blink

This example shows the simplest thing you can do with an Arduino or Genuino to see physical output: it blinks the on-board LED.

Arduino or Genuino Board

optional

  • LED
  • 220 ohm resistor

Circuit

This example uses the built-in LED that most Arduino and Genuino boards have. This LED is connected to a digital pin and its number may vary from board type to board type. To make your life easier, we have a constant that is specified in every board descriptor file. This constant is LED_BUILTIN and allows you to control the built-in LED easily. Here is the correspondence between the constant and the digital pin.

  • D13 — 101
  • D13 — Due
  • D1 — Gemma
  • D13 — Intel Edison
  • D13 — Intel Galileo Gen2
  • D13 — Leonardo and Micro
  • D13 — LilyPad
  • D13 — LilyPad USB
  • D13 — MEGA2560
  • D13 — Mini
  • D6 — MKR1000
  • D13 — Nano
  • D13 — Pro
  • D13 — Pro Mini
  • D13 — UNO
  • D13 — Yún
  • D13 — Zero

If you want to lit an external LED with this sketch, you need to build this circuit, where you connect one end of the resistor to the digital pin correspondent to the LED_BUILTIN constant. Connect the long leg of the LED (the positive leg, called the anode) to the other end of the resistor. Connect the short leg of the LED (the negative leg, called the cathode) to the GND. In the diagram below we show an UNO board that has D13 as the LED_BUILTIN value.

The value of the resistor in series with the LED may be of a different value than 220 ohm; the LED will lit up also with values up to 1K ohm.

Code

After you build the circuit plug your Arduino or Genuino board into your computer, start the Arduino Software (IDE) and enter the code below. You may also load it from the menu File/Examples/01.Basics/Blink .
The first thing you do is to initialize LED_BUILTIN pin as an output pin with the line

In the main loop, you turn the LED on with the line:

This supplies 5 volts to the LED anode. That creates a voltage difference across the pins of the LED, and lights it up. Then you turn it off with the line:

That takes the LED_BUILTIN pin back to 0 volts, and turns the LED off. In between the on and the off, you want enough time for a person to see the change, so the commands tell the board to do nothing for 1000 milliseconds, or one second. When you use the command, nothing else happens for that amount of time. Once you’ve understood the basic examples, check out the BlinkWithoutDelay example to learn how to create a delay while doing other things.

Once you’ve understood this example, check out the DigitalReadSerial example to learn how read a switch connected to the board.

See Also

  • setup()
  • loop()
  • pinMode()
  • digitalWrite()
  • delay()

  • AnalogReadSerial — Read a potentiometer, print its state out to the Arduino Serial Monitor.
  • BareMinimum — The bare minimum of code needed to start an Arduino sketch.
  • DigitalReadSerial — Read a switch, print the state out to the Arduino Serial Monitor.
  • Fade — Demonstrates the use of analog output to fade an LED.
  • ReadAnalogVoltage — Reads an analog input and prints the voltage to the serial monitor.

Last revision 2015/07/28 by SM

Как подключить датчик освещенности к Ардуино

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • модуль датчика освещенности;
  • один светодиод и резистор 220 Ом;
  • беспаечная макетная плата;
  • провода «папа-папа», «папа-мама».


Датчик освещенности ky: схема подключения к Ардуино

На картинке представлена схема подключения датчика света к Arduino Uno с использованием аналогового сигнала. На модуль подается питание 5 Вольт, а в зависимости от освещенности в помещении на выходе модуля (S) меняется напряжение от 0 до 5 Вольт. При подаче этого сигнала на аналоговый вход микроконтроллера, Arduino преобразует сигнал при помощи АЦП в диапазон значений от 0 до 1023.

Счетч для аналогового датчика освещенности

void setup() {
  pinMode(A1, INPUT);
  analogWrite(A1, LOW);
  Serial.begin(9600);   // подключаем монитор порта
}

void loop() {
  // считываем данные с датчика и выводим на монитор порта
  int light = analogRead(A1);
  Serial.print("Light = ");
  Serial.println(light);

  // рассчитываем напряжение и выводим на монитор порта
  float u = light * 0.48 / 100;
  Serial.print("U = ");
  Serial.println(u);

  // ставим паузу и делаем перенос строки
  delay(500);
  Serial.println("");
}
  1. в приведенном примере мы выводим на монитор порта данные с датчика освещенности, преобразованные с помощью АЦП Ардуино;
  2. чтобы узнать приблизительно напряжение, поступающее на вход Arduino, следует умножить получаемое значение на 0,0048 или U = light * (5 / 1023). Так как тип данных может хранить значения только с двумя знаками после запятой, то мы используем в скетче другую формулу для своих расчетов.


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

Следующая программа использует цифровой сигнал, идущий от датчика освещенности ky. На модуле имеется подстроечный резистор для настройки чувствительности. То есть вы можете отрегулировать, какой уровень освещенности необходим, чтобы модуль стал отправлять сигнал истина (логическая единица) на микроконтроллер Arduino. Подключите светодиод к пин 13 и загрузите следующий скетч.

Счетч для цифрового датчика освещенности

void setup() {
  pinMode(13, OUTPUT);
  pinMode(A1, INPUT);
}

void loop() {
   // считываем данные с датчика и выводим на монитор порта
   if (digitalRead(A1) == HIGH) {
      digitalWrite (13, LOW);
  }
   if (digitalRead(A1) == LOW) {
      digitalWrite (13, HIGH);
  }
}

Устройство ИК приемника. Принцип работы

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


Принцип работы IR ресивера. Обработка сигнала от пульта ДУ

ИК-приемник на Ардуино способен принимать и обрабатывать инфракрасный сигнал, в виде импульсов заданной длительности и частоты. Используется при изготовлении датчика препятствия и дальномера для Arduino. Обычно ИК-приемник имеет три ножки и состоит из следующих элементов: PIN-фотодиод, усилитель, полосовой фильтр, амплитудный детектор, интегрирующий фильтр и выходной транзистор.

Под действием инфракрасного излучения в фотодиоде, у которого между p и n областями создана дополнительная область из полупроводника (i-область), начинает течь ток. Сигнал поступает на усилитель и далее на полосовой фильтр, который настроен на фиксированную частоту: 30; 33; 36; 38; 40 и 56 килогерц и защищает приемник от помех. Помехи могут создавать любые бытовые приборы.

Особенности подключения

Диод — полупроводниковый прибор, обладающий такими особенностями:

  • полярность;
  • напряжение пробоя.

Полярность светодиодов

При прямом включении анод светодиода подсоединяют к точке с большим потенциалом, а катод — с меньшим. Конструктивно анод и катод можно различить по длине вывода:

  • длинный — анод (+);
  • короткий — катод (-).

На вольт-амперной характеристике участок обратного включения находится в левом нижнем квадранте.

Ограничение напряжения

В техпаспорте каждой модели LED указано, что прямое напряжение, при котором прибор зажигается, составляет 2-4 В. Большее напряжение подавать на диод нецелесообразно.

Диод боится силы тока, превышающей 20 мА. Чтобы контролировать показатель, последовательно с источником перед анодом включается токоограничительный резистор (необязательно мощный). Его номинал рассчитывается по закону Ома: сопротивление — это отношение напряжения к силе тока. Напряжение — величина, поступающая на анод. Ток выбирается по наибольшему значению в паспорте прибора.

Схемы подключение к плате

Подключение диода к плате Ардуино Нано, или Уно, или любой другой модели производится следующим образом: питание -> резистор -> светодиод -> общий провод. Для подключения лампы, например, потребуется собрать более сложную схему с преобразователями сигнала.

Чтобы убедиться в необходимости токоограничительного резистора, а также контролировать все параметры соединения, можно установить различные датчики и модули:

  1. Амперметры. Один прибор включается последовательно до резистора, а другой — между резистором и светодиодом.
  2. Вольтметр. Включается параллельно диоду. Показывает напряжение, которое падает на диоде (в открытом и запертом состоянии LED оно разное).

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

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации