Предопределенные константы arduino

Введение

ATmega328 имеет два вывода поддерживающих INT-прерывания и 24 поддерживающих PCINT. Т.е. PCINT поддерживают почти все цифровые и аналоговые выводы ардуины в отличии от INT. Оба типа прерываний срабатывают даже если они сконфигурированы на выходы вывода.

Разница между этими типами прерывания в том что обработчик INT можно навесить индивидуально на любой INT вывод, тогда как PCINT выводы объединены в группы и изменение по любому пину группы вызовет общее для группы прерывание PCI.

ATmega328 поддерживает три такие группы:

  • PCI0: PCINT0..7, что соответствует пинам D08 — D13
  • PCI1: PCINT8..14, A0 — A5
  • PCI2: PCINT16..23, RX,TX, D02 — D07

Пины A6, A7 — сугубо аналоговые и не имеют дополнительных функций, включая PCINTPCINT14 — не имеет ножки на микросхеме ATmega328, но может иметь на других моделях.D02, D03 — могут вызывать как INT, так и PCINT прерывания.

Структура программы

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

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

Функция loop ( ) последовательно раз за разом исполняет команды, которые описаны в ее теле. Т.е. после завершения функции снова произойдет ее вызов.

Разберем простой пример:

void setup ( ) // начальные установки <beginSerial (9600 ); // установка скорости работы серийного порта на 9600 бит/сек pinMode (3 , INPUT); // установка 3-его порта на ввод данных >

// Программа проверяет 3-ий порт на наличие на нём сигнала и посылает ответ в // виде текстового сообщения на последовательный порт компьютера void loop ( ) // тело программы <if (digitalRead (3 ) == HIGH) // условие на опрос 3го порта serialWrite ( ‘H’); // отправка сообщения в виде буквы “Н» на COM-порт else serialWrite ( ‘L’); // отправка сообщения в виде буквы “L» на COM-порт delay (1000 ); // задержка 1 сек. >

Темная тема для Arduino IDE

Очень многих раздражает простенькое оформление Arduino IDE в корпоративных цветах Arduino. Все такое белое и «слепое». Долго работать в таком цветовом решении не всегда комфортно, особенно если это ночь, вокруг темно и все спят.

Вариант темной темы под Mac. Скриншот с GitHub.

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

Равенство и присвоение

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

В данном случае вместо использования ‘==’, код использует ‘=’. Вместо сравнения foo с bar компилятор присваивает значение bar переменной foo и возвращает это значение. В яыке C ноль (0) ложно, и все остальное истинно. Поэтому, если bar не содержит значение 0, то if-statement всегда будет возвращать true.

Simulator for Arduino

Продукт, разработанный virtronics, является полнофункциональным симулятором, доступным для студентов и начинающих в мире электроники, всех тек, кто ищет отличный симулятор Arduino. Это кросс-платформенный симулятор, который поддерживается как операционными системами Linux, так и Windows.

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

Также важно отметить, что Simulator for Arduino — это не приложение с открытым исходным кодом, но оно бесплатно

Термины

Программный код для Arduino принято называть скетчами (англ. sketches). У скетчей есть два основных метода: и . Первый метод автоматически вызывается после включения/сброса микроконтроллера. В нём происходит инициализация портов и различных модулей, систем. Метод вызывается в бесконечном цикле на протяжении всей работы микроконтроллера.

Порты — неотъемлемая часть любого микроконтроллера. Через них происходит взаимодействие микроконтроллера с внешними устройствами. С программной стороны порты называются пинами. Любой пин может работать в режиме входа (для дальнейшего считывания напряжения с него) или в режиме выхода (для дальнейшей установки напряжения на нём).

Любой пин работает с двумя логическими состояниями: и , что эквивалентно логическому нулю и единице соответственно. У некоторых портов есть встроенный АЦП, что позволяет считывать аналоговый сигнал со входа (например, значение переменного резистора). Также некоторые пины могут работать в режиме ШИМ (англ. PWM), что позволяет устанавливать аналоговое напряжение на выходе. Обычно функциональные возможности пина указываются на маркировке самой платы.

Дополнительные уроки по электронике:

  • Arduino против Raspberry Pi
  • Введение в Arduino
  • Плата Arduino Uno rev 3
  • Плата Arduino Uno WiFi rev 2
  • Введение в язык программирования Arduino
  • Милли Микро Нано Пико
  • The Arduino MKR WiFi 1010
  • Введение в электронику
  • Основы электроники: аналоговые и цифровые
  • Основы электроники: ток
  • Основы электроники: напряжение
  • Основы электроники: Vcc, земля, …
  • Основы электроники: сопротивление
  • Основы электроники: короткое замыкание
  • Основы электроники: ваша первая схема
  • Основы электроники: прототипирование с использованием макетов
  • Основы электроники: использование мультиметра
  • Измерение напряжения, тока и сопротивления с помощью мультиметра
  • Проект Arduino: мигает светодиодом
  • Встроенный светодиод Arduino
  • Модуль питания макетной платы
  • Платформа Arduino Create
  • Как подключиться к сети Wi-Fi с помощью Arduino
  • Как запустить веб-сервер на Arduino

Разное

pulseIn() — Возвращает продолжительность в микросекундах следующего импульса с
напряжением HIGH на заданном контакте

noTone() — Прерывает любые серии импульсов, запущенные вызовом tone

micros() — Действует подобно millis, но возвращает число микросекунд, прошедших с момента последнего сброса платы. Значение обнуляется примерно через 70 минут

delayMicroseconds() — минимальная задержка составляет 3 мкс, максимальная — около 16 мс

attachInterrupt() — Устанавливает функцию myFunction, как обработчик положительного фронта прерывания 1 (контакт D3 в UNO)

detachInterrupt() — Запрещает обработку сигналов от прерывания 1

Defining Digital Pins modes: INPUT, INPUT_PULLUP, and OUTPUT

Digital pins can be used as , , or . Changing a pin with changes the electrical behavior of the pin.

Pins Configured as INPUT

Arduino (ATmega) pins configured as with are said to be in a high-impedance state. Pins configured as make extremely small demands on the circuit that they are sampling, equivalent to a series resistor of 100 Megohms in front of the pin. This makes them useful for reading a sensor.

If you have your pin configured as an , and are reading a switch, when the switch is in the open state the input pin will be «floating», resulting in unpredictable results. In order to assure a proper reading when the switch is open, a pull-up or pull-down resistor must be used. The purpose of this resistor is to pull the pin to a known state when the switch is open. A 10 K ohm resistor is usually chosen, as it is a low enough value to reliably prevent a floating input, and at the same time a high enough value to not draw too much current when the switch is closed. See the Digital Read Serial tutorial for more information.

If a pull-down resistor is used, the input pin will be when the switch is open and when the switch is closed.

If a pull-up resistor is used, the input pin will be when the switch is open and when the switch is closed.

Pins Configured as INPUT_PULLUP

The ATmega microcontroller on the Arduino has internal pull-up resistors (resistors that connect to power internally) that you can access. If you prefer to use these instead of external pull-up resistors, you can use the argument in .

See the Input Pullup Serial tutorial for an example of this in use.

Pins configured as inputs with either or can be damaged or destroyed if they are connected to voltages below ground (negative voltages) or above the positive power rail (5V or 3V).

Pins Configured as OUTPUT

Pins configured as with are said to be in a low-impedance state. This means that they can provide a substantial amount of current to other circuits. ATmega pins can source (provide current) or sink (absorb current) up to 40 mA (milliamps) of current to other devices/circuits. This makes them useful for powering LEDs because LEDs typically use less than 40 mA. Loads greater than 40 mA (e.g. motors) will require a transistor or other interface circuitry.

Pins configured as outputs can be damaged or destroyed if they are connected to either the ground or positive power rails.

#include

Описание

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

Помните, что в #include, также как и в #define, не требуется указывать завершающую точку с запятой, во избежании генерации трудночитаемых ошибок компилятора.

Пример

Этот пример подключает библиотеку, которая позволяет управлять Сервомоторами.

