Светодиодные индикаторы
ли вы ветеринаром по встраиваемым системам, ученым средней школы или любопытным человеком, вам нужно с чего-то начать свои исследования в области электроники. Если руководства недостаточно, ознакомьтесь с руководством по Arduino для начинающих.Читайте также: 6 лучших альтернатив Raspberry Pi
Что такое Arduino?
Arduino — это бренд микроконтроллерных плат с открытым исходным кодом, разработанный компания Ардуино .
Когда вы говорите об Arduino, обыч
Contents
Что такое Arduino?
Arduino особенные, потому что они долговечны. Они предназначены для студентов (или кого-либо еще), кто может что-то испортить или сломать.Еще одна их особенность — то, что они имеют открытый исходный код. таблицы данных для всех плат и шилдов Arduino доступны в Интернете. Вы можете сделать свою собственную плату Arduino, если у вас есть технические ноу-хау.
Что это значит для меня?
Для новичка это означает:
- Для изучения микроконтроллеров не нужно создавать собственные схемы.
- Эти доски оснащены функциями безопасности, которые не позволят вам случайно сломать их.
- Сообщество разработчиков аппаратного обеспечения с открытым исходным кодом создало множество плат для разных целей – есть даже одна, предназначенная для наклеивание электроники на одежду !
Анатомия платы Arduino
Существует множество видов плат Arduino. Некоторые из них крошечные, как аккумулятор, а другие большие, как цифровая камера, но у всех есть несколько общих частей:
- Микроконтроллер
- Заголовки
- Порты питания и USB
- Светодиодные индикаторы
Существуют и другие сторонние платы на б
Что это значит для меня?
ми производителями, но обычно у них есть общие черты.Микроконтроллер (MCU)
Микроконтроллер, также известный как MCU, считывает и управляет всеми входами и выходами на плате. Он также хранит созданный пользователем код, который заставляет его что-то делать.
Arduino Uno R3 имеет специальный съемный чип MCU. Таким образом, вы сможете заменить эту деталь, если она сломана или изношена. На других платах микросхемы MCU припаяны к самой плате. Недостаток очевиден, но обычно их делают намного меньше и быстрее, чем их непаянные аналоги.
Пины в заголовке
По бокам вы должны увидеть несколько приподнятых кусков пластика с отверстиями сверху. Это штифты с внутренней резьбой. В них следует вставлять провода или перемычки.
Анатомия платы Arduino
GPIO и контакты питания. Выводы GPIO позволяют обрабатывать входы и выходы. По умолчанию все контакты Arduino являются входами. С другой стороны, контакты питания предназначены для перемещения электричества по плате. 5 В и 3,3 В всегда излучают столько напряжения, сколько следует из их названия. GND означает «земля», а Vin позволяет подавать питание на плату через этот контакт.Читайте также: Как сделать мигающие светодиоды с помощью Raspberry Pi
Порты питания и USB
Все платы Arduino обычно имеют
Микроконтроллер (MCU)
илиндрический разъем постоянного тока, но некоторые из них не имеют цилиндрического разъема постоянного тока. Обычно они получают питание либо от порта USB, либо от контактов питания.Бочковые разъемы постоянного тока обычно имеют размер 2,1 × 5,5 мм, внутренняя часть — положительная, а внешняя — отрицательная. Они рассчитаны на напряжение от 7 до 20 В, но лучше, если это возможно, использовать значение держится на 9 вольтах .
Порты USB различаются в зависимости от модели. Они могут использовать Type-A, Type-B, USBmicro или Type-C. Через них можно подать питание на плату, они также служат портами связи.
Светодиодные индикаторыПины в заголовке
sync" src="https://saintist.ru/wp-content/uploads/2024/05/arduino-leds-with-labels.png" alt="Светодиоды Arduino с этикетками">
Наконец, обычно имеется три светодиодных индикатора, которые позволяют видеть состояние платы.
- Прием (получение)
- Передача (передача)
- L (встроенный светодиод)
- ON (питание включено)
Выводы L и ON говорят сами за себя. Один из них имеет значение встроенный светодиод, которым вы можете управлять , а другой включается всякий раз, когда через плату проходит электричество. С другой стороны, первые два включаются всякий раз, когда Arduino получает или передает информацию по последовательной связи.
IDE для Arduino
Новичкам следует начать с Arduino IDE, прежде чем переходить к любой другой программе, например ПлатформаIO , отчасти потому, что она проста и содержит все необходимое. У вас также будет меньше шансов что-то испортить, если вы воспользуетесь этим. В конце концов, он создан для плат Arduino.
Arduino IDE имеет три важные функции:
- Редактирование
- Здание
- Загрузка
Обычно функции создания и загрузки работают рука об руку. Как только вы закончите вводить и редактировать свой код, вы можете его создать, а затем загрузить все прямо на свою доску. Но бывают случаи, когда вам нужно
Порты питания и USB
ружать.Arduino IDE можно скачать на веб-сайте Arduino.
Читайте также: Как сделать мигающие светодиоды с помощью Raspberry Pi
Способы мигания встроенного светодиода
Мигание встроенного светодиода — это версия сценария «Hello World» для Arduino, а также простой способ проверить, работает ли Arduino. Я демонстрирую различные способы заставить его мигать, в том числе сообщаю компьютеру, что он уже мигает.
Пример 1: обычное моргание
Мы начинаем с базового сценария моргания. Вам просто нужно будет включить встроенный светодиод на 0,5 секунды, а затем выключить его еще на 0,5 секунды.
- Откройте среду разработки Arduino.
- Как только вы откроете IDE, вас должен встретить новый эскиз. Если нет, нажмите «Файл ->Создать» или нажмите Ctrl+ N.
- Замените код в IDE следующим кодом:
void setup() { // put your setup code here, to run once: pinMode(LED_BUILTIN, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(500); }
- Перейдите в «Sketch ->Upload» или нажмите Ctrl+ U, чтобы загрузить свой код в Arduino.
Код Arduino обычно делится на две части: setup()
и loop()
.
Когда вы видите setup()
, вы должны определить свои выходные и входные данные. В данном случае мы используем pinMode()
, чтобы превратить вывод IDE для Arduinoодной.
Пин LED_BUILTIN
— это контакт 13, который напрямую подключен к светодиоду L. Он включит его всякий раз, когда получит достаточно электричества, чтобы поднять его на ВЫСОКИЙ уровень. Вы даже можете заменить все экземпляры LED_BUILTIN
на 13
, и это все равно будет работать.
setup()
более подробно обсуждается в следующем примере. Здесь все начинается с первой строки в пределах loop()
, и Arduino выполняет эту строку, затем вторую, затем третью и так далее, пока не дойдет до последней строки. После этого он вернется на первую строку. Вот почему он называется loop()
.
В этом примере мы использовали digitalWrite()
для преобразования LED_BUILTIN
в HIGH
. Здесь проходит электричество 5 В, тогда delay(500)
временно не позволит Arduino читать дополнительный код в течение 500 миллисекунд. После этого Arduino запускает следующую строку, которая сводит LED_BUILTIN
к LOW
.
На самом деле это цикл: включение, ожидание полсекунды, выключение, ожидание еще полсекунды, а затем снова возвращение к стартовой линии. Он продолжает работать, пока подключен к источнику питания.
Читайте также: 10 полезных острот Python, которые вы должны знать
Пример 2: три мигания при запуске
На этот раз мы поэкспериментируем с setup()
, чтобы заставить встроен
Способы мигания встроенного светодиода
едленно мигать каждые 0,5 секунды.- В текущем коде переместите курсор на
pinMode(LED_BUILTIN, OUTPUT);
и создайте новую строку подvoid setup()
.
- Вставьте в эту строку следующий код:
Пример 1: обычное моргание
TIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(250); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(250); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(250);
- Ваш код должен выглядеть следующим образом:
void setup() { // put your setup code here, to run once: pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(250); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(250); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(250); } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(500); }
- Загрузите свой код и посмотрите на свой Arduino! Помните, что для отправки кода на доску можно использовать либо «Sketch ->Upload», либо Ctrl+ U.
В предыдущем примере говорилось о loop()
и о том, как он работает. Давайте вернемся немного назад и остановимся на setup()
.
Все, что вы помещаете в setup()
, запускается один раз, как и сказано в заранее написанном комментарии. Благодаря этому вы можете заставить свой Arduino что-то сделать, чтобы сообщить вам, что он начнет работать. Если у вас ЖК-экран, OLED- или AMOLED-экран, вы можете даже создать фальшивую анимацию загрузки!
Здесь также следует запускать специальные команды, например установление связи через последовательный порт.
Пример 3. Использование последовательного соединения
В отличие от параллельной связи, последовательная связь передает данные от источника к месту назначения побитно.
На этот раз Arduino отправит несколько сообщений по последовательному порту, чтобы сообщить вам обновления статуса.
- В
setup()
создайте новую строку передpinMode(LED_BUILTIN, OUTPUT);
и введитеSerial.begin(9600);
. Создайте новую строку внизу, чтобы выглядеть аккуратнее.
- Создайте новую строку после
pinMode(LED_BUILTIN, OUTPUT);
, затем введитеSerial.println("Arduino, starting up!");
в этой новой строке. Оставьте новую строку между этими двумя.
- Перейдите к
loop()
. Создайте новую строку подdigitalWrite(LED_BUILTIN, HIGH);
и введитеSerial.println("LED on");
. Сделайте то же самое дляdigitalWrite(LED_BUILTIN, LOW);
, но вместо этого введитеSerial.println("LED off");
.
- (Необязательно) Вы можете оставить новую строку между первыми
delay(500)
иdigitalWrite(LED_BUILTIN, LOW);
.
- Полный код должен выглядеть следующим образом:
void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(LED_BUILTIN, OUTPUT); Serial.println("Arduino, starting up!"); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(250); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(250); digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(250); } void loop() { // put your main code here, to run repeatedly: digitalWrite(LED_BUILTIN, HIGH); Serial.println("LED on"); delay(500); digitalWrite(LED_BUILTIN, LOW); Serial.println("LED off"); delay(500); }
- Загрузите свой код с помощью «Sketch ->Upload» или Ctrl+ U.
- Откройте Serial Monitor, перейдя в «Инструменты ->Serial Monitor» или нажав Ctrl+ Shift+ Mна клавиатуре. На прямоугольном экране должны появиться все последовательные выходы, которые вы запрограммировали на Arduino.
Поскольку программное обеспечение использует консоль для отладки, вы должны использовать Serial в аппаратном обеспечении для той же цели.
В setup()
вы добавили строку Serial.begin(9600);
. Это говорит Arduino открыть канал с компьютером для последовательной связи. Число рядом с ним показывает, насколько быстро он должен отправлять данные.
9600
означает 9600 бод. Это означает, что он будет отправлять 9600 бит в секунду. Скорость передачи данных для Arduino IDE варьируется от 300 до более чем 2 миллионов бод. Меньшие тарифы лучше подходят для более длинных проводов (например, телефонные провода для расстояния), а большие — для более коротких проводов. Однако 2 миллиона бод — это перебор. Во многих случаях даже 19 200 бод более чем достаточно даже для самых чувствительных датчиков-любителей.
Покончив с этим, давайте поговорим о Serial.println();
. Эта команда означает «печать, новая строка» и создает новую строку после того, как напечатает то, что находится внутри области ()
.
Serial.println()
принимает как строки, так и переменные, содержащие строки. Он ведет себя странно, когда вы добавляете в него числа, особенно если оно начинается с 0.
Если вы посмотрите на результаты монитора последовательного порта, вы также заметите, что он печатает «Arduino, запускается!» только
Пример 3. Использование последовательного соединения
ен» неоднократно распечатываются при каждом мигании. В этом большая разница междуsetup()
и loop()
.
На самом деле, вы даже можете поместить свой код из setup()
в loop()
, но обычно это плохая практика. В конечном итоге вы можете превратить входной контакт в выходной, что может привести к поломке микросхемы микроконтроллера.
Читайте также: Цикл while в Python: введение и объяснение
Пример 4: Blink с циклами For
Это очень помогает. Цикл for позволяет выполнить мини-loop()
, который заканчивается через заданное количество раз.
Давайте попробуем создать сложные шаблоны мигания с помощью нескольких циклов for. При первой загрузке светодиод должен мигнуть 13 раз, включиться на 500 мс и погаснуть на 250 мс, и только один раз. Затем он должен зациклиться, мигнуть четыре раза, включиться на 1000 мс и выключиться на 1000 мс, затем мигнуть еще два раза, включиться на 500 мс и выключиться на 250 мс.
- В
setup()
удалите блок кода, который превращаетLED_BUILTIN
вHIGH
илиLOW
. Также удалите функцииdelay()
.
- Замените этот код следующим:
for (int i = 0; i < 12; i++) { digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); delay(250); }
- На
loop()
удалите все и замените следующим кодом, который включает светодиод на 1000 мс и выключает его на 1000 мс, каждый раз четыре раза:
for (int i = 0; i < 4; i++) { digitalWrite(LED_BUILTIN, HIGH); delay(1000); Serial.println("LED on for 1 second"); digitalWrite(LED_BUILTIN, LOW); delay(1000); Serial.println("LED off for 1 second"); }
- Создайте новую строку и добавьте следующий код, который включает светодиод на 500 мс и выключает его на 250 мс, каждый раз два раза:
for (int i = 0; i < 2; i++) { digitalWrite(LED_BUILTIN, HIGH); delay(500); Serial.println("LED on for 0.5 seconds"); digitalWrite(LED_BUILTIN, LOW); delay(250); Serial.println("LED off for 0.25 seconds"); }
- Загрузите свой код, затем откройте последовательный монитор. Прежде чем выполнить два разных мини-цикла, он должен начать отсчитывать до 13 миганий светодиода.
Цикл for — это простой, но легкий в освоении инструмент. Он состоит из трех частей: for
, (int i = 0; i < x; i++)
и всего, что находится внутри { }
.
for
сообщает Arduino IDE, что это функция цикла for. Есть много других, напримерwhile
,if
иswitch
.(int i = 0; i < x; i++)
— это условие. В нем говорится, что пока целое числоi
, равное 0, меньше значенияx
, выполнитеi++
и выполните функцию.i++
— это сокращение отi + 1
. Вы даже можете заменить его наi + x
, где «x» — любое число, или заставить его отсчитываться с помощью оператора «-».{ }
содержит все, что будет делать цикл. В конце концов, ему не нужен;
. Вы просто оставляете все как есть.
Читайте также: Как управлять Raspberry Pi через Windows через SSH
Заключение
С помощью этого простого руководства по Arduino для начинающих вы сможете создавать собственные световые эффекты или, может быть, необычную рождественскую гирлянду.
Конечно, есть чему поучиться, но лучше учиться по ходу дела. Вы можете опробовать двигатели, датчики, реле и многое другое! Если вы готовы принять вызов, возможно, вы захотите запрограммировать Arduino с помощью Raspberry Pi .