Урок 3 — цифровые выходы

Цифровые входы/выходы

В уроке про распиновку платы мы обсуждали такое понятие, как GPIO: с англ. General Purpose Input-Output, входы-выходы общего назначения. Теперь надо разобраться с такими понятиями, как пин и порт. Пин – это конкретная нога микроконтроллера, имеющая свой номер, по которому к ней можно обратиться. Порт – это совокупность пинов. Микроконтроллер спроектирован так, чтобы обеспечить хорошее быстродействие, поэтому например пины объединены в порты, в одном порте обычно до 8 пинов (потому что в байте 8 бит). Работая с микроконтроллером напрямую, мы можем за одно действие установить состояние для всех пинов одного порта. Это очень быстро. Уроки у нас базовые, поэтому сегодня поговорим о функциях для работы с пинами, которые нам предлагает Ардуино. Но сначала давайте разберёмся, какие из пинов являются цифровыми. Взглянем на распиновку платы Нано: Все пины, имеющие название PD*, PC*, PB*, являются GPIO. D, С и B указывает на номер порта, которому принадлежит пин. На плате пины подписаны по-другому, просто по порядку. Таким образом мы видим, что все пины с D0-D13 и A0-A5 являются GPIO, то есть цифровыми входами-выходами. Многие называют пины A0A7 аналоговыми, на некоторых неофициальных распиновках они прям подписаны как analog pin, и это вводит новичков в заблуждение, потому что A0-A5 являются такими же цифровыми пинами, как D0-D13 . Но у этих пинов есть дополнительная функция в виде чтения аналогового сигнала. Об этом поговорим в следующем уроке. А вот пины A6 и A7 являются именно аналоговыми, потому что у них есть только выход на АЦП, эти пины не являются GPIO, и с ними нельзя работать функциями для цифровых пинов. Если вы посмотрите на распиновку Arduino UNO, то вообще не найдёте там пинов A6 и A7, то есть УНО хоть и больше НАНО, но возможностей у неё меньше =)

Нумерация пинов

Пины пронумерованы на плате как “цифровые” D* пины и аналоговые A* пины. К цифровым пинам мы будем обращаться просто по их номеру, т.е. D3 это просто 3. С аналоговыми пинами чуть сложнее:

  • Обратиться можно с буквой A (A3, A5)
  • Можно цифрой по порядку после цифровых, так например у Нано последний цифровой – D13, следующий за ним “аналоговый” А0 имеет номер 14, а например A5 имеет номер 19, по которому к нему тоже можно обратиться, что позволяет управлять всеми пинами при помощи циклов

Режимы работы пинов

Цифровой пин может находиться в двух состояниях, вход и выход. В режиме входа пин может считывать напряжение от 0 до напряжения питания МК, а в режиме выхода – выдавать такое же напряжение. Режим работы выбирается при помощи функции pinMode(pin, mode) , где pin это номер пина, а mode это режим:

  • mode – режим работы
    • INPUT – вход
    • OUTPUT – выход
    • INPUT_PULLUP – подтянутый к питанию вход

Если со входом/выходом всё понятно, то с подтяжкой давайте разберёмся. В режиме входа пин микроконтроллера не подключен никуда и ловит из воздуха всякие наводки, получая практически случайное значение. Для задания пину “состояния по умолчанию” используют подтяжку резистором к земле или питанию. Вот режим INPUT_PULLUP включает встроенную в микроконтроллер подтяжку пина к питанию. Подробнее об этом, со схемами и примерами я рассказывал в начале вот этого видео урока.

Вывод цифрового сигнала

