Skip to content Skip to main navigation Skip to footer

Arduino и потенциометр

Описание


Потенциометр – переменный резистор, олицетворяющий собой резистивный делитель напряжения с подвижной средней точкой. При подключении выводов №1 и №3 на источник напряжения (например GND и 5V) на выводе №2 появится напряжение (относительно GND), пропорциональное положению ручки потенциометра.

Важный момент: потенциометры из набора могут использоваться только для подачи напряжения на аналоговые входы МК, регулировать напряжение на нагрузке (моторы, лампочки, вентиляторы) с их помощью нельзя!

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

Подключение


Потенциометр подключается крайними выводами на GND и VCC, а центральным – на аналоговый вход МК в режиме pinMode(pin, INPUT). Для опроса используется функция analogRead(pin). Рассмотрим подключение двух потенциометров на пины A0 и A1:

К Wemos можно подключить только один потенциометр, причём питание должно быть от 3.3V, так как аналоговый вход Wemos принимает напряжение от 0 до 3.3V!

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

Примеры


Вывод значений в порт
/*
  Потенциометры на A0 и A1. Вывод в порт.
  Открой Инструменты/Плоттер для просмотра графика
*/

void setup() {
  // открываем порт для связи
  Serial.begin(9600);
}

void loop() {
  // выводим оба значения 
  // через запятую в одну строку
  Serial.print(analogRead(A0));
  Serial.print(',');
  Serial.println(analogRead(A1));
  delay(10);
}
Управление яркостью светодиода
/*
  Потенциометр на A0 управляет
  яркостью светодиода на плате (D13)
*/

void setup() {
  // пин 13 как выход (для мигания светодиодом)
  pinMode(13, OUTPUT);
}

int speed = 5;  // скорость яркости

void loop() {
  // шим на 13 пине
  // analogRead возвращает 0-1023
  // softPWM ожидает 0-255
  // делим на 4 для соответствия значений
  softPWM(13, analogRead(A0) / 4);
}

// софт шим
void softPWM(byte pin, byte val) {
  static byte count;
  count++;
  if (count == 0 && val != 0) digitalWrite(pin, 1);
  if (count == val) digitalWrite(pin, 0);
}

Домашнее задание


  • Вывести текущий угол поворота потенциометра в порт (подсказка: рабочий угол крутилки – 270 градусов)

 

Полезный пример?

Подписаться
Уведомить о
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии