Микроконтроллер ATmega328P и Arduino Uno часть 2

Микроконтроллер ATmega328P и Arduino Uno часть 2


В данной статье мы продолжим рассматривать микроконтроллер ATmega328P и Arduino Uno

Что на arduino uno есть помимо микроконтроллера?

Основным компонентом платы Arduino Uno является микроконтроллер ATMega328P. Можно сказать что он является "сердцем" платы. Рядом с микроконтроллером расположен кварцевый резонатор на 16 МГц, который обеспечивает микроконтроллеру необходимую тактовую частоту для его работы. Рядом с ним расположен разъем под названием ICSP – он предназначен для внутрисистемного программирования/"программирования в системе" (In System Programming). Также же через него в микроконтроллер записывается загрузчик (bootloader) Arduino.

Если вы посмотрите на другую сторону платы Arduino Uno, то там вы увидите еще один микроконтроллер в корпусе QFN. Это микроконтроллер ATMega16U – он используется в качестве USB –TTL конвертера.

На левой стороне платы расположены USB порт и разъем постоянного тока (DC barrel jack). Вы можете подавать питание на плату Arduino Uno через USB порт или данный разъем постоянного тока – на него можно подавать питающее напряжение в диапазоне 7-12V. Более подробно о способах подачи питания на плату Arduino Uno вы можете прочитать в данной статье. Далее по схеме за разъемом постоянного тока расположены два регулятора напряжения – на 5V и 3.3V.

Рассмотрим более подробно назначение компонентов платы Arduino Uno.

Разъем USB B-типа

Разъем USB на плате Arduino Uno выполняет две основные функции. Одна из них – коммуникационная, с помощью данного разъема осуществляется взаимодействие (обмен данными) платы с компьютеров и загрузка прошивки в плату при помощи загрузчика (bootloader). Вторая его функция – подача питания на плату. Вы можете использовать USB порт непосредственно для подачи питания на плату Arduino Uno.

Контакты ISCP

На плате Arduino Uno расположены два 6-контактных разъема ISCP. Один из них расположен около чипа USB – TTL, а другой – в конце платы. Эти контакты используются для внутрисистемного программирования двух микроконтроллеров платы – ATMgega16U, используемого в качестве конвертора USB-TTL, и ATMega328.

Кнопка сброса (Reset Button)

Как следует из ее названия, данная кнопка используется для сброса микроконтроллера ATMega328. Она подключена к контакту PC6/Reset pin с помощью подтягивающего резистора на 10 кОм. При нажатии кнопки контакт "подтягивается" к земле и происходит сброс микроконтроллера.

Чип интерфейса USB-TTL

Для взаимодействия с компьютером плата Arduino использует USB-TTL интерфейс. В плате Arduino Uno его роль выполняет микроконтроллер ATMega16U.

Кварцевый генератор/керамический резонатор

Для работы микроконтроллера ему необходим источник тактовой частоты, который определяет скорость работы микроконтроллера. Именно от тактовой частоты зависит количество инструкций, которые микроконтроллер может исполнять за одну секунду. Микроконтроллеры серии ATMega могут использовать два типа источника тактовой частоты. Первым из них является внутренний (встроенный в микроконтроллер) RC генератор. Но его максимальная частота ограничена и ее стабильность не очень высока.

Вторым способом является использование внешнего генератора тактовой частоты. Для этих целей мы можем использовать кварцевый генератор или керамический резонатор. На представленном ниже рисунке выделены оба этих элемента в составе платы Arduino Uno. Первый из них – это кварцевый генератор 16 МГц, используемый для чипа ATMega16U2, а второй – резонатор 16 МГц, используемый для микроконтроллера ATMega328P.

Управление подачей питающего напряжения (Power Path control)

Если вы внимательно посмотрите на плату Arduino Uno, то вы обнаружите на ней микросхему LM358. У вас может возникнуть вопрос зачем она здесь нужна. Данная микросхема играет роль компаратора для управления подачей питающего напряжения. Когда питание на плату Arduino Uno подается через разъем постоянного тока или контакт Vin, данная схема управления подачей питающего напряжения отключает цепь подачи питания через USB порт и, таким образом, предохраняет его от возможного повреждения.