Цифровой пин в режиме выхода ( OUTPUT ) может генерировать цифровой сигнал, т.е. выдавать напряжение. Так как понятие “цифровой” обычно связано с двумя состояниями, 0 и 1, цифровой пин может выдать 0 или 1, точнее: сигнал низкого или высокого уровня. Сигнал низкого уровня это 0 Вольт, грубо говоря в этом состоянии пин подключается к GND микроконтроллера. Сигнал высокого уровня подключает пин к VCC микроконтроллера, то есть к питанию. Если вы вспомните урок по питанию платы, то поймёте, что сигнал высокого уровня на цифровом пине будет варьироваться в зависимости от того, как питается плата Arduino. При питании от источника 5V на пине будет 5V, при питании от USB с потерей на защитном диоде мы получим около 4.7 Вольт на цифровом пине в режиме выхода с высоким сигналом. Самый главный момент касательно цифровых пинов: микроконтроллер – это логическое устройство, которое создано для управления другими устройствами при помощи логических (цифровых) сигналов. Под словом логическое я подразумеваю не силовое, то есть питать что-то от микроконтроллера нельзя, за редким исключением. На картинке с распиновкой выше вы можете найти надпись “Absolute MAX per pin 40mA, recommended 20mA“. Это означает, что максимум можно снять с пина 40 миллиампер, а рекомендуется не больше 20 миллиампер. Поверьте, для микроконтроллера это очень много. В других микроконтроллерах ограничение по току на пин может составлять 5-10 мА. Также есть общее ограничение на ток с цифровых пинов – 200 мА: “Absolute MAX 200mA for entire package“. Эту информацию можно найти в любом официальном источнике информации об Arduino и микроконтроллере в целом, в том числе в даташите на микроконтроллер. Что произойдёт, если снять с пина больше, чем он может отдать? Всё очень просто – он сломается. Что будет, если снять с нескольких пинов больше, чем может отдать микроконтроллер в целом? Правильно – сгорит микроконтроллер. Поэтому ничего мощнее светодиода и маленькой пищалки к микроконтроллеру подключать нельзя. Никаких моторчиков, лампочек, нагревателей, мощных радио-модулей и прочего питать от цифровых пинов нельзя. Цифровые пины служат для подачи команд другим устройствам, например реле/транзисторам для коммутации нагрузок. Но об этом мы поговорим отдельно. Сейчас вернёмся к вопросу подачи цифрового сигнала: для этого у нас есть функция digitalWrite(pin, value) :

  • pin – цифровой пин МК, подписанный на плате как D. Также например у НАНО это пины A0-A5.
  • value – уровень сигнала: HIGH высокий, LOW низкий. Также можно использовать цифры 0 и 1

Пример, в котором пины инициализируются как выходы, и на них подаётся сигнал:

Ещё интересный момент: в старых версиях IDE не было варианта режима работы INPUT_PULLUP , и подтяжка делалась вручную. Запомните, что вот эти два варианта являются равноценными, вы можете встретить второй в старых скетчах из Интернета, не пугайтесь. Оба варианта делают пин подтянутым к питанию в режиме входа

Перейдём к чтению цифрового сигнала в режиме INPUT

Чтение цифрового сигнала

Цифровой пин может “измерять” напряжение, но сообщить он может только о его отсутствии (сигнал низкого уровня, LOW ) или наличии (сигнал высокого уровня, HIGH ), причём отсутствием напряжения считается промежуток от 0 до

2.1V. Соответственно от

2.1V до VCC (до 5V) микроконтроллер считает за наличие сигнала высокого уровня. Таким образом микроконтроллер спокойно может работать с логическими устройствами, которые шлют ему высокий сигнал с напряжением 3.3V, он такой сигнал примет как HIGH.

Для чтения уровня сигнала на пине используется функция digitalRead(pin) , где пин – номер пина согласно подписи на плате. Это пины, подписанные как D, а также пины A0-A5 у Arduino Nano/Uno/Pro Mini. Данная функция возвращает 0, если сигнал низкого уровня, и 1 – если высокого. Простой пример:

Читайте также  Цоколевка распространенных биполярных и полевых транзисторов

Данный код будет выводить в порт сигнал на пине D5. Если подключить его проводом к VCC – получим 1, если к GND – получим 0.

Аналоговый и цифровой выход Ардуино

Рассмотрим цифровые и аналоговые выходы Arduino ► разберем чем отличается цифра от аналога, а также сделаем бегущий огонек из светодиодов на Arduino Uno.

