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

Проекты: светодиод с ардуино

Разделы

3Параллельные процессы без оператора «delay()»

Вариант, при котором Arduino будет выполнять задачи псевдо-параллельно, предложен разработчиками Ардуино. Суть метода в том, что при каждом повторении цикла loop() мы проверяем, настало ли время мигать светодиодом (выполнять фоновую задачу) или нет. И если настало, то инвертируем состояние светодиода. Это своеобразный вариант обхода оператора delay().

const int soundPin = 3;  // переменная с номером пина пьезоэлемента
const int ledPin = 13;  // переменная с номером пина светодиода
const long ledInterval = 200; // интервал мигания светодиодом, мсек.

int ledState = LOW;  // начальное состояние светодиода
unsigned long previousMillis = 0;  // храним время предыдущего срабатывания светодиода

void setup() {
    pinMode(soundPin, OUTPUT); // задаём пин 3 как выход.
    pinMode(ledPin, OUTPUT);   // задаём пин 13 как выход.
}

void loop() {
    // Управление звуком:
    tone(soundPin, 700); 
    delay(200);
    tone(soundPin, 500); 
    delay(200);
    tone(soundPin, 300);
    delay(200);
    tone(soundPin, 200);
    delay(200);
     
    // Мигание светодиодом:
    // время с момента включения Arduino, мсек:
    unsigned long currentMillis = millis(); 
    // Если время мигать пришло,
    if (currentMillis - previousMillis >= ledInterval) {
        previousMillis = currentMillis;  // то запоминаем текущее время
        if (ledState == LOW) {  // и инвертируем состояние светодиода
              ledState = HIGH;
        } else {
              ledState = LOW;
        }
        digitalWrite(ledPin, ledState); // переключаем состояние светодиода
    }
}

Существенным недостатком данного метода является то, что участок кода перед блоком управления светодиодом должен выполняться быстрее, чем интервал времени мигания светодиода «ledInterval». В противном случае мигание будет происходить реже, чем нужно, и эффекта параллельного выполнения задач мы не получим. В частности, в нашем скетче длительность изменения звука сирены составляет 200+200+200+200 = 800 мсек, а интервал мигания светодиодом мы задали 200 мсек. Но светодиод будет мигать с периодом 800 мсек, что в 4 раза больше того, что мы задали.

Вообще, если в коде используется оператор delay(), в таком случае трудно сымитировать псевдо-параллельность, поэтому желательно его избегать.

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

Ардуино и адресная светодиодная лента

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

Теперь, когда мы рассмотрели схему с обычной светодиодной лентой, перейдем к адресным светодиодным лентам  SPI RGB лента.

Светодиодная лента Ардуино – Яркие идеи.

Эти ленты требуют меньшего количества компонентов для запуска, и есть некоторая свобода в отношении именно того, какие значения компонентов вы можете использовать. Конденсатор в этой цепи гарантирует, что светодиоды 5v получают постоянный источник питания. Резистор становится гарантом того, что сигнал данных, полученный от Arduino, не загружен всяческими помехами.

Вам понадобится:

● Светодиодная лента 5v WS2811/12/12B; Все три модели имеют встроенные микросхемы и работают одинаково.

● 1 x Arduino Uno или аналогичная совместимая плата;

● 1 x резистор 220-440 Ом;

● 1 x конденсатор microFarad 100-1000 (все, что между этими двумя значениями, отлично подойдет);

● Макет и монтажные провода;

● Блок питания 5 В.

Настройте схему, как показано на рисунке:

Обратите внимание, что конденсатор должен быть правильной ориентации. Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора

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

Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора. На этот раз мы задействуем Arduino, используя источник питания 5 В. Это позволит устройству работать автономно.

Во-первых, убедитесь, что ваша плата может работать с 5 В, прежде чем присоединить ее к источнику питания. Почти все платы работают на 5V через USB-порт, но штыри питания на некоторых могут иногда пропускать регуляторы напряжения и превращать их в поджаренные тосты.

Кроме того, рекомендуется убедиться, что несколько отдельных источников питания не подключены к Arduino – отсоединяйте USB-кабель всякий раз, когда используете внешний источник питания.

Светодиодная лента Ардуино – Бегущий огонь или световая волна

Чтобы безопасно запрограммировать нашу плату, отсоедините линию VIN от линии электропередач. Вы подключите ее позже обратно.

Присоедините свой Arduino к компьютеру и откройте Arduino IDE. Убедитесь, что у вас правильный номер платы и порта, выбранный в меню «Сервис»> «Сервис и инструменты»> «Порт».