Регулятор напряжения

Микроконтроллеры ATMega328 и ATmega16U2 имеют максимальное входное напряжение около 5V, а большинство модулей и периферийных устройств работает от напряжения 5V или 3.3V. Через разъем постоянного тока или контакт Vin на плату Arduino Uno может подаваться питающее напряжение в диапазоне 7-12V, поэтому для его понижения используются два регулятора напряжения. Один из них (обозначенный на представленном ниже рисунке цифрой 1, используется для понижения напряжения до 5V, а второй – для понижения напряжения до 3.3V, которое подается на контакт 3.3V платы.

Разъем постоянного тока (DC Barrel Jack)

Может использоваться для подачи питания на плату Arduino Uno. Поскольку подаваемое через него питающее напряжение может находиться в диапазоне 7-12V, то к нему мы можем подключить адаптеры на 12V DC или 9V DC. Также к нему можно подключить батарейку 9 В через специальный переходник.

Цифровые и аналоговые контакты ввода/вывода (I/O)

Плата Arduino Uno содержит 14 цифровых контактов ввода/вывода (I/O) и 6 аналоговых входов, которые также можно использовать в качестве цифровых контактов ввода/вывода. Цифровые контакты платы работают с логическими уровнями напряжения 5V. Плата содержит 6-канальный 10-битный АЦП (аналого-цифровой преобразователь), каналы которого подключены к аналоговым входам A0-A5 платы.

Светодиоды

Плата Arduino Uno содержит 4 встроенных светодиода, расположение которых на плате показано на рисунке ниже. Один из этих светодиодов используется для индикации подачи питания на плату, еще два – для индикации активности на контактах Rx и Tx последовательного порта. А четвертый светодиод подключен к контакту 13 платы и никакой специальной роли не выполняет – его можно запрограммировать на индикацию любых событий.


Роль регулятора напряжения 5V выполняет микросхема NCP1117ST50T3G, а контакт Vin данного регулятора подключен к разъему постоянного тока через диод M7, который в данном случае выполняет роль защиты от смены полярности питающего напряжения. Выход данного регулятора подключен к остальной части цепи 5V, а также ко входу регулятора напряжения 3.3V LP2985-33DBVR.Другим источником напряжения 5V является контакт VCC, который подключен к стоку транзистора FDN340P, представляющего собой P-канальный MOSFET. Исток данного транзистора подключен к цепи 5V, а затвор – к выходу операционного усилителя LMV358, используемого в качестве компаратора. Он осуществляет сравнение между 3V3 и Vin/2. Когда на Vin/2 уровень напряжения больше это приводит к уровню high на выходе компаратора и P-канал MOSFET закрывается. Когда на плату не подается никакого напряжения Vin, выход V+ компаратора подтягивается к уровню GND и на его Vout будет уровень low. Соответственно, транзистор будет открыт и USB VCC подключается к цепи 5V.


А теперь рассмотрим часть схемы платы Arduino Uno, отвечающую за преобразование USB-TTL. Как мы уже отмечали, главным компонентом этой части схемы является микроконтроллер ATMega16U2. Данная часть схемы платы Arduino Uno содержит ICSP разъем, внешний кварцевый генератор с нагрузочными конденсаторами (CL) и конденсатор для фильтрации питающего напряжения. Варисторы (VDRs) Z1 и Z2 используются для защиты схемы от электростатического разряда. Также схема содержит два резистора, подключенных к контактам D+ и D-, они используются для корректного формирования импеданса линий данных интерфейса USB.

Пины Arduino Uno

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

Микроконтроллер ATmega328P имеет разнообразные типы пинов, которые обеспечивают подключение и взаимодействие с различными компонентами и периферийными устройствами. Давайте рассмотрим основные типы пинов:

Цифровые входы/выходы (Digital I/O):


Всего на ATmega328P 14 цифровых пинов (от D0 до D13), которые могут быть настроены как входы или выходы.

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

Цифровые входы и выходы (Digital I/O) на микроконтроллере ATmega328P позволяют управлять и считывать логические уровни (HIGH или LOW) на цифровых пинах. Эти пины можно настроить либо как входы, либо как выходы в программе, используя функции Arduino IDE.


Цифровые выходы: Когда пин настроен как цифровой выход (OUTPUT), микроконтроллер может устанавливать на нем логический уровень HIGH (1) или LOW (0). Логический уровень HIGH представляет собой напряжение VCC (обычно 5 вольт), а логический уровень LOW представляет собой землю (GND, 0 вольт).

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

const int ledPin = 13; // Пин для светодиода

void setup() {
  pinMode(ledPin, OUTPUT); // Установка пина в режим OUTPUT
}

void loop() {
  digitalWrite(ledPin, HIGH); // Установка пина в HIGH (светодиод включен)
  delay(1000); // Пауза 1 секунда
  
  digitalWrite(ledPin, LOW); // Установка пина в LOW (светодиод выключен)
  delay(1000); // Пауза 1 секунда
}

В этом примере светодиод будет мигать с интервалом в 1 секунду, так как мы устанавливаем пин в HIGH на 1 секунду, затем в LOW на 1 секунду.

Цифровые входы: Когда пин настроен как цифровой вход (INPUT), микроконтроллер может считывать логический уровень на этом пине. Логический уровень HIGH (1) обозначает, что на пине есть напряжение, а логический уровень LOW (0) - что напряжения нет или оно близко к земле (GND).

Пример кода для считывания логического уровня с цифрового входа:

const int buttonPin = 2; // Пин для кнопки
int buttonState = 0; // Переменная для хранения состояния кнопки

void setup() {
  pinMode(buttonPin, INPUT); // Установка пина в режим INPUT
}

void loop() {
  buttonState = digitalRead(buttonPin); // Считываем состояние с пина
  
  // Если кнопка нажата (логический уровень HIGH), то выполняем действие
  if (buttonState == HIGH) {
    // Ваш код для обработки нажатия кнопки
  }
}

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

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

Аналоговые входы (Analog Input):


Аналоговые входы на микроконтроллере ATmega328P позволяют измерять аналоговые значения напряжения в диапазоне от 0 до 5 вольт. Это позволяет микроконтроллеру читать аналоговые сигналы с различных сенсоров и устройств, таких как датчики температуры, влажности, света, звука и т. д.

Микроконтроллер ATmega328P имеет 6 аналоговых входов, обозначенных как A0, A1, A2, A3, A4 и A5. Для использования аналогового входа, нужно выполнить несколько шагов:

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

const int analogInput = A0; // Пин для аналогового входа (например, A0)

void setup() {
  pinMode(analogInput, INPUT); // Установка пина в режим INPUT (аналоговый вход)
}

2. Чтение аналогового значения: Для считывания значения с аналогового входа, используется функция analogRead(), которая возвращает целочисленное значение от 0 до 1023 (10 битное разрешение). Значение 0 соответствует минимальному напряжению (0 вольт), а значение 1023 - максимальному напряжению (5 вольт).

int sensorValue; // Переменная для хранения считанного значения

void loop() {
  sensorValue = analogRead(analogInput); // Считываем значение с аналогового входа
  
  // Ваш код для обработки считанного значения
}

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

Пример преобразования значения с аналогового датчика температуры LM35 в градусы Цельсия:

const int analogInput = A0; // Пин для аналогового входа (например, A0)
float voltage, temperatureC;

void setup() {
  pinMode(analogInput, INPUT); // Установка пина в режим INPUT (аналоговый вход)
  Serial.begin(9600); // Инициализация Serial для вывода результатов
}

void loop() {
  int rawValue = analogRead(analogInput); // Считываем значение с аналогового входа
  
  // Преобразование аналогового значения в напряжение
  voltage = (rawValue * 5.0) / 1023.0;
  
  // Преобразование напряжения в температуру в градусах Цельсия
  temperatureC = (voltage - 0.5) * 100.0;
  
  // Вывод результатов в Serial Monitor
  Serial.print("Температура: ");
  Serial.print(temperatureC);
  Serial.println("°C");
  
  delay(1000); // Пауза для стабильного вывода данных
}

В этом примере мы используем датчик температуры LM35, который выдает напряжение пропорциональное температуре, и преобразуем это напряжение в градусы Цельсия для вывода на Serial Monitor.

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

ШИМ (PWM) пины (Pulse Width Modulation):


ATmega328P имеет 6 ШИМ-пинов, обозначенных как D3, D5, D6, D9, D10 и D11.

ШИМ (Широтно-Импульсная Модуляция) пины на микроконтроллере ATmega328P позволяют генерировать сигналы с изменяемой шириной импульсов, что используется для управления аналоговыми устройствами, такими как светодиоды, моторы, сервоприводы и другие устройства.

Принцип работы ШИМ на ATmega328P следующий:

  1. Генерация сигнала: ШИМ-пины могут генерировать прямоугольные сигналы с определенной частотой, которая зависит от настроек таймера. Сигнал имеет период, который определяет время повторения цикла, и заполнение (скважность), которое определяет длительность времени, в течение которого сигнал находится в HIGH (1) состоянии.
  2. Регулировка яркости или скорости: За счет изменения длительности HIGH состояния (заполнения) в каждом периоде, можно регулировать яркость светодиодов, скорость вращения моторов и других аналоговых устройств. Чем выше заполнение, тем выше яркость светодиода или скорость мотора.

Пример кода для генерации ШИМ-сигнала на пине D9 для управления яркостью светодиода:

const int ledPin = 9; // Пин для светодиода

void setup() {
  pinMode(ledPin, OUTPUT); // Установка пина в режим OUTPUT
}

void loop() {
  // Генерация ШИМ-сигнала с изменяемой яркостью светодиода
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(ledPin, brightness); // Установка яркости светодиода
    delay(10); // Пауза для изменения яркости
  }
}