На этом занятии мы рассмотрим, цифровые и аналоговые выходы Arduino, разберем чем отличается цифровой сигнал от аналогового. Соберем с помощью макетной платы схему из двух светодиодов и будем плавно регулировать их яркость (включение и затухание). Рассмотрим тип данных int, условный оператор if и команду analogWrite для управления аналоговыми портами в языке программирования Ардуино.

Чем отличается аналоговый сигнал от цифрового

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

Цифровой сигнал передается в виде единиц и нулей, для компьютеров и цифровой техники это проще реализовать (есть сигнал или нет сигнала). Для оперативной памяти в компьютерах используют конденсаторы, один заряженный конденсатор — 1 бит. На флеш-памяти используют транзисторы с плавающим затвором.

Квантование — разбиение непрерывной величины на интервалы

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

Аналоговые и цифровые выходы на Ардуино

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

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

Если вы хотите регулировать выходное напряжение, то следует использовать пины, помеченные символом «

». Для Arduino Uno — это 3, 5, 6, 9, 10, 11. С помощью аналоговых портов можно выдавать любое напряжение 0 до 5 Вольт, а цифровые выходы можно только включать и выключать. Аналоговые порты используют ШИМ (широтно-импульсную модуляцию), по английски PWM (pulse-width modulation), с помощью которой имитируется аналоговый сигнал.

Аналоговые выходы на плате Ардуино имеют, отметку тильда «

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

9. Откройте скетч для мигания светодиодом из первого занятия и измените в нем порт выхода с Pin13 на Pin9. Загрузите скетч в плату Arduino NANO или UNO.

На Arduino аналоговый выход будет работать, как цифровой

9 порт может работать, как цифровой выход. Но если функцию digitalWrite изменить на analogWrite, то вместо значения HIGH (1) и LOW (0) можно поставить любое значение от 0 до 255. Именно в этом интервале можно менять напряжение на аналоговых выходах. Загрузите программу для плавного включения и затухания светодиода. Подробное описание работы данной программы даны ниже в пояснении к коду.

Урок 8. Как управлять цифровым выходом Arduino

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

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

Обычный способ подключить светодиод к Arduino можно посмотреть ниже на схеме. Т.к. по предыдущим урокам мы уже знаем что такое макетная плата (урок 4) и разобрались уже с выводами платы Ардуино Uno (урок 2), то подключить светодиод к цифровому выводу нам не составит никакого труда. Например так:

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

  • Катод светодиода подключается к заземляющему выводу Arduino (GND)
  • Анод светодиода подключается к цифровому выводу Arduino (вывод 13 в этом примере)

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

Токоограничивающие резисторы могут быть любого значения от 100 Ом до 47 кОм. Сопротивление будет определять, насколько ярко будет гореть светодиод:

  • Меньшее сопротивление позволяет течь более сильному току, делая его ярче,
  • Большее сопротивление ограничивает ток, делая светодиод тусклее.

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

Функция pinMode()

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

Для нашего урока нам нужна новая функция о которой мы пока не проходили — pinMode(). Эта функция сообщает Arduino выводить напряжение или измерять напряжение на цифровом выводе. Мы будем использовать эту новую функцию именно в void setup(), т.к. наша новая функция относится к настройкам.

Функция pinMode() принимает два аргумента. Аргументы — это информация, необходимая функции для выполнения своей задачи. Они помещаются в скобки функции и разделяются запятой.

  • Первый аргумент функции pinMode() — это номер пина, т.е. 13 в нашем примере (см. схему выше).
  • Второй аргумент устанавливает режим ввода или вывода. В примере выше — вывод.

Используйте OUTPUT, если вы хотите вывести напряжение, и используйте INPUT, если вы хотите прочитать напряжение.

Мы собирались использовать режим OUTPUT, так как мы хотим отправить ток на светодиод.

Функция digitalWrite()