Мы будем использовать библиотеку FastLED для тестирования нашей установки. Вы можете добавить библиотеку, нажав на Эскиз> Включить библиотеку> Управление библиотеками и поиск FastLED. Нажмите «Установить», и библиотека будет добавлена в среду IDE.

В разделе «Файл»> «Примеры»> «FastLED» выберите эскиз DemoReel100. В этом эскизе задействованы различные эффекты, которые можно сделать с помощью светодиодных полос WS2812, и невероятно легко настроить.

Все, что вам нужно изменить, — это переменная DATA_PIN, чтобы она соответствовала значку 13 и переменной NUM_LEDS для определения количества светодиодов, находящихся в полосе, которую вы используете. В этом случае я применяю только небольшую линию из 10 светодиодов, вырезанных из более длинной полосы.

Используйте большее количество для красивейшего светового шоу!

Загрузите эскиз на свою плату, отсоедините USB-кабель и включите источник питания 5 В.

Наконец, подключите VIN Arduino к линии электропередач и наслаждайтесь представлением.

Светодиодная лента Ардуино – Безграничные возможности

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

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

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

  • Идентификаторы переменных, констант, функций (в этом примере идентификатор ) являются одним словом (т.е. нельзя создать идентификатор ).
  • Идентификаторы могут состоять из латинских букв, цифр и символов подчеркивания . При этом идентификатор не может начинаться с цифры.
PRINT       // верно
PRINT_3D    // верно
MY_PRINT_3D // верно
_PRINT_3D   // верно
3D_PRINT    // ошибка
ПЕЧАТЬ_3Д   // ошибка
PRINT3D    // ошибка
  • Регистр букв в идентификаторе имеет значение. Т.е. , и с точки зрения компилятора — различные идентификаторы
  • Идентификаторы, создаваемые пользователем, не должны совпадать с предопределенными идентификаторами и стандартными конструкциями языка; если среда разработки подсветила введенный идентификтор каким-либо цветом, замените его на другой
  • Директива просто говорит компилятору заменить все вхождения заданного идентификатора на значение, заданное после пробела (здесь ), эти директивы помещают в начало кода. В конце данной директивы точка с запятой не допустима
  • Названия идентификаторов всегда нужно делать осмысленными, чтобы при возвращении к ранее написанному коду вам было ясно, зачем нужен каждый из них
  • Также полезно снабжать код программы комментариями: в примерах мы видим однострочные комментарии, которые начинаются с двух прямых слэшей и многострочные, заключённые между

// однострочный комментарий следует после двойного слеша до конца строки
/* многострочный комментарий
   помещается между парой слеш-звездочка и звездочка-слеш */

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

Функция не возвращает никакого значения и принимает два параметра:

— номер порта, на который мы отправляем сигнал

— значение скважности ШИМ, которое мы отправляем на порт. Он может принимать целочисленное значение от 0 до 255, где 0 — это 0%, а 255 — это 100%

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

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

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

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

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


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

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


Кабель с разъемами USB-A и USB-B для подключения принтера

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


Убедитесь, что программа определила ваш тип платы Ардуино

Шаг 1. Зайдите в основном меню «Инструменты -> Плата». Если плата Arduino определилась неправильно, то выберите необходимый тип, например, Arduino Uno.

Шаг 2. Установите порт (кроме COM1) подключения в меню «Инструменты -> Порт», так как при подключении Ардуино к ПК создается виртуальный COM-порт.


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

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

void setup() {
pinMode(13, OUTPUT); // объявляем пин 13 как выход
}

void loop() {
digitalWrite(13, HIGH); // зажигаем светодиод

delay(1000); // ждем 1 секунду

digitalWrite(13, LOW); // выключаем светодиод

delay(1000); // ждем 1 секунду
}


Скопируйте код и вставьте скетч в программу Arduino IDE

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

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


Перед загрузкой программы, потребуется сохранить скетч

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

В этой записи мы рассмотрим только основные характеристики функций задержки, а примеры использования представим в виде небольших скетчей. Для работы вам потребуется только сама плата Ардуино. Начнем обзор с 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

Загрузка примера “Blink” (мигание) в Arduino IDE

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

Не забудьте настроить оболочку Arduino IDE и выбрать нужный серийный порт, по которому Вы подключили Вашу плату

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

Пришло время проверить Ваше подключение и запрограммировать плату.

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

Откройте пример “Blink”, который находится в пункте меню File – Examples – 01.Basics