В этом примере мы используем функцию analogWrite() для установки яркости светодиода на пине D9. Значение яркости передается в диапазоне от 0 до 255, где 0 - светодиод выключен, а 255 - максимальная яркость. За счет изменения значения яркости в цикле, мы получаем плавное изменение яркости светодиода.

Кроме того, ШИМ-сигналы могут использоваться для управления сервоприводами, где изменение длительности импульса определяет положение сервопривода.

Микроконтроллер ATmega328P предоставляет 6 ШИМ-пинов (D3, D5, D6, D9, D10, D11), что позволяет управлять несколькими аналоговыми устройствами одновременно. Использование ШИМ-пинов делает ATmega328P мощным инструментом для управления аналоговыми устройствами с различными требованиями по яркости, скорости и положению.

ШИМ (PWM) сигналы широко используются для управления различными устройствами и компонентами в электронике и автоматизации. Вот некоторые примеры, где применяются ШИМ-сигналы для управления:

  1. Управление светодиодами: ШИМ-сигналы используются для регулировки яркости светодиодов. Меняя заполнение ШИМ-сигнала на пине, можно контролировать интенсивность свечения светодиода.
  2. Управление моторами: ШИМ-сигналы применяются для управления скоростью и направлением вращения моторов. Модулирование ширины импульса позволяет изменять мощность, подаваемую на мотор, что влияет на его скорость вращения.
  3. Сервоприводы: ШИМ-сигналы используются для управления сервоприводами, которые используются в робототехнике и моделях для точного управления углом поворота.
  4. DC-DC преобразователи: В современных источниках питания ШИМ-сигналы используются для управления DC-DC преобразователями, что позволяет эффективно преобразовывать одно напряжение в другое.
  5. Инверторы: ШИМ-сигналы применяются в инверторах для преобразования постоянного тока в переменный и обратно.
  6. Управление яркостью подсветки LCD: ШИМ-сигналы могут использоваться для регулировки яркости подсветки в жидкокристаллических дисплеях (LCD).
  7. Звуковые сигналы: ШИМ-сигналы применяются для генерации звуковых сигналов в различных устройствах, таких как сигнальные зуммеры или генераторы звуковых эффектов.
  8. Пульсирующие источники света: ШИМ-сигналы могут использоваться для управления пульсирующими источниками света, например, в светодиодных лампах, чтобы создать эффект "мигания" света.