1
2
3
4
5
6
#include <Servo.h> //"подключаем" библиотеку для управления сервомоторами

Servo myservo;  // создать объект Servo
                // 12 объектов Servo может быть создано на одной плате

int pos = ;    // переменная pos приравнивается к нулю

Тэги:

4.2 из 5. (Всего голосов:260)

Please enable JavaScript to view the comments powered by Disqus.

comments powered by Disqus

Arduino define описание директивы

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

Arduino Uno / Arduino Nano / Arduino Mega

Константы, которые определены через директиву #define, не занимают места в памяти микроконтроллера, так как Arduino IDE подставит значения вместо имен при компиляции скетча. Работу директивы можно сравнить с операцией НАЙТИ и ЗАМЕНИТЬ в текстовом редакторе. При компиляции скетча Arduino IDE находит в программе часть кода <что меняем> и заменяет ее на кусок кода <на что меняем>.

Синтаксис директивы:

#define <что меняем> <на что меняем>

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

И обратите внимание, что в строчке не ставится точка с запятой и знак равенства, как это происходит при объявлении переменной, иначе компилятор выдаст ошибку. Рассмотрим использование #define на примере с подробным описанием

Пример директивы: Arduino define pin

#define RED 11  // присваиваем имя RED для пина 11
#define GRN 12 // присваиваем имя GRN для пина 12
#define BLU 13  // присваиваем имя BLU для пина 13
 
void setup() {
   pinMode(RED, OUTPUT);  // используем Pin11 для вывода
   pinMode(GRN, OUTPUT); // используем Pin12 для вывода
   pinMode(BLU, OUTPUT);  // используем Pin13 для вывода
}

Это часть кода, от примера с мигающим трехцветным светодиодом. В данном примере мы присвоили имена для пинов 11, 12 и 13, к которым подключен светодиод. При написании кода нам удобнее использовать имена вместо номеров, чтобы каждый раз не вспоминать какой цвет к какому пину подключен. А программа автоматически будет заменять имена RED, GRN, BLU на соответствующие значения при компиляции.

Команды #ifdef, #ifndef и #endif в скетче

Инструкция #ifdef Arduino IDE проверят, было ли встречено в программе данное определение ранее, если было, то ставится блок кода с последующей строки и до #endif. В примере проверяется был ли ранее в #define определен признак отладки, если да, то код (вывод сообщения на монитор порта Arduino IDE) будет выполнен, если признак не определен, то сообщение на мониторе выводиться не будет.

#ifdef OTLADKA
   Serial.println ("Message");
#endif

Инструкции #ifndef проверят, было ли встречено в программе данное определение ранее и, если не было, то ставится блок кода с последующей строки и до #endif. В следующем простом примере мы объявляем новую константу, если только не объявляли ее в скетче ранее. Если дефайн с таким именем уже использовался, то программа проигнорирует строчки внутри конструкции #ifndef … #endif.

#ifndef RED
   #define RED 11
#endif

Замена функций с помощью define Arduino

Кроме использования дефайн в программе для объявления констант, можно заменять целые фрагменты кода с помощью директивы #define. Это более сложный, но интересный вариант использования define, который позволяет создать много разных упрощающих инструкций в скетче. Например, мы можем в первом примере заменить функцию pinMode() на конструкцию с дефайн с заданными параметрами.


#define out(pin) pinMode(pin, OUTPUT) // обратите внимание, что точка-запятая не ставится

void setup() {
out(11);
out(12);
out(13);
}

В примере мы закодировали команду pinMode() одним словом «out». Теперь, где в скетче встретится слово «out», компилятор подставит строку pinMode(pin, OUTPUT) с заданным параметром pin. Таким же образом можно заменить команды digitalWrite() и delay(). Используя RGB светодиод или три обычных светодиода с Ардуино вы можете проверить работу следующего примера скетча с директивой дефайн.

#define out(pin) pinMode(pin, OUTPUT)
#define on(pin, del) digitalWrite(pin, HIGH); delay(del)
#define off(pin, del) digitalWrite(pin, LOW); delay(del)
 
void setup() {
   out(11);
   out(12);
   out(13);
}

void loop() {
   on(11, 500);
   off(11, 500);
   on(12, 500);
   off(12, 500);
   on(13, 500);
   off(13, 500);
}

Обратите внимание, что on(11, 500) и другие строчки не являются функциями, конструкция просто подставляет в код нужный текст. В более сложных программах есть риск создать самому ошибки, так как в скетче могут быть десятки подключаемых библиотек, где дефайн может что-то незаметно поменять

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

Первая программа

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

int Led = 13; // объявляем переменную Led на 13 пин (выход) void setup(){ pinMode(Led, OUTPUT); // определяем переменную } void loop(){ digitalWrite(Led, HIGH); // подаём напряжение на 13 пин delay(1000); // ожидаем 1 секунду digitalWrite(Led, LOW); // не подаём напряжение на 13 пин delay(1000); // ожидаем 1 секунду }

Принцип работы этой программы достаточно простой: светодиод загорается на 1 секунду и тухнет на 1 секунду. Для первого варианта нам не понадобиться собирать макет. Так как в платформе Arduino к 13 пину подключён встроенный светодиод.

Язык программирования

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

Внимание! Для начала работы необходимо установить среду программирования Arduino IDE.

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

Программу, написанную на языке программирования Ардуино называют скетчем. Готовые скетчи записываются на плату для их выполнения.

Среда IDE поддерживается такими операционными системами, как Windows, MacOs и Linux. На официальном сайте компании указанно, что данный язык программирования написан на Wiring, но на самом деле его не существует и для написания используется C++ с небольшими изменениями.

Конкуренты Ардуино

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

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

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

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

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

Начало

Создание проекта на Arduino состоит из 3 главных этапов: написание кода, прототипирование (макетирование) и прошивка. Для того, чтоб написать код а потом прошить плату нам необходима среда разработки. На самом деле их есть немало, но мы будем программировать в оригинальной среде – Arduino IDE. Сам код будем писать на С++, адаптированным под Arduino. Скачать можно на официальном сайте. Скетч (набросок) – программа, написанная на Arduino. Давайте посмотрим на структуру кода:

main(){ void setup(){ } void loop(){ } }

Важно заметить, что обязательную в С++ функцию main() процессор Arduino создаёт сам. И результатом того, что видит программист есть:. void setup(){ } void loop(){ }

void setup(){ } void loop(){ }

Давайте разберёмся с двумя обязательными функциями. Функция setup() вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция loop() — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера.

Типы переменных

Тип char

Символьный тип (char) является самым экономным типом данных в языке С поскольку использует всего один байт (8 бит) в памяти (микроконтроллера). Может быть знаковым (обозначается как «signed char») и беззнаковым («unsigned char»). Соответственно, в переменной char знакового типа можно хранить значения в диапазоне от -128 до +127, а в переменной беззнакового типа — от 0 до 255.

Фактически, ключевые слова (модификаторы) signed и unsigned в начале объявления типа char интерпретируется как нулевой бит объявляемой переменной. Если unsigned, то все 8 бит интерпретируются как число, поэтому максимальное значение переменной в этом случае составляет 2^8-1=255. Если тип signed, то в этом случае нулевой бит отводится под хранение знака числа (+ (не отображается) или -), соответственно под хранение значения переменной остается всего 7 бит, что соответствует максимальному хранимому значению 127 (128).

Тип int

Переменная целого типа int может быть short (короткой) или long (длинной). При этом модификаторы short и long ставятся после ключевых слов signed или unsigned, поэтому получаем такие типы данных как signed short int, unsigned short int, signed long int, unsigned long int.

Если используется модификатор short, то под хранение переменной целого типа с таким модификатором отводится 2 байта (16 бит). Соответственно, для unsigned short int получаем диапазон хранимых значений от 0 до 65535, а для signed short int — от -32768 до +32767.

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