После открытия, расширьте окно оболочки Arduino IDE, чтобы Вы могли весь скетч в одно окне.

Скетчи из примеров, включенные в Arduino IDE предусматривают режим “только чтение” (“read only”). То есть, загрузить их на плату Вы сможете, но после изменения кода, Вы не сможете их сохранить в том же файле.

Мы будем изменять скетч, так что в первую очередь Вам необходимо сохранить собственную копию, которую Вы сможете изменять.

Из меню “File” выберите опцию “Сохранить как” (“Save As..”) и сохраните скетч под подходящим Вам названием, например, “MyBlink”.

Вы сохранили копию скетча “Blink” в Вашей библиотеке. Теперь открыть этот файл Вы можете в любой момент, перейдя по вкладке File – Scetchbook.

Урок 1. Мигающий светодиод на Arduino

Добрый вечер юные познаватели микроконтроллера Arduino, сегодня мы с вами начнем изучать основы и азы Arduino и поймем принцип его работы. Сегодняшний урок посвящен такому элементу как светодиод и работы c микроконтроллером Arduino. Попросту говоря,

Светодиод — это полупроводниковый прибор, трансформирующий электроток в видимое свечение.

И на основе свечения светодиода мы будем работать и рассматривать основу программирования Arduino. Перейдем непосредственно к практике Для начала нам нужно приготовить необходимый набор предметов для работы!

Для начала работы нам понадобятся такие компоненты

  • плата Arduino
  • Breadboard (макетная плата для удобного подключения приборов к Arduino)
  • Провода
  • светодиод
  • резистор

Также вам потребуется программа Arduino IDE, которую можно скачать с официального сайта Arduino.

Спросите вы, что такое Breadboard ?

Breadboard– макетная (монтажная) беспаечная плата. Breadboard представляет из себя сетку из гнезд, которые обычно соединяются так:

Далее, когда мы приготовили все компоненты к работе и установили программу на ПК , нам следует правильно их подключить . Подключать нужно очень внимательно, чтобы все компоненты остались целыми и невредимыми.

После правильного подключения перейдем к этапу программирования

/* Зажигаем светодиод на одну секунду, затем выключаем его на одну секунду в цикле.

*/ int led = 8; /*объявление переменной целого типа, содержащей номер порта к которому мы подключили провод */ void setup() { /* Инициализируем объявление используемого порта вход/выход в режиме выхода.

*/ pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); // зажигаем светодиод delay(1000); // ждем секунду digitalWrite(led, LOW); // выключаем светодиод delay(1000); // ждем секунду }

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

Перейдем к пояснению нашего скетча (кода)

С начала в нашем скетче мы объявили переменную int led = 8; .

Мы таким образом заявили, что хотим иметь ячейку памяти, к которой будем обращаться по имени led и изначально, при старте Arduino, в ней должно лежать значение 8 пина.

Перед именем переменной в определении указывается тип данных для этой переменной. В нашем случае — это int , что означает «целое число» (int — сокращение от английского «integer»: целочисленный).

Процедура setup выполняется один раз при запуске микроконтроллера. Обычно она используется для конфигурации портов микроконтроллера и других настроек. В нашем случае мы указали, что наш светодиод на 8 выходе . “pinMode(led, OUTPUT);” Хотелось бы сказать, что Arduino выполняет с начала действие setup , а далее выполняет действие другой процедуры, про которую мы сейчас поговорим.

После выполнения setup запускается процедура loop, которая выполняется в бесконечном цикле . Именно этим мы пользуемся в данном примере, чтобы маячок мигал постоянно.

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

Обращайте внимание на ; в концах строк. Не стирайте их там, где они есть, и не добавляйте лишних

Вскоре вы будете понимать, где они нужны, а где нет.

Функция digitalWrite(pin, value) не возвращает никакого значения и принимает два параметра: pin — номер цифрового порта, на который мы отправляем сигнал value — значение, которое мы отправляем на порт.

Для цифровых портов значением может быть HIGH (высокое, единица) или LOW (низкое, ноль) Если в качестве второго параметра вы передадите функции digitalWrite значение, отличное от HIGH , LOW, 1 или 0, компилятор может не выдать ошибку, но считать, что передано HIGH

Будьте внимательны Обратите внимание, что использованные нами константы: INPUT, OUTPUT, LOW, HIGH, пишутся заглавными буквами, иначе компилятор их не распознает и выдаст ошибку. Когда ключевое слово распознано, оно подсвечивается синим цветом в Arduino IDE