Переходим к новой функции, которую нам нужно обязательно изучить — digitalWrite(). Функция под названием digitalWrite() позволит нам контролировать состояние напряжения на выводе:

  • ВЫСОКОЕ или HIGH состояние напряжения — напряжение на выводе составляет 5 вольт,
  • НИЗКОЕ или LOW состояние напряжения — напряжение на выводе составляет 0 вольт.

Функция digitalWrite() будет использоваться в void loop():

В этой функции также есть два аргумента — номер контакта и состояние напряжения (ВЫСОКОЕ или НИЗКОЕ).

Функция delay()

Далее, мы освоим функцию delay(). Она простая и будет использоваться для контроля того, как долго будет установлен вывод на HIGH:

Функция delay() сообщает Arduino остановиться и ждать. Число в скобках обозначает длину задержки в миллисекундах (1 секунда = 1000 миллисекунд).

В этот момент в программе светодиод горит в течение одной секунды.

Чтобы отключить его, мы можем использовать digitalWrite() с параметром LOW в качестве второго аргумента:

Читайте также  Как электричество приходит в наш дом?

Функция delay() будет сохранять состояние напряжения НИЗКИМ в течение 1000 миллисекунд.

Поскольку две функции digitalWrite() и delay() используются в void loop(), код будет выполняться снова и снова, заставляя светодиод мигать, т.е. включаться и выключаться.

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

Простыми словами, мы используем условные операторы, когда нужно сделать X, если Y. Например: если A > 5, то Y = 10.

Но вернемся к основной теме урока — код ниже установит цифровой вывод на режим ВЫСОКИЙ, когда показание датчика будет больше 50:

В примере выше если переменная sensorReading больше 50, будет выполнена функция digitalWrite(), и outputPin будет установлен в состояние ВЫСОКОГО напряжения.

Если переменная sensorReading меньше 50, код в операторе if будет проигнорирован, и функция digitalWrite() не будет выполнена.

В следующих уроках мы изучим еще ряд навыков, которые лучше знать на старте изучения Ардуино.

Базовые понятия цифровой электроники

Входы и выходы цифровых микросхем

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

Наибольшее распространение получили две технологии цифровых микросхем:

  • ТТЛ ( TTL ) и ТТЛШ ( TTLS ) — биполярная транзисторно-транзисторная логика и ТТЛ с диодами Шоттки;
  • КМОП ( CMOS ) — комплементарные транзисторы со структурой «металл–окисел–полупроводник».

Различаются они типами используемых транзисторов и схемотехническими решениями внутренних каскадов микросхем. Отметим также, что микросхемы КМОП потребляют значительно меньший ток от источника питания, чем такие же микросхемы ТТЛ (или ТТЛШ) — правда, только в статическом режиме или на небольших рабочих частотах. На рис. 1.7 и 1.8 показаны примеры схем входных и выходных каскадов микросхем, выполненных по этим технологиям. Понятно, что точный учет всех эффектов в этих схемах, включающих в себя множество транзисторов, диодов и резисторов, крайне сложен, но обычно он просто не нужен разработчику цифровых схем.

Рассмотрим сначала входы микросхем.

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

Даже на третьем уровне представления ( электрическая модель ) в большинстве случаев не нужно знать о внутреннем строении микросхемы, о схемотехнике входов. Достаточно считать, что при подаче на вход сигнала логического нуля из этого входа вытекает ток, не превышающий IIL , а при подаче сигнала логической единицы в этот вход втекает ток, не превышающий IIH . А для правильной логики работы микросхемы достаточно, чтобы уровень напряжения входного сигнала логического нуля был меньше UIL , а уровень напряжения входного сигнала логической единицы был больше UIH .

Особым случаем является ситуация, когда какой-нибудь вход не подключен ни к одному из выходов — ни к общему проводу, ни к шине питания (так называемый висящий вход ). Иногда возможности микросхемы используются не полностью и на некоторые входы не подается сигналов. Однако при этом микросхема может не работать или работать нестабильно, так как ее правильное включение подразумевает наличие на всех входах логических уровней, пусть даже и неизменных. Поэтому рекомендуется подключать неиспользуемые входы к напряжению питания микросхемы UCC или к общему проводу (к земле) в зависимости от того, какой логический уровень необходим на этом входе. Но для некоторых серий микросхем, выполненных по технологии ТТЛ (например, К155 или КР531), неиспользуемые входы надо подключать к напряжению питания не напрямую, а только через резистор величиной около 1 кОм (достаточно одного резистора на 20 входов).

На неподключенных входах микросхем ТТЛ формируется напряжение около 1,5–1,6 В, которое иногда называют висячим потенциалом. Обычно этот уровень воспринимается микросхемой как сигнал логической единицы, но рассчитывать на это не стоит. Потенциал, образующийся на неподключенных входах микросхем КМОП, может восприниматься микросхемой и как логический нуль, и как логическая единица. В любом случае все входы надо куда-то подключать. Неподключенными допускается оставлять только те входы (ТТЛ, а не КМОП), состояние которых в данном включении микросхемы не имеет значения.

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

Существуют три разновидности выходных каскадов, существенно различающиеся как по своим характеристикам, так и по областям применения:

  • стандартный выход или выход с двумя состояниями (обозначается 2С, 2S или, реже, ТТЛ, TTL );
  • выход с открытым коллектором (обозначается ОК, OC );
  • выход с тремя состояниями или (что то же самое) с возможностью отключения (обозначается 3С, 3S).

Стандартный выход 2С имеет всего два состояния: логический нуль и логическая единица, причем оба они активны, то есть выходные токи в обоих этих состояниях ( IOL и IOH ) могут достигать заметных величин. На первом и втором уровнях представления такой выход можно считать состоящим из двух выключателей, которые замыкаются по очереди (рис. 1.9), причем замкнутому верхнему выключателю соответствует логическая единица на выходе, а замкнутому нижнему — логический нуль.

Выход с открытым коллектором ОК тоже имеет два возможных состояния, но только одно из них (состояние логического нуля) активно, то есть обеспечивает большой втекающий ток IOL . Второе состояние сводится, по сути, к тому, что выход полностью отключается от присоединенных к нему входов. Это состояние может использоваться в качестве логической единицы, но для этого между выходом ОК и напряжением питания необходимо подключить нагрузочный резистор R (так называемый pull -up) величиной порядка сотен Ом. На первом и втором уровнях представления такой выход можно считать состоящим из одного выключателя (рис. 1.9), замкнутому состоянию которого соответствует сигнал логического нуля, а разомкнутому — отключенное, пассивное состояние. Правда, от величины резистора R зависит время переключения выхода из нуля в единицу, что влияет на задержку tLH , но при обычно используемых номиналах резисторов это не слишком важно.

ОБОРУДОВАНИЕ
ТЕХНОЛОГИИ
РАЗРАБОТКИ

Блог технической поддержки моих разработок

Урок 2. Плата Arduino UNO R3. Описание, характеристики.

В статье рассказывается о контроллере Arduino UNO R3, выбранном для демонстрации программ уроков. Сейчас необязательно внимательно изучать эту информацию. Рекомендую бегло просмотреть, чтобы иметь понятие об аппаратной части системы. В дальнейшем эту статью можно использовать как справочную информацию.

В качестве контроллера для программ уроков я выбрал плату Arduino UNO R3. Но ничего не мешает использовать и другие платы. Просто UNO R3 самый распространенный вариант контроллеров Ардуино.

Общая информация о контроллере.

Arduino UNO R3 выполнен на микроконтроллере ATmega328. У него:

  • 14 цифровых портов входа-выхода ( 6 из них поддерживают режим ШИМ модуляции);
  • 6 аналоговых входов;
  • частота тактирования 16 МГц;
  • USB порт;
  • разъем питания;
  • разъем внутрисхемного программирования;
  • кнопка сброса.
Читайте также  Управление освещением с любого пульта ду

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

Технические характеристики.