Переменная типа long int (знаковая (signed) или беззнаковая (unsigned) занимает уже 4 байта (32 бита) в памяти, поэтому диапазоны значений переменных для этих типов будут составлять, соответственно, от -2147483648 до 2147483647 и от 0 до 4294967295.

В языке С существуют еще переменные типа long long int, для хранения которых выделяется 8 байт памяти (64 бита), но вряд ли когда-нибудь в программах для микроконтроллеров у вас возникнет необходимость в использовании столь больших чисел.

Таблица со всеми возможными целыми типами языка С и их параметрами приведена на следующем рисунке.

«Плавающие» линии

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

digitrode.ru

9.1. Биты и байты

На данный момент самая маленькая единица измерения информации в вычислительной системе — это бит. На английском языке двоичные числа обозначаются как binary digit (двоичная цифра). Так возникло искусственно образованное слово «бит» (Bit). Один бит может принимать только два значения: 0 или 1 (наличие или отсутствие электрического тока). Информация может представляться как последовательность из определенного числа битов.

В нашем случае 1 байт— это последовательность из 8 битов. Следовательно, один байт может представляться и интерпретироваться как 256 различных комбинаций. Половину байта, т. е. 4 бита, называют тетрадой или полубайтом:

4 бита = 1 полубайт = 1 тетрада 8 битов = 2 полубайта = 1 байт

Коэффициент пересчета между двоичными единицами измерения количества информации равен 1 024 (табл. 9.1). Исключение — преобразование бита в байт, т. к. при этом коэффициент пересчета равен 8. Эти некруглые числа возникают из-за того, что в информатике вычисления проводятся по основанию «2».

Определение режимов цифровых выводов: INPUT, INPUT_PULLUP и OUTPUT

Цифровые выводы могут использоваться как (вход), (подтянутый вход) или (выход). Изменение вывода с помощью меняет его электрическое поведение.

Выводы, настроенные как входы ()

Выводы Arduino (ATmega), настроенные как входы () с помощью , как говорят, находятся в состоянии высокого импеданса. Выводы, настроенные как входы, предъявляют чрезвычайно малые требования к току в цепи, с которой они считывают данные, и эквивалентны последовательному резистору 100 мегаом перед выводом. Это делает их полезными для считывания показаний датчиков.

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

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

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

Выводы, настроенные как входы с подтягивающим резистором ()

Микроконтроллер ATmega на Arduino имеет внутренние подтягивающие резисторы (резисторы, которые подключены к шине питания внутри микроконтроллера), к которым у вас есть доступ. Если вы предпочитаете использовать их вместо внешних подтягивающих резисторов, то можете использовать аргумент в функции .

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

Выводы, настроенные как выходы ()

Выводы, настроенные как выходы () с помощью , как говорят, находятся в состоянии низкого импеданса. Это означает, что они могут обеспечить значительное количество тока для других цепей. Выводы ATmega быть выдавать (проводить ток через себя от источника) или поглощать (проводить ток через себя к земле) ток до 40 мА (миллиампер) для других устройств/схем. Это делает их полезными для питания светодиодов, поскольку светодиоды обычно используют менее 40 мА. Для нагрузок более 40 мА (например, двигатели) требуется транзистор или другая схема интерфейса.

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

Определение уровней на выводах: HIGH и LOW

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

Значение (по отношению к выводу) несколько различается в зависимости от того, установлен ли вывод на вход () или на выход (). Когда вывод настроен на вход с помощью и читается с помощью , Arduino (ATmega) будет сообщать , если:

  • на выводе присутствует напряжение более 3,0 В (для плат 5 В);
  • на выводе присутствует напряжение более 2,0 В (для плат 3,3 В).

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

Когда вывод настроен на выход () с помощью и установлен в значение с помощью , вывод находится в состоянии:

  • 5 вольт (для плат 5 В);
  • 3,3 вольта (для плат 3,3 В).

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

Значение также имеет разное значение в зависимости от того, настроен ли вывод на вход () или на выход (). Когда вывод настроен на вход () с помощью и читается с помощью , Arduino (ATmega) будет сообщать , если:

  • на выводе присутствует напряжение менее 1,5 В (для плат 5 В);
  • на выводе присутствует напряжение менее 1,0 В (примерно) (для плат 3,3 В).

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Семинар по технике
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: