Что такое high и low ардуино
Arduino.ru
Константы
Константами в языке Ардуино называют некоторые предопределенные значения. Они позволяют сделать код программы более легким для восприятия. Константы разделяют на три группы:
Логические константы
В языке Ардуино есть две константы для представления логических значений истина и ложь: true и false.
false
false определяется как 0, в логическом выражении.
true
Обратите внимание, что true и false пишутся строчными буквами, в отличие от HIGH, LOW, INPUT и OUTPUT.
Задание значение на входа/выходе, HIGH и LOW
Возможны только два значения для считывания или записи на цифровой порт вход/выхода: HIGH и LOW.
HIGH
HIGH может обозначать несколько разное в зависимость от уставки режима порта как INPUT или OUTPUT. Когда порт вход/выхода установлен в режим INPUT с помощью функции pinMode, и считывается функцией digitalRead, микроконтроллер отдаст значение HIGH при напряжение 3В или выше на указанном порту.
Также порт может быть установлен как INPUT функцией pinMode, и затем установлен в HIGH значение функцией digitalWrite. Это подключит к порту внутренний подтягивающий резистор 20K, что позволит получать постоянное значение HIGH при чтение этого порта, если только значение не будет приведено к LOW внешней цепью подключенной к этому порту.
Когда порт вход/выхода сконфигурирован как OUTPUT функцией pinMode, и установлено значение HIGH функцией digitalWrite, на порту будет постоянное напряжение 5В. От этого порта может быть запитан светодиод, подключенный через резистор на землю или к другому порту, сконфигурированному как OUTPUT и установленному в LOW.
Значение LOW также разное для режима INPUT и OUTPUT. Когда порт сконфигурирован как INPUT, и считывается функцие digitalRead, микроконтроллер вернет LOW если напряжение на данном порту меньше или равно 2В.
Если же порт установлен в OUTPUT и LOW, то напряжение на выходе порта будет 0 Вольт. К этому порту можно подключать нагрузку как к земле, как описано выше на примере светодиода.
Задание режима порта вход/выхода, INPUT и OUTPUT
Цифровые порты вход/выхода, могут быть установлены в режимы работы как вход или выход: INPUT или OUTPUT. Установка производится функцией pinMode().
INPUT
Порты Arduino установленные в режим INPUT находятся в высокоимпедансном состоянии. Это означает то, что порт ввода дает слишком малую нагрузки на схему, в которую он включен. Эквивалентом внутреннему сопротивлению будет резистор 100 МОм подключенный к выводу микросхемы. Таким образом, для перевода порта ввода из одного состояния в другое требуется маленькое значение тока. Это позволяет применять выводы микросхемы для подключения различных датчиков, но не питания.
OUTPUT
Порт установленный в режим выхода — OUTPUT, находится в низкоимпедансном состояние. Он может пропускать через себя довольно большой ток, до 40 mA, достаточный для запитывание внешней цепи, например, светодиода. В этом состоянии порт может быть поврежден как замыкании на землю так и на питание 5В. Тока с порта микроконтроллера не достаточно для питания моторов и сервоприводов напрямую.
Что такое high и low ардуино
Константы
Константы, характеризующие логические уровни, true или false (Булевы константы)
В языке Ардуино существует две константы, использующиеся для обозначения истинности или ложности: true и false.
false
Наиболее проста в определении константа false. false означает 0 (ноль).
Обратите внимание, что константы true и false пишутся в нижнем регистре, в отличие от констант HIGH, LOW, INPUT и OUTPUT.
Константы, характеризующие уровень напряжения на выводах, HIGH и LOW
При работе с цифровыми выводами существует всего два значения, которые они могут выводить или считывать: HIGH и LOW.
Также возможна ситуация, когда функцией pinMode вывод сконфигурирован как вход (INPUT), после чего функцией digitalWrite на него подается высокий уровень HIGH. В этом случае к выводу будут подключены внутренние подтягивающие резисторы номиналом 20 кОм, что приведет к возникновению на нем высокого уровня HIGH. При считывании значение HIGH будет удерживаться до тех пор, пока внешними цепями на выводе не будет сформирован низкий уровень LOW. Именно так работает режим INPUT_PULLUP.
Если функцией pinMode вывод сконфигурирован как выход (OUTPUT) и функцией digitalWrite на него подан высокий уровень HIGH, то на выводе установится напряжение 5В. В этом режиме он может быть источником тока и, например, засвечивать светодиод, последовательно подключенный через резистор к земле либо к другому выходу с уровнем LOW.
Если функцией pinMode вывод сконфигурирован как выход (OUTPUT) и функцией digitalWrite на него подан низкий уровень LOW, то на выводе установится напряжение 0В. В этом режиме он может принимать втекающий ток, например от светодиода, подключенного через резистор к +5В либо к другому выходу с уровнем HIGH.
Константы, характеризующие цифровые выводы, INPUT, INPUT_PULLUP и OUTPUT
Выводы, сконфигурированные как INPUT
Выводы Ардуино (ATmega), сконфигурированные функцией pinMode() как входы (INPUT), находятся в высокоимпедансном состоянии. Это эквивалентно подключению к выводу последовательного резистора в 100 МОм, поэтому к цепям, подключенным к таким выводам, не предъявляется практически никаких требований. Такой режим удобен для считывания сигналов с датчиков, но не приемлем для питания светодиодов.
Следует отметить, что входы INPUT иногда соединяют с землей через подтягивающий резистор (резистор на землю), как описано в примере использования последовательном связи.
Выводы, сконфигурированные как INPUT_PULLUP
Выводы, сконфигурированные как OUTPUT
Выводы, сконфигурированные функцией pinMode() как выходы (OUTPUT), находятся в низкоимпедансном состоянии. Это означает, что они могут обеспечить внешние цепи относительно большим током. Микроконтроллер ATmega может отдавать (положительный ток) или принимать (отрицательный) ток до 40 мА (миллиампер) от внешних устройств/цепей. Такой режим удобен для питания светодиодов, но бесполезен при считывании сигналов с датчиков. Выводы, сконфигурированные как выход, также могут быть выведены из строя при коротком замыкании на землю либо на цепь питания 5В. Кроме того, выходного тока микроконтроллера ATmega недостаточно для питания большинства реле и двигателей, что требует дополнительных интерфейсных цепей.
Константы
В языке Ардуино константы — это предопределенные переменные. Они используются для улучшения читабельности программного кода. Все константы можно условно разделить на несколько групп.
Константы, характеризующие логические уровни, true или false (Булевы константы)
В языке Ардуино существует две константы, использующиеся для обозначения истинности или ложности: true и false.
false
Наиболее проста в определении константа false. false означает 0 (ноль).
Обратите внимание, что константы true и false пишутся в нижнем регистре, в отличие от констант HIGH, LOW, INPUT и OUTPUT.
Константы, характеризующие уровень напряжения на выводах, HIGH и LOW
При работе с цифровыми выводами существует всего два значения, которые они могут выводить или считывать: HIGH и LOW.
Понятие HIGH (применительно к выводу) может несколько отличаться в зависимости от того, как настроен вывод — как вход (INPUT) или как выход (OUTPUT). Если функцией pinMode вывод сконфигурирован как вход (INPUT), то при считывании с него данных (функция digitalRead) микроконтроллер ответит HIGH в том случае, когда на выводе присутствует напряжение 3В или больше.
Также возможна ситуация, когда функцией pinMode вывод сконфигурирован как вход (INPUT), после чего функцией digitalWrite на него подается высокий уровень HIGH. В этом случае к выводу будут подключены внутренние подтягивающие резисторы номиналом 20 кОм, что приведет к возникновению на нем высокого уровня HIGH. При считывании значение HIGH будет удерживаться до тех пор, пока внешними цепями на выводе не будет сформирован низкий уровень LOW. Именно так работает режим INPUT_PULLUP.
Если функцией pinMode вывод сконфигурирован как выход (OUTPUT) и функцией digitalWrite на него подан высокий уровень HIGH, то на выводе установится напряжение 5В. В этом режиме он может быть источником тока и, например, засвечивать светодиод, последовательно подключенный через резистор к земле либо к другому выходу с уровнем LOW.
Понятие LOW также имеет разные значения в зависимости от того, как настроен вывод — как вход (INPUT) или выход (OUTPUT). Если функцией pinMode вывод сконфигурирован как вход (INPUT), то при считывании с него данных функцией digitalRead микроконтроллер ответит LOW в том случае, когда напряжение на выводе не превышает 2В.
Если функцией pinMode вывод сконфигурирован как выход (OUTPUT) и функцией digitalWrite на него подан низкий уровень LOW, то на выводе установится напряжение 0В. В этом режиме он может принимать втекающий ток, например от светодиода, подключенного через резистор к +5В либо к другому выходу с уровнем HIGH.
Константы, характеризующие цифровые выводы, INPUT, INPUT_PULLUP и OUTPUT
Выводы, сконфигурированные как INPUT
Выводы Ардуино (ATmega), сконфигурированные функцией pinMode() как входы (INPUT), находятся в высокоимпедансном состоянии. Это эквивалентно подключению к выводу последовательного резистора в 100 МОм, поэтому к цепям, подключенным к таким выводам, не предъявляется практически никаких требований. Такой режим удобен для считывания сигналов с датчиков, но не приемлем для питания светодиодов.
Следует отметить, что входы INPUT иногда соединяют с землей через подтягивающий резистор (резистор на землю), как описано в примере использования последовательном связи.
Выводы, сконфигурированные как INPUT_PULLUP
Микроконтроллер ATmega в Ардуино имеет внутренние подтягивающие резисторы (резисторы, подключенные к питанию внутри микросхемы), которыми можно управлять. Если вы предпочитаете использовать их вместо внешних резисторов, подключенных к земле, — используйте параметр INPUT_PULLUP в функции pinMode(). Это позволит инвертировать поведение подключенного к выводу внешнего датчика: HIGH будет означать его отключение, а LOW — включение. См. пример использования INPUT_PULLUP при последовательной связи.
Выводы, сконфигурированные как OUTPUT
Выводы, сконфигурированные функцией pinMode() как выходы (OUTPUT), находятся в низкоимпедансном состоянии. Это означает, что они могут обеспечить внешние цепи относительно большим током. Микроконтроллер ATmega может отдавать (положительный ток) или принимать (отрицательный) ток до 40 мА (миллиампер) от внешних устройств/цепей. Такой режим удобен для питания светодиодов, но бесполезен при считывании сигналов с датчиков. Выводы, сконфигурированные как выход, также могут быть выведены из строя при коротком замыкании на землю либо на цепь питания 5В. Кроме того, выходного тока микроконтроллера ATmega недостаточно для питания большинства реле и двигателей, что требует дополнительных интерфейсных цепей.
Предопределенные константы Arduino
Описание
Константы – это предопределенные выражения в языке Arduino. Они используются для упрощения читаемости программ. Мы классифицируем константы на группы.
Определение логических уровней: true и false
false
Определить false из этих двух констант легче. false определяется как 0 (ноль)
Определение уровней на выводах: HIGH и LOW
При чтении или записи на цифровой вывод есть только два возможных значения, которые вывод может принимать, или в которые он может быть установлен: HIGH (высокий) и LOW (низкий).
В этом состоянии он может быть источником тока, например, зажигать светодиод, который подключен последовательно через резистор на землю.
Цифровые выводы могут использоваться как INPUT (вход), INPUT_PULLUP (подтянутый вход) или OUTPUT (выход). Изменение вывода с помощью pinMode() меняет его электрическое поведение.
Выводы, настроенные как входы ( INPUT )
Если вы настроили вывод на вход и считываете состояние кнопки, когда кнопка находится в разомкнутом состоянии, входной вывод будет «висеть в воздухе», что приведет к непредсказуемым результатам. Чтобы обеспечить правильное считывание, когда кнопка (ключ) разомкнута, необходимо использовать резистор, подтягивающий вывод либо к шине питания, либо к земле. Назначение этого резистора – подтянуть вывод к известному состоянию, когда ключ разомкнут. Обычно выбирается резистор 10 кОм, так как он является достаточно маленьким, чтобы надежно предотвратить «повисание вывода в воздухе», и в то же время достаточно большим, чтобы не потреблять слишком большой ток, когда ключ замкнут.
Если используется резистор, подтягивающий до шины питания, уровень на входном выводе будет высоким ( HIGH ), когда ключ разомкнут, и низким ( LOW ), когда ключ замкнут.
Выводы, настроенные как входы с подтягивающим резистором ( INPUT_PULLUP )
Выводы, настроенные как INPUT (входы) или INPUT_PULLUP (входы с подтягивающими резисторами) могут быть повреждены или полностью разрушены, если они подключены к напряжениям с уровнем ниже земли (отрицательным напряжениям) или с положительным уровнем выше уровня шины питания (5 В или 3,3 В).
Выводы, настроенные как выходы ( OUTPUT )
Выводы, настроенные как выходы, могут быть повреждены или полностью разрушены, если они подключены к земле или положительной шине питания.
Определение встроненных модулей: LED_BUILTIN
Большинство плат Arduino имеют встроенный светодиод, подключенный последовательно с резистором. Константа LED_BUILTIN – это номер вывода, к которому подключен встроенный светодиод. На большинстве плат это светодиод подключен к выводу 13.
Цифровые входы/выходы
Нумерация пинов
Пины пронумерованы на плате как “цифровые” D* пины и аналоговые A* пины. К цифровым пинам мы будем обращаться просто по их номеру, т.е. D3 это просто 3. С аналоговыми пинами чуть сложнее:
Режимы работы пинов
Если со входом/выходом всё понятно, то с подтяжкой давайте разберёмся. В режиме входа пин микроконтроллера не подключен никуда и ловит из воздуха всякие наводки, получая практически случайное значение. Для задания пину “состояния по умолчанию” используют подтяжку резистором к земле или питанию. Вот режим 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) :
Пример, в котором пины инициализируются как выходы, и на них подаётся сигнал:
Перейдём к чтению цифрового сигнала в режиме INPUT
Чтение цифрового сигнала
Цифровой пин может “измерять” напряжение, но сообщить он может только о его отсутствии (сигнал низкого уровня, LOW ) или наличии (сигнал высокого уровня, HIGH ), причём отсутствием напряжения считается промежуток от 0 до
2.1V. Соответственно от
2.1V до VCC (до 5V) микроконтроллер считает за наличие сигнала высокого уровня. Таким образом микроконтроллер спокойно может работать с логическими устройствами, которые шлют ему высокий сигнал с напряжением 3.3V, он такой сигнал примет как HIGH.
Данный код будет выводить в порт сигнал на пине D5. Если подключить его проводом к VCC – получим 1, если к GND – получим 0.