Тип микроконтроллера ATmega328P
Напряжение питания микроконтроллера 5 В
Рекомендуемое напряжение питания платы 7 – 12 В
Предельно допустимое напряжение питания платы 6 – 20 В
Цифровые входы-выходы 14 (из них 6 поддерживают ШИМ)
Выходы ШИМ модуляции 6
Аналоговые входы 6
Допустимый ток цифровых выходов 20 мА
Допустимый ток выхода 3,3 В 50 мА
Объем флэш памяти (FLASH) 32 кБ (из которых 0,5 кБ используется загрузчиком)
Объем оперативной памяти (SRAM) 2 кБ
Объем энергонезависимой памяти (EEPROM) 1 кБ
Частота тактирования 16 мГц
Длина платы 68,6 мм
Ширина платы 53,4 мм
Вес 25 г

Программирование.

Контроллер программируется из интегрированной среды программного обеспечения Ардуино (IDE). Программирование происходит под управлением резидентного загрузчика по протоколу STK500. Аппаратный программатор при этом не требуется.

Микроконтроллер можно запрограммировать через разъем для внутрисхемного программатора ICSP, не используя, загрузчик. Исходный код программы-загрузчика находится в свободном доступе.

Отличие от других контроллеров Ардуино.

Arduino UNO R3, в отличие от предыдущих версий, не использует для подключения к компьютеру мост USB-UART FTDI. Эту функцию в нем выполняет микроконтроллер ATmega16U2.

Система питания.

Плата UNO может получать питание от USB порта или от внешнего источника. Источник питания выбирается автоматически. В качестве внешнего источника питания может использоваться сетевой адаптер или батарея. Адаптер подключается через разъем диаметром 2,1 мм (центральный контакт – положительный). Батарея подключается к контактам GND и Vin разъема POWER.

Напряжение внешнего источника питания может быть в диапазоне 6 – 20 В. Но рекомендуется не допускать снижение напряжения ниже 7 В из-за нестабильной работы устройства. Также нежелательно повышать напряжение питания более 12 В, т.к. может перегреется стабилизатор и выйти из строя. Т.е. рекомендуемый диапазон напряжения питания 7 – 12 В.

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

Vin Питание платы от внешнего источника питания. Не связано с питанием 5 В от USB или выходами других стабилизаторов. Через этот контакт можно получать питание для своего устройства, если плата питается от адаптера.
5 V Выход стабилизатора напряжения платы. На нем напряжение 5 В при любом способе питания. Питать плату через этот вывод не рекомендуется, т.к. не используется стабилизатор, что может привести к выходу микроконтроллера из строя.
3 V 3 Напряжение 3,3 В от стабилизатора напряжения на плате. Предельно допустимый ток потребления от этого вывода 50 мА.
GND Общий провод.
IOREF На выводе информация о рабочем напряжении платы. Плата расширения может считать значение сигнала и переключиться на режим питания 5 В или 3,3 В.

Память.

У микроконтроллера три типа памяти:

  • 32 кБ флэш (FLASH);
  • 2 кБ оперативной памяти (SRAM);
  • 1 кБ энергонезависимой памяти (EEPROM).

Входы и выходы.

Каждый из 14 цифровых выводов может быть использован в качестве выхода или входа. Уровень напряжения на выводах 5 В. Рекомендовано вытекающий и втекающий ток каждого вывода ограничивать на уровне 20 мА. Предельно допустимое значение этого параметра составляет 40 мА. Каждый вывод имеет внутренний подтягивающий резистор сопротивлением 20-50 кОм. Резистор может быть отключен программно.

Некоторые выводы могут выполнять дополнительные функции.

Последовательный интерфейс: выводы 0 (Rx) и 1 (Tx). Используются для приема (Rx) и передачи (Tx) последовательных данных логических уровней TTL. Эти выводы подключены к выводам передачи данных микросхемы ATmega16U2, используемой в качестве моста USB-UART.