Это лишь некоторые из примеров, где используются ШИМ-сигналы для управления различными устройствами и компонентами. ШИМ-сигналы предоставляют гибкий способ управления аналоговыми устройствами с помощью цифровых микроконтроллеров, что делает их важной функциональностью во многих проектах.

Внешние прерывания


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

Принцип работы внешних прерываний на ATmega328P следующий:

  1. Настройка внешнего прерывания: Прежде чем использовать внешние прерывания, нужно настроить пин для этой функции. Всего на ATmega328P два внешних прерывания INT0 и INT1, доступные на пинах D2 (INT0) и D3 (INT1). При использовании внешнего прерывания, нужно установить пин в режим INPUT и включить соответствующее прерывание через регистр EIMSK (External Interrupt Mask Register).
const int interruptPin = 2; // Пин для внешнего прерывания (INT0)

void setup() {
  pinMode(interruptPin, INPUT); // Установка пина в режим INPUT
  attachInterrupt(digitalPinToInterrupt(interruptPin), ISR_function, CHANGE);
}

void loop() {
  // Основной код программы
}

void ISR_function() {
  // Код, который будет выполняться при прерывании
}
  1. Привязка обработчика прерывания: Когда происходит событие, установленное для прерывания (например, изменение сигнала на пине), микроконтроллер выполняет переход к обработчику прерывания, который определен разработчиком. В коде примера это функция ISR_function(). Обработчик прерывания должен быть коротким и быстрым, так как он будет выполняться вместо основного кода программы.
  2. Обработка прерывания: В функции обработчика прерывания можно выполнять необходимые действия, связанные с событием. Например, считывать данные с датчиков, менять состояние устройств или выполнить другие действия, зависящие от типа прерывания.
  3. Возвращение к основной программе: После выполнения обработчика прерывания, микроконтроллер возвращается к основной программе и продолжает ее выполнение.

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

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