Задачи для самостоятельного решения, для укрепления материала

1) Измените скетч так, чтобы светодиод светился 3 секунды, а пауза между свечением была 0.5 секунды.

2) Измените скетч так, чтобы светодиод ,при включении Arduino, горел непрерывно 4 секунды (подсказка: сделайте это с помощью процедуры setup ), а потом продолжал мигать в интервале, который мы должны были задать в первом задании .

Только хардкор. Только прерывания!

Берем 16-ти битный Таймер 1. Устанавливаем прерывание на переполнение за 125мс

C++

uint8_t blink_loop = 0;
uint8_t blink_mode = 0;
uint8_t modes_count = 0;
// Начальное значение таймера
uint16_t n = 63583;

// Обработчик прерывания по переполнению таймера
ISR( TIMER1_OVF_vect )
{
if( blink_mode & 1<<(blink_loop&0x07) ) digitalWrite(13, HIGH);
else digitalWrite(13, LOW);
blink_loop++;
TCNT1 = n; //выставляем начальное значение TCNT1
}

void setup() {
pinMode(13,OUTPUT);
blink_mode = 0B00000000;
// А вот и хардкор — установка регистров таймера
TCCR1A = 0;
// Устанавливаем делитель 1024 к тактовой частоте 16МГц
TCCR1B = 1<<CS22 | 0<<CS21 | 1<<CS20;
//Подключаем прерывание по переполнению Timer1
TIMSK1 = 1<<TOIE1;
//Загружаем начальное значение таймера для первого цикла
TCNT1 = n;
sei(); // выставляем бит общего разрешения прерываний}
}

void loop() {
blink_mode = 0B00001111; //Мигание по 0.5 сек
delay(5000);
blink_mode = 0B00000001; //Короткая вспышка раз в секунду
delay(5000);
blink_mode = 0B00000101; //Две короткие вспышки раз в секунду
delay(5000);
blink_mode = 0B00010101; //Три короткие вспышки раз в секунду
delay(5000);
blink_mode = 0B01010101; //Частые короткие вспышки (4 раза в секунду)
delay(5000);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

uint8_t  blink_loop=;

uint8_t  blink_mode=;

uint8_t  modes_count=;

// Начальное значение таймера

uint16_tn=63583;

 
// Обработчик прерывания по переполнению таймера

ISR(TIMER1_OVF_vect)

{

if(blink_mode&1<<(blink_loop&0x07))digitalWrite(13,HIGH);

elsedigitalWrite(13,LOW);

blink_loop++;

TCNT1=n;//выставляем начальное значение TCNT1

}
 

voidsetup(){

pinMode(13,OUTPUT);

blink_mode=0B00000000;

// А вот и хардкор — установка регистров таймера

TCCR1A=;

// Устанавливаем делитель 1024 к тактовой частоте 16МГц

TCCR1B=1<<CS22|<<CS21|1<<CS20;

//Подключаем прерывание по переполнению Timer1

TIMSK1=1<<TOIE1;

//Загружаем начальное значение таймера для первого цикла

TCNT1=n;

sei();// выставляем бит общего разрешения прерываний}

}
 

voidloop(){

blink_mode=0B00001111;//Мигание по 0.5 сек

delay(5000);

blink_mode=0B00000001;//Короткая вспышка раз в секунду

delay(5000);

blink_mode=0B00000101;//Две короткие вспышки раз в секунду

delay(5000);

blink_mode=0B00010101;//Три короткие вспышки раз в секунду

delay(5000);

blink_mode=0B01010101;//Частые короткие вспышки (4 раза в секунду)

delay(5000);

}

Подробно по программированию таймера можно почитать здесь. При этом delay() на 5 секунд в Loop() совершенно не мешают управлению нашим светодиодом.

Недостаток такого метода в том, что не будут работать некоторые функции и библиотеки, использующие таймер 1. Например, ШИМ.

Если с программированием регистров сложно, а прерывание по таймеру использовать интересно —

Управление светодиодом

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

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

Включение светодиода произойдет в тот момент, когда мы подадим на пин, к которому он подключен, высокий уровень сигнала (напряжение). За это в Ардуино отвечает  функция digitalWrite со вторым параметром HIGH. Например, для светодиода, подключенного к пину 12 команда будет выглядеть так: digitalWrite (12, HIGH);

Чтобы выключить светодиод, мы используем ту же команду, но с параметром LOW: digitalWrite(12, LOW). Если мы вызовем первую команду, а потом чрез какой-то промежуток времени вторую, то у нас светодиод сначала загорится, а потом потухнет. Зациклив включение и выключение, мы получим постоянно включающийся и выключающийся мигающий маячок.

Бывают ситуации, когда светодиод горит не очень ярко и непонятно, что тут пошло не так. На самом деле нужно в первую очередь проверить, не забыли ли вы сконфигурировать пин в качестве выходного. Это делается добавлением функции pinMode (обычно в блоке setup()). Для нашего варианта функция будет выглядеть так: pinMode(12, OUTPUT);

Оригинальная система хранения для мастерской

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

Давайте продолжим разработку простых схем на Arduino UNO и cегодня мы задействуем такой элемент управления схем, как кнопка, смонтированная на монтажной плате.

Установив ее мы сможем управлять светодиодом, также нам понадобится резистор на , его вы его можете купить в магазинах с радиодеталями или найти в наборе, который входит в состав комплекта Arduino Uno.

Давайте установим резистор на монтажную плату, будем использовать один разъём минусовой, он отмечен синим цветом на монтажной плате, не доходя до ножки один оставим свободный разъём, также нам понадобятся провода для земли, для минуса, проводник для подачи 5 вольт, и для управления светодиодом.

Давайте перейдём в новый проект, уберём лишнее из кода, и займемся написанием скетча.

Объявим константу целочисленное значение int и дадим имя константе равно 12, также объявим еще одну константу, тип int равно 13.

const int keyPin = 12; //12 контакт для подачи напряжения
const int ledPin = 13; //13 контакт для управления светодиодом

На 12 контакт мы будем подавать напряжение 5V, 13 контакт у нас будет питать светодиод.

В подпрограмме с помощью функции мы объявим для 12 разъем, определим его как , как входящие данные, он у нас будет на прием.

Продублирую эту строчку и заменим на , и это у нас будет исходящий, OUTPUT, разъем.

void setup()
{
  pinMode(keyPin,INPUT); //12 контакт, входные данные
  pinMode(ledPin,OUTPUT); //13 контакт, выходные данные
}

В цикле напишем следующий код, по условию, если , читаем цифровой разъем на двенадцатом пине подано напряжение, это константа , то соответственно мы выполним условие, передадим цифровое значение через функцию на на двенадцатый разъем напряжение.

void loop()
{
  if(digitalRead(keyPin) ==HIGH )
  {
    digitalWrite(ledPin,HIGH);//подаем питание в 13 контакт
  }
  else
  {
    digitalWrite(ledPin,LOW);//нет напряжения на 13 контакте
  }
}

Если же нет на двенадцатом пине напряжения 5V, то соответственно на светодиод подаётся , ноль или отсутствие напряжения.

Вот какой текст кода должен получиться.

const int keyPin = 12; //12 контакт для подачи напряжения
const int ledPin = 13; //13 контакт для управления светодиодом

void setup()
{
  pinMode(keyPin,INPUT); //12 контакт, входные данные
  pinMode(ledPin,OUTPUT); //13 контакт, выходные данные
}

void loop()
{
  if(digitalRead(keyPin) ==HIGH )
  {
    digitalWrite(ledPin,HIGH);//подаем питание в 13 контакт
  }
  else
  {
    digitalWrite(ledPin,LOW);//нет напряжения на 13 контакте
  }
}

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

Итак мы используем чёрный проводник, который мы подключим Ground, к земле, с вот этой стороны, можно использовать возле 13 разъёма Ground, но мы его ещё задействуем.

Подключим с этой стороны ближе к микросхеме и подключим его к минусу на разъеме, соответственно минус у нас сейчас подключён к резистору.

Жёлтый проводник мы подключаем к 5 вольтам рядом с Ground на этой стороне, силовой блок, силовой разъём, где написано Power.

В 12 разъемы подключаем оранжевый проводник и подключаем его в эту точку между сопротивлением и кнопкой, после того как мы нажмем на кнопку, соответственно, если у нас подаётся напряжение, замыкается цепь, 5V приходит на оранжевый проводник на 12 разъем, то загорается светодиод на плате.

Давайте подключим зелёный светодиод, обратите внимание, как выполнены контакты, длинный контакт это плюс, короткий контакт светодиода — это минус. Длинный разъём подключаем в 13 разъем и короткий минусовой у нас идёт в GROUND, при нажимании на кнопку нас загорается светодиод

Длинный разъём подключаем в 13 разъем и короткий минусовой у нас идёт в GROUND, при нажимании на кнопку нас загорается светодиод.

Аналогично со светодиодом на плате, давайте установим светодиод, вынесем его на монтажную плату, задействуем ещё несколько проводников.

Давайте вот этот тёмно-зелёный мы подключим к короткой ножке и к минусу, а проводник красный мы подключим к 13 разъему и соответственно на монтажной плате к плюсовому разъёму светодиода.

Как вы можете заметить схема практически ничем не отличается, нажимая на кнопку, загорается светодиод на монтажной плате и встроенный на плате Arduino.

УРОК 1. ARDUINO И МИГАЮЩИЙ СВЕТОДИОД

Принципиальная схема к уроку 1. Arduino и Мигающий светодиод

LEDs (light-emitting diodes) — по русски Светоизлучающий диод, используется во многих электронных устройствах. При прохождении через его кристалл ток вызывает свечение, которое усиливается оптическим колпачком-линзой. Его неоспоримые достоинства — быстрое включение, высокая прочность, длительный срок службы, экологичность. Как правило используется как световой индикатор включения — переключения, а также отображение режимов работы. Делятся светодиоды на две группы — Монохромные (одноцветные) и RGB (многоцветные).

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

Для первого опыта вам понадобится:

Плата Arduino UNO — 1 шт.

Резистор 330ом. (можно использовать подходящие от 200 ом до 550 ом) — 1 шт.
На корпусе резистора нанесены цветовые полоски, они указывают его номинал, мощность и т.д*
На резисторе 330 ом. полоски должны быть Оранжевая, Оранжевая, Коричневая.

Светоизлучающий диод — 1 шт.

Макетная плата — 1 шт.

Соединительные провода.

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

Схема соединений урока №1. Arduino и Мигающий светодиод

Скачайте и распакуйте архив с программой урока, подсоедините ардуино к компьютеру с помощью USB шнура, запустите скетч урока № 1, дважды щелкнув по файлу lesson_01.ino, после этого у вас должна запустится среда программирования ArduinoIDE, в окне которой будет показан текст программы с многочисленными коментариями и пояснениями на русском языке. Внимательно прочитайте весь sketch от начала до конца, а затем загрузите программу в Arduino с помощью кнопки ЗАГРУЗИТЬ, или UPLOAD, в зависимости от языка программы.

Набор для экспериментов ArduinoKit
Код программы для опыта №1: sketch 01

Что-то подобное должно получиться у вас:

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

P.S. Таблица цветовой маркировки резисторов:

Таблица цветовой маркировки резисторов

Всем удачи! Ждём ваши комментарии к ARDUINO УРОК 1 МИГАЮЩИЙ СВЕТОДИОД.

2018-09-19T16:11:54+03:00Arduino уроки|

Особенности эксплуатации

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

Особой сноровки потребует и способ передвижения, поскольку скольжение стоп ходулей по поверхности помещения, где применяется рассматриваемый инструмент, исключается. Поэтому необходимо двигаться, попеременно выдвигая вперёд («задним ходом» на ходулях передвигаться вообще не рекомендуется) то одну, то другую штангу, при этом шаг перемещения не должен превышать половины длины подошвы. Очевидно, что перед применением потребуется выполнить ряд тренировок, причём с помощником. И, конечно, внимательно изучить инструкцию на изделие.

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

  1. Антропометрии пользователя: размера ступни, высоты голени и её обхвата в необходимом месте.
  2. Высоты помещения, в котором необходимо производить отделочные работы. Рука пользователя при работах в самой высокой точке, должна обеспечивать угол между плечевым и локтевым суставами не более 150…160°.
  3. Состояния пола, на котором не должно быть неровностей, щелей, пазов. На покрытии, естественно, не должно быть никаких жировых и масляных загрязнений. На ступенчатых поверхностях применять ходули не рекомендуется.
  4. Комбинезон и обувь работающего также должны учитывать особенность использования ходулей: влажная обувь, к примеру, снижает сцепление с подошвой, а отсутствие карманов или наплечных ремней для рабочего инструмента или сумки делает применение ходулей элементарно неудобным, поскольку достать какие-либо предметы с пола в этом случае невозможно.
  5. Состояния здоровья работающего. В частности, при имеющейся сосудистой недостаточности органов периферического кровообращения, длительный пережим голени может вызвать опасное превышение артериального давления.
  6. Веса пользователя.

Вот, кстати, неплохое видео где мастер делится своим опытом использования строительных ходулей.

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