Внешние прерывания: выводы 2 и 3. Эти выводы могут быть использованы как входы внешних прерываний. Программно могут быть установлены на прерывание по низкому уровню, положительному или отрицательному фронту, или на изменение уровня сигнала.

ШИМ: выводы 3, 5, 6, 9, 10, 11. Могут работать в режиме ШИМ модуляции с разрешением 8 разрядов.

Последовательный интерфейс SPI: выводы 10(SS), 11(MOSI), 12(MISO), 13(SCK).

Светодиод: вывод 13. Светодиод, подключенный к выводу 13. Светится при высоком уровне сигнала на выводе.

Интерфейс TWI: вывод A4 или SDA и A5 или SCL. Коммуникационный интерфейс TWI.

У платы Arduino UNO есть 6 аналоговых входов, обозначенных A0-A5. Разрешающая способность аналогового цифрового преобразования 10 разрядов. По умолчанию, входное напряжение измеряется относительно земли в диапазоне 0-5 В, но может быть изменено с помощью вывода AREF и программных установок.

Еще 2 вывода платы имеют функции:

AREF. Опорное напряжение АЦП микроконтроллера.

RESET. Низкий уровень на этом выводе вызывает сброс микроконтроллера.

Коммуникационные интерфейсы.

Модуль Arduino UNO имеет средства для связи с компьютером, с другой платой UNO или с другими микроконтроллерами. Для этого на плате существует интерфейс UART с логическими уровнями TTL (5 В), связанный с выводами 0 (RX) и 1(TX). Микросхема ATmega16U2 на плате связывает UART интерфейс с USB портом компьютера. При подключении к порту компьютера, появляется виртуальный COM порт, через который программы компьютера работают с Ардуино. Прошивка ATmega16U2 использует стандартные драйверы USB-COM и установка дополнительных драйверов не требуется. Для операционной системы Windows необходим соответствующий .inf файл. В интегрированную среду программного обеспечения Ардуино (IDE) включен монитор обмена по последовательному интерфейсу, который позволяет посылать и получать с платы простые текстовые данные. На плате есть светодиоды RX и TX, которые индицируют состояние соответствующих сигналов для связи через USB (но не для последовательного интерфейса на выводах 0 и 1).

Микроконтроллер ATmega328 также поддерживает коммуникационные интерфейсы I2C (TWI) и SPI.

Автоматический (программный) сброс.

Для того, чтобы не приходилось каждый раз перед загрузкой программы нажимать кнопку сброс, на плате UNO реализована аппаратная функция сброса, инициируемая с подключенного компьютера. Один из сигналов управления потоком данных (DTR) микросхемы ATmega16U2 подключен к выводу сброса микроконтроллера ATmega328 через конденсатор емкостью 0,1 мкФ. Когда сигнал DTR переходит в низкое состояние, формируется импульс сброса микроконтроллера. Это решение позволяет загружать программу одним нажатием кнопки из интегрированной среды программирования Arduino (IDE).

Но такая функция может приводить к отрицательным последствиям. При подключении платы UNO к компьютеру с операционной системой Mac Os X или Linux, микроконтроллер будет сбрасываться при каждом соединении программы с платой. В течение половины секунды на плате UNO будет запущен загрузчик. Несмотря на то, что программа загрузчика игнорирует посторонние данные, она может принять несколько байтов из пакета сразу после установки соединения. Если в программе на плате Ардуино предусмотрено получение каких-либо данных при первом запуске, необходимо отправлять данные с задержкой примерно на 1 секунду после соединения.

На модуле UNO существует дорожка, которую можно перерезать для отключения функции автоматического сброса. Дорожка маркирована надписью ”RESET-EN”. Автоматический сброс также можно запретить, подключив резистор сопротивлением 110 Ом между линией питания 5 В и выводом RESET.

Защита USB порта от перегрузок.

В плате Arduino UNO линия питания от интерфейса USB защищена восстанавливаемым предохранителем. При превышении тока свыше 500 мА, предохранитель разрывает цепь до устранения короткого замыкания.

Схема контроллера Arduino UNO.