Мигаем встроенным светодиодом ардуино

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

Сегодня мы начинаем серию уроков «Arduino для начинающих». Это самый-самый начальный уровень, с «нуля». Урок публикуем сразу в двух вариантах — текстово-графическом и видео — выбирайте, что вам ближе. В этом уроке мы приводим листинг программы и подробные комментарии и схему подключения.

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

Arduino часто входит в учебные программы по робототехнике и изучается в кружках робототехники. Но плата популярна и в создании «настоящих» роботов. Именно Arduino может стать «мозгом» вашего робота.

Итак, видео-инструкция сборки мигающего светодиода на Arduino. Очень просто. Всего 2 минуты!

Для подключения мигающего светодиода на Arduino и управления им вам понадобится:

  • плата Arduino
  • breadboard
  • 2 провода «папа-папа»
  • светодиод
  • резистор.

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

Все эти комплектующие входят в большинство начальных комплектов, их также можно приобрести по отдельности. Наборы Arduino можно купить на официальном сайте и в интернет-магазинах, наиболее привлекательные цены, постоянные спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазин DESSY.

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

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

Схема подключения светодиода на Arduino

Для работы этой модели подойдет следующая программа (программу вы можете просто скопировать в Arduino IDE):

int led = 8;
void setup()
<
pinMode(led, OUTPUT);
>
void loop()
<
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
>

И тоже самое с построчными комментариями (на первых порах вы можете использовать готовые программы, не вникая в синтаксис и алгоритм):
int led = 8; //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод
void setup() //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void
<
pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)
>
void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup
<
digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)
delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах
digitalWrite(led, LOW);
delay(1000);
>

На этом первый урок закончен!

Смотрите также:

Посты по урокам:

Все посты сайта «Занимательная робототехника» по тегу Arduino.

Наш YouTube канал, где публикуются видео-уроки.

Не знаете, где купить Arduino? Все используемые в уроке комплектующие входят в большинство готовых комплектов Arduino, их также можно приобрести по отдельности. Подробная инструкция по выбору здесь. Низкие цены, спецпредложения и бесплатная доставка на сайтах AliExpress и DealExtreme. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Смотри также список магазинов.

Автор: Александр Гагарин.

Читайте также

40 комментариев к статье “Arduino для начинающих. Урок 1. Мигающий светодиод”

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

Маша, а ты изучаешь ардуино?))) Если что давай вместе учить)))

Маш обычно индикаторные диоды потребляют ток в пределах 20мА это 0,02А или 20/1000А. на входе 5в. Красный диод потребляет 1.9-2.6 в белый, зеленый,синий 3-3.6в. Таким образом по Закону Ома сила тока=напряжение деленное на сопративление. То есть 5в-3в=3в напряжение которое нужно погасить. 3в делим на 0.02А получаем 150Ом нужный номинал. 0,02*3=0,06вт или 0,02А*0,02А*150Ом это рассеиваемая мощность на резисторе. Теперь подбираем резистор ближайший идет 220ом 1/4вт. Вот домашнее задание теперь вам разобраться сколько от милиампер будет через него идти и будет ли гореть он можно проверить имперчески. Резистор нужен просто чтобы не перегреть диод. Да и еще длинную ножку катод нужно подключать к + а короткую к минусу свкетодиод работает как обычны1 диод пропускает ток только в одном направлении от + к — только он еще и горит. Да и еще при параллельном соединнии тоесть если несколько подключить по двум линимям складываеться сопротивление и ток оптребляемый при постоянном напряжении. А при последовательно складываеться напряжене то есть три красных последовательно не знаю загоряться ли но если загоряться то резистор им не нужен скорее всего. Или красный с синим последовательно как раз 5вольт. У нас USB порт всегда 5в выдает стабильно наверное еслиь бы от аккумулятора питался тогда да. Ну мигает диод потому что подпраграма периодически включает выключает пин.

Все это уже 100500 раз разбиралось….наплодили сайтов по дуино и копируют друг у друга

Маша. Диод горит потому что ток идёт)). Ардуино, ардуино зови меня так)). ардуино лучше изучать со мной))

дарогой Ардуина.До меня дашли слуки что ты стал очен извесным. я хосу твой делитель напрежения, где он))))Можеш звать меня канистра.))) канистру луше заполягть мной)) за аффттп извени.

Светодиод ардуино. это легко. а как подключить к ардуино 100 ватную лампу накаливания, например?

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

Нужно подключить к ардуинке реле, управляющее лампочкой, запитанной от розетки

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

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

А в схеме можно использовать любой резистор?Или нет?А какие можно?

Рекомендуется использовать резистор на 220 Ом. Цветовая маркировка такого резистора — красный-красный-коричневый-коричневый или красный-красный-черный-черный-коричневый.

Автор, вы молодец. Проект хороший.Если я правильно поняла, то цель проекта — научить как можно большее количество людей работать с Arduino.
Но Маша права, не хватает схемы и объяснения, почему мы делаем то или иное действие.
Если вы заявляете уровень » с нуля», то будьте готовы, что многие «нули» совсем не в курсе, для чего нужен резистор, и что такое анод и катод у диода (в видео это обозначено как + и -).
Очень надеюсь, что вы прочтете этот большой коммент и прислушаетесь к совету.
Желаю удачи вашему проекту!

то есть, можн,о что-то типо этог,о я просто не знаю язык. Тут чтото си подобное
pinmode(8,output) //скорее всего вывод(output) это константа значение ее не знаю то есть если аутрут равно 2 то можно писать 2 вместо output хотя первое читабельнее.
Настроили 8мую иголку на вывод
Дальше мне не понятно почему программа с названием луп циклиться? Программа по идее должна линейно выполняться. Если она не завершаеться возможно есть какой-нибудь оператор завершения а просто тупо повторяеться многократно тогда каждый раз будет выполняться инциализация переменной.
Есть ли какаято возможность записать эту программу в память ардуино чтобы она была там автономно без подключения к компу?
Может все подпрограммы с именем loop цикляться?
Я так понимаю если low и high это константы причем логические как ложь и истина то и их значение скорее всего шест. x00 и шест xFF то тогда логически high исключает low самом деле 00 xor ff=ff XD Тогда это очень компактнобудет
int switchstate=low
pinmode(8,0utput) //Иницализация
метка loop:
swithstate=switchstate xor switchstate;
delay(1000);
goto loop;
Ну как бы в языке наверное нет goto я просто написал у меня нет ардуино и языка си я не знаю. В примере просто показанно как переменные описывать хотя в данном случае 8 это константа.
void переводиться как пустой наверное я понял в языке си нет понятия function только routine подпрограмма я так понял функция без параметров есть подпрограмма. Все операторы заканчиваються «;» То есть void потом Имя подпрограммы в скобках формальные параметры потом точка с запятой, а между фигрурными скобками ее код.
Ага еще интереснее было бы если исполизовать логические операторы типо if then или циклы типо while wend или repeat until скажем моргнуть 10раз. Могу предположить если аргумент delay короткое целое 16 бит то 2^16=65536 то и значение предельное в диапозоне 60мс хотя может быть и длинное целое быть 4байта.
Да в принципе если они использовали подпрограмму как таковую и переменную тогда могли бы написать и программе шапку типо того
пустой Подпрограмматребуетпеременнуютипацеое(целое Требуемаяпеременная); И синтаксис заодно void «(«[» » [«,»]>*»)» Ну как бы синтаксис я не знаю чтобы его описать просто предположил что переменые запятой разделяються.

tolkom vsjo ne pro4ital srazu no zaintresovalsa s mesta loop! nu eto tipo objasnjaetssa kak petlja — prostimi slovami. ne toljko v programmirovanii ispolzuetssa loop. tobish cikl po krugu… kakto tak. esli ne budet loop to eta programma zakon4itssa posle pdnoj vspiwki svetodioda.
ja poproboval sdelal 4 korotkix miganija s pauzoj v konce. eslib ne loop to 4x morgnulab i vsjo bolwe ne migalob.

vot eto vabwwe ne ponjal… есть если аутрут равно 2 то можно писать 2 вместо output. po4emu eto output ravno 2? gde ti vzjal takoe ja ne vjexal. xotj ja v programmirovanii lamer no output eto po ljubomu ВЫХод. OUT on i v afrike vixod, no po4emu put ja ne v kurse :P :D

Есть ли какаято возможность записать эту программу в память ардуино чтобы она была там автономно без подключения к компу?
da kstati ona zapisivaetssa s pomowju USB kabelja i polnostju avtonomna rabotaet prosto pitanie vrubaesh i ona rabotaet. ja toljko cto pervij raz vklju4il etu platu potomucto sevodnja toljko polu4il ejo po po4te. s programmirovaniem tow ranshe ne stalkivalsa vabwwe… toljko oxrannie signalizacii no tam vabwwe nr to :D i blizko netu.

Источник

Урок 1 — Мигаем встроенным на плату Arduino светодиодом

На плату Arduino UNO (Nano, Mega, micro и пр.) установлен светодиод который соединен с 13 pin платы. На плате он обозначается буквой L.

Для того чтобы заставить мигать встроенный светодиод на плату Arduino. Достаточно загрузить не большую программу.

Для урока нам понадобиться:

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

pinMode(13, OUTPUT); Инициализируем цифровой вход/выход в режиме выхода. Этого можно не делать так как цифровые выходы Ардуины по умолчанию настроенные на режим выход.

После вызова функции setup(), которая инициализирует и устанавливает первоначальные значения, функция loop() делает точь-в-точь то, что означает её название, и крутится в цикле, позволяя вашей программе совершать вычисления и реагировать на них. Использовать её нужно для активного управления платой Arduino.

DigitalWrite() — Так как у нас пин настроен как выход (pinMode(13, OUTPUT);), то для значение HIGH напряжение на соответствующем вход/выходе (pin) будет 5В (3.3В для 3.3V плат), и 0В(земля) для LOW.

Т.е. digitalWrite(13, HIGH); — На пин 13 подается 5 вольт.

digitalWrite(13, LOW); — На пин 13 подается 0В.

delay() — Останавливает выполнение программы на заданное в параметре количество миллисекунд (1000 миллисекунд в 1 секунде).

Следующий урок: Мигаем светодиодом подключенным к 2 pin Arduino

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

Понравилась статья? Поделитесь ею с друзьями:

Источник

Мигаем светодиодом

Будем постепенно знакомиться с основами программирования, платой и другими полезными вещами. Это позволит избежать стресса от потока новой информации.

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

Во-первых, нам придётся писать примеры на C++-подобном языке. Поэтому можете похвастаться перед знакомыми, что пишите программы на C++. Во-вторых, он очень упрощённый, и вам не нужно бояться его.

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

Запускаем скетч File | Examples | 1.Basics | Blink (Файл | Примеры | 1.Basics | Blink). У вас загрузится готовый пример с кодом. С его помощью мы можем увидеть, что плата работает.

Выбираем нашу плату — в меню Tools | Board (Сервис | Плата) должна быть отмечена Arduino Uno (как правило по умолчанию она уже отмечена). У вас может быть другая плата. Естественно, вы должны уже подключить плату к компьютеру через USB-порт для загрузки скетча в микроконтроллер.

Теперь нужно выбрать последовательный порт. Опять идём в меню Tools | Serial Port (Сервис | Последовательный порт) и выбираем нужный порт (обычно это COM3 или COM4).

Теперь нам необходимо загрузить открытый пример Blink на микроконтроллер. Просто щёлкните на кнопкуUpload (Загрузить) и внимательно смотрите на плату. Вы увидите, что светодиоды, помеченные как RX и TX будут мигать. После успешной загрузки примера в контроллер, в строке состояния среды разработки появится надпись Done uploading (Загрузка выполнена).

Ещё ниже в области консоли будет выведено сообщение:
Sketch uses 930 bytes (2%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.

В сообщение выводится информацию об используемой памяти. Программа настолько проста, что почти ничего не потребляет (0% оперативной памяти и 2% постоянной памяти).

Через несколько секунд после загрузки, вы можете увидеть, что светодиод, помеченный на плате как 13 (L), будет мигать оранжевым цветом. Поздравляю, вы успешно установили среду разработки и запустили свою первую программу!

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

Сравните с текущей версией.

Теперь вместо создания отдельной переменной led используется встроенная константа LED_BUILTIN. Это удобно, так как в разных платах используются разные значения для встроенного светодиода и таким образом программа получилась универсальной.

Возвращаемся к первой программе BareMinimum. Откройте скетч и сделайте сначала первую вещь — нажмите на кнопку Verify (первый значок с галочкой). Среда разработки переводит ваш код в машинный код, т.е. компилирует. Если в вашем коде есть ошибка, то компилятор выведет сообщение. Это полезно, чтобы не тратить зря время на загрузку заведомо неработающей программы. Давайте сознательно сделаем ошибку — напишем код в функции setup().

С точки зрения кошатника, здесь всё написано правильно. Предложение написано без ошибок, есть даже точка с запятой в конце строки — всё как положено.

Проверим. Нажимаем кнопку Verify и видим сообщения с красным текстом. Его текст приводить не буду, сами убедитесь. Если программа с ошибкой, то нет смысла её загружать на плату. Даже если вы очень упрямый и всё-равно нажмёте кнопку Upload, то получите ту же ошибку. Иными словами, Upload сначала самостоятельно выполняет операцию Verify и при отсутствии ошибки загружает скетч.

Разбор примера

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

Изучим код шаг за шагом.

В функции setup() мы видим три строчки:

Приблизительный перевод комментариев, которые используется в функции setup() можно перевести как:

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

В старых версиях код был немного другим:

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

Комментарий можно перевести как:

Сейчас код обновили, и вместо переменной led используют константу LED_BUILTIN. Такой подход удобен, так как не все платы Arduino имеют встроенный светодиод на порту 13. Если у вас две разные платы и одна из них имеет нестандартный номер, то вам не придётся переписывать пример под каждую плату. Например, у плат MKR1000 встроенный светодиод находится на порту 6.

Нам встретилась новая функция pinMode(), которая устанавливает режим для портов. Функция состоит из двух параметров. В первом параметре указывается порт, с которым мы собираемся работать. Во втором параметре мы сообщаем, как должен работать указанный порт: работать на выход (OUTPUT) или вход (INPUT). В нашем примере, вывод под номером 13 (или другой порт, используемый встроенным светодиодом) должен выводить информацию (посылать сигнал), то есть давать указание мигать светодиоду.

Мы определили в функции setup() необходимые данные для начала работы и теперь можем приступить к непосредственной реализации задачи в функции loop().

Здесь мы видим уже четыре строчки кода. Первая строчка включает светодиод при помощи функции digitalWrite(). В первом параметре мы указываем номер порта, с которым собираемся работать, а во второй указываем константу HIGH. Забегая вперёд, могу сказать что константа HIGH равна 1, и можно было написать digitalWrite(13, 1). Но такая запись не очень удобна, так мельтешение цифр в большом проекте затрудняет чтение кода. А здесь вы сразу видите, что на порту под номером 13 включается светодиод.

Далее идёт команда, отвечающая за паузу — delay(), которая имеет один параметр — количество времени в миллисекундах. В нашем примере мы сделали паузу в одну секунду (1000 миллисекунд = 1 секунда).

Следом идёт уже знакомая нам функция digitalWrite(), но уже с параметром LOW, который выключает светодиод (значение константы LOW равно 0).

И последняя строчка снова делает паузу в одну секунду.

Посмотрим, как работает программа. Когда мы загружаем программу в микроконтроллер, то Arduino активирует порт 13 в режиме выхода (функция setup()), а затем начинает последовательно выполнять четыре строчки из функции loop(): включает диод-пауза-выключает диод-пауза. Когда эти четыре строчки будут выполнены, то они снова будут вызваны и будут повторяться до тех пор, пока мы не выдернем кабель.

Немного о паузе. Теоретически можно убрать вызов функции delay() и программа будет работать. Проблема в другом — контроллер работает с частотой 16 миллионов герц (герц — одно колебание в секунду; если команда длится один такт, вывод переключается 16 миллионов раз в секунду, соответственно, состояние вывода меняется каждые 0,0000000625 секунды), человеческий глаз не способен увидеть реакцию светодиода. Необходимо немного увеличить интервал между двумя командами включения и выключения светодиода.

Что мы можем изменить в данной программе? По большому счету ничего — мы можем установить только собственные значения пауз. Поэкспериментируйте с этим. Другие изменения результата не принесут — нет смысла, например, сейчас использовать другой порт или использовать режим INPUT.

Добавляем свой светодиод (+светодиод)

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

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

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

Из первого примера с встроенным светодиодом мы помним, что он использует вывод под номером 13 (на большинстве плат). На плате есть свободный вывод с этим номером, который находится рядом с выводом GND. Берём светодиод и вставляем в эти выводы. Не забываем, что короткую ножку вставляем в GND, а длинную в вывод 13. У вывода 13 уже установлен резистор, поэтому светодиод не сгорит.

Запускаем снова программу Blink. Теперь будут мигать два светодиода: встроенный и наш. Красота!

Вернёмся к светодиодам. Как правило, в цепи идёт слишком большой ток для светодиодов. Чтобы уменьшить силу тока, используют токопонижающие резисторы (сопротивления). У светодиодов есть важные характеристики: ток питания и напряжение падения (Forward voltage). Невероятно, но факт — светодиоды разных цветов используют разные значения напряжения падения. Максимальный ток для светодиодов колеблется в районе 20 миллиампер. Для вычисления значения сопротивления используют формулу: из напряжения питания вычитаем напряжение падения и результат делим на силу тока в светодиоде в амперах. В документации обычно рекомендуют использовать резистор от 220 ohm до 1K ohm. На практике, можно использовать и 100 ом. Если поставите меньше, то будет риск спалить светодиод. При выполнении опытов с несколькими светодиодами вы можете установить разные резисторы, чтобы увидеть разницу.

На следующем уроке мы поближе познакомимся с цифровыми выводами и попробуем изменять программы под свои нужды.

Источник

Adblock
detector