Питание (Power Pins)


VCC, AVCC, GND и AREF - это обозначения для различных пинов и напряжений на микроконтроллерах, включая ATmega328P, который используется на плате Arduino Uno. Эти пины и напряжения играют важную роль в питании и аналоговых измерениях. Давайте рассмотрим каждый из них подробнее:

  1. VCC (Voltage Common Collector): VCC - это пин, предназначенный для подключения положительного напряжения питания к микроконтроллеру. На плате Arduino Uno VCC обычно подключен к питанию +5V. Это напряжение должно быть стабильным и не должно превышать максимальное рабочее напряжение микроконтроллера (обычно 5.5V для ATmega328P).
  2. AVCC (Analog Voltage Common Collector): AVCC - это пин, предназначенный для подключения положительного напряжения питания аналоговых компонентов микроконтроллера, таких как АЦП (аналогово-цифровой преобразователь). На плате Arduino Uno AVCC также обычно подключен к +5V. При использовании аналоговых входов микроконтроллера важно поддерживать стабильное напряжение на AVCC.
  3. GND (Ground): GND - это пин заземления, к которому подключается отрицательное напряжение или ноль внешнего источника питания. Все земельные пины на микроконтроллере и на плате Arduino Uno должны быть объединены вместе, чтобы создать общую землю для всех компонентов на плате. GND играет роль общего точки отсчета для напряжений и электрических сигналов.
  4. AREF (Analog Reference): AREF - это пин, предназначенный для подключения внешнего опорного напряжения для аналоговых измерений с помощью АЦП микроконтроллера. Если необходимо проводить точные измерения с помощью АЦП, можно подключить внешний опорный источник напряжения к пину AREF. По умолчанию AREF не подключен, и микроконтроллер использует встроенное опорное напряжение, которое равно VCC.
  5. Важно отметить, что при подключении внешнего опорного напряжения к AREF необходимо правильно настроить микроконтроллер, чтобы он использовал этот внешний источник напряжения для аналоговых измерений.

Эти пины и напряжения на микроконтроллере являются важными для обеспечения правильного питания устройства и проведения аналоговых измерений с высокой точностью. При разработке электронных устройств и проектов на базе микроконтроллеров, необходимо учитывать эти параметры и правильно подключать пины VCC, AVCC, GND и AREF для обеспечения надежной и стабильной работы устройства.

Подробнее про подключения внешнего опорного напряжения...

Подключение внешнего опорного напряжения (AREF) к микроконтроллеру ATmega328P на плате Arduino Uno позволяет улучшить точность аналоговых измерений с помощью АЦП (аналогово-цифрового преобразователя). Обычно встроенное опорное напряжение микроконтроллера (выбираемое по умолчанию) равно питанию VCC, что может ограничить разрешение и точность измерений. Подключение внешнего опорного напряжения позволяет использовать более стабильное и точное опорное напряжение для аналоговых измерений.

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

Для подключения внешнего опорного напряжения на плате Arduino Uno выполните следующие шаги:

  1. Выбор внешнего опорного напряжения: Выберите внешний опорный напряжение, которое будет использоваться для аналоговых измерений. Обычно это опорное напряжение должно быть в пределах 0V до VCC (обычно +5V на плате Arduino Uno). Выбор напряжения зависит от ваших потребностей в точности измерений и доступных вам внешних опорных источников.
  2. Подключение внешнего опорного напряжения: Подключите выбранный внешний опорный источник к пину AREF на плате Arduino Uno. Пин AREF находится рядом с пинами питания (5V и GND). Вам необходимо подать внешнее опорное напряжение на этот пин.
  3. Настройка микроконтроллера: После подключения внешнего опорного напряжения укажите микроконтроллеру ATmega328P, что он должен использовать внешний источник напряжения для аналоговых измерений.
  4. В Arduino IDE вы можете использовать функцию analogReference() для установки опорного напряжения. Эта функция может принимать один из следующих аргументов:
  5. DEFAULT: Использовать встроенное опорное напряжение (VCC).
  6. INTERNAL: Использовать встроенное внутреннее опорное напряжение (в пределах 1.1V на ATmega328P).
  7. EXTERNAL: Использовать внешний опорный напряжение, подключенное к пину AREF.
  8. Пример кода для установки внешнего опорного напряжения на плате Arduino Uno:
void setup() {
  analogReference(EXTERNAL); // Устанавливаем внешнее опорное напряжение
  // Остальной код настройки и инициализации
}

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

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

Примечание: Важно учитывать, что напряжение, поданное на пин AREF, не должно превышать VCC (обычно +5V) на плате Arduino Uno, чтобы избежать повреждения микроконтроллера. Также убедитесь, что выбранное вами внешнее опорное напряжение согласовано с разрешением АЦП микроконтроллера для достижения максимальной точности измерений.


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

В следующей статье мы продолжим наше захватывающее путешествие в мир Arduino Uno. Оставайтесь на связи и следите за обновлениями!

Благодарю вас за вашу поддержку и до скорой встречи в следующей статье!

Если вы заинтересовались микроконтроллером ATmega328P и хотите начать свои эксперименты с Arduino Uno, мы рады предложить вам возможность приобрести эту удивительную платформу или другие микроконтроллеры и другие электронные компоненты в нашем интернет-магазине. Просто перейдите по ссылке и станьте обладателем Arduino Uno уже сегодня!

https://crazybots.ru/collection/kontrollery-i-programmatory



Report Page