Аналоговые порты на Ардуино

На этом занятии рассмотрим, аналоговые порты Arduino A0-A5. Разберем принцип работы аналоговых портов, что к ним можно подключать. Соберем с помощью макетной платы схему светильника с управляемой яркостью, чтобы с помощью потенциометра (переменного резистора) можно было изменять яркость свечения светодиода. Рассмотрим директиву #define в языке программирования C++.

 

Устройство и принцип работы потенциометра

Переменный резистор (потенциометр) поворотом ручки изменяет сопротивление в электрической цепи от нуля до номинального сопротивления в 10 кОм. Потенциометр сделан состоит из токопроводящей поверхности — плоского постоянного резистора с двумя контактами и скользящего по поверхности токосъемника. Потенциометр предназначен для регулировки напряжения в электрической цепи.

 

Со средней ножки потенциометра снимают значение напряжения
Со средней ножки потенциометра снимают значение напряжения

 

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

 

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

 

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

Микроконтроллер Atmega в Arduino, содержит шестиканальный аналого-цифровой преобразователь (АЦП). Разрешение преобразователя составляет 10 бит, что позволяет получать значения от 0 до 1023. Основным применением аналоговых входов Ардуино (A0 — A5 в Arduino UNO) является снятие значений с аналоговых датчиков.

 

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

 

Светильник с управляемой яркостью

На этом занятии мы соберем электрическую схему светильника с управляемой яркостью. С помощью потенциометра мы сможем изменять яркость светодиода, подключенного к пину 9. Потенциометр подключается крайними ножками к портам 5V и GND, со средней ножки снимается значение напряжения на аналоговый вход A0.

 

Для занятия нам понадобятся следующие детали:

 

  • Плата Arduino Uno;
  • Макетная плата;
  • USB-кабель;
  • потенциометр;
  • 1 светодиод;
  • 1 резистор 220 Ом;
  • Провода «папка-папка».

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

 

Схема сборки светильника с управляемой яркостью
Схема сборки светильника с управляемой яркостью

 

После сборки схемы, подключите Arduino к компьютеру и загрузите следующий скетч.
Скачать готовый скетч zanyatie5_port.ino

 

// Присваиваем имя для пина со светодиодом (англ. «led»)
#define LED_PIN 9

// Присваиваем имя для пина с потенциометром (англ. «potentiometer»)
#define POT_PIN A0

void setup()
{
  // пин со светодиодом будет выходом (англ. «output»)
  pinMode(LED_PIN, OUTPUT);

  // пин с потенциометром будет входом (англ. «input»)
  pinMode(POT_PIN, INPUT);
  
  // Запускаем монитор последовательного порта
  // снимите комментарий // Serial.begin(9600);
}

void loop()
{
  // заявляем, что будем использовать 2 переменные - rotation и brightness
  // хранить в переменных будем только целые числа (англ. «integer»)
  int rotation, brightness;  

  // rotation равна значениям с потенциометра в интервале от 0 до 1023
  rotation = analogRead(POT_PIN);

  // переменная brightness будет равна rotation делённое на 4
  // brightness может быть только целым числом, дробная часть будет отброшена
  // в итоге переменная brightness будет находится в пределах от 0 до 255
  brightness = rotation / 4;

  // выдаём напряжение, рассчитанное по формуле brightness = rotation / 4
  analogWrite(LED_PIN, brightness);
  
  // Выдаем значение rotation на монитор последовательного порта
  // снимите комментарий // Serial.println(rotation);
  // снимите комментарий // delay(1000);
}

 

Пояснения к коду:

  1. С помощью директивы #define мы заменили номер пина 9 на имя LED_PIN, аналоговому входу A0 мы задали имя POT_PIN;
  2. Оператором int мы задали две переменные rotation и brightness, которые могут принимать значение только целого числа (дробная часть округляется). Для имен переменных принято использовать только строчные буквы;
  3. Переменная rotation пропорциональна напряжению, поданному на аналоговый вход и находится в интервале от 0 до 1023 (минимальное и максимальное значение);
  4. Переменная brightness равна значению rotation делённое на 4 и находится в пределах от 0 до 255 (минимальное и максимальное значение аналогового входа).

 

На что обратить внимание:

  1. Выходы 3,3V и 5V на Ардуино служат для питания плат расширения и датчиков;
  2. Для считывания цифрового сигнала (0 или 1), подходят любые порты 0-13;
  3. Для считывания аналогового сигнала, принимающего широкий спектр значений подходят только порты «ANALOG IN».

 

Задание для самостоятельного выполнения:

  1. Снимите комментарии в скетче // снимите комментарий // и запустите Монитор последовательного порта в программе Arduino IDE;
  2. Подключите к второй светодиод к аналоговому выходу на Ардуино. Измените скетч так, чтобы второй светодиод светился на 1/3 от яркости первого светодиода;
  3. Измените скетч так, чтобы Монитор последовательного порта показывал данные с аналогового входа AO и аналогового выхода 9 с паузой в 3 секунды.

Пройти тест


1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *