Подключение потенциометра к Ардуино

СОДЕРЖАНИЕ ►
Потенциометр Ардуино (переменный резистор) служит для регулировки или настройки различных параметров в электрической цепи — мощности, напряжения, громкости звука и т.д. Рассмотрим, как подключить переменный резистор к Ардуино правильно, и представим несколько примеров программ для регулировки яркости светодиода и угла поворота сервомотора подключенных к микроконтроллеру Arduino.
Потенциометр Ардуино — что это такое
Переменный резистор в электрической цепи с платой Arduino Uno или Nano используется в качестве делителя напряжения. На выводы потенциометра подается напряжение (5V и GND), а средний вывод радиоэлемента является подвижным контактом. При вращении ручки потенциометра, напряжение сигнала на среднем выводе будет меняться от своего максимального значения (5 Вольт) до нуля.

Потенциометры бывают разных типов. По характеру изменения сопротивления они делятся на: линейные (сопротивление меняется в прямой зависимости), логарифмические и экспоненциальные (сопротивление меняется с разной интенсивностью). По типу корпуса бывают: однооборотные, многооборотные, ползунковые и т.д. По назначению: переменные и подстроечные резисторы.
Как подключить потенциометр к Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- потенциометр (переменный резистор);
- беспаечная макетная плата;
- один светодиод и резистор;
- сервопривод;
- провода «папа-папа», «папа-мама».
Крайние ножки переменного резистора подключаются к портам питания (5V и GND). Средний контакт имеет подвижный контакт, на котором меняется напряжение вследствие изменения сопротивления при вращении ручки. Полярность подключения «+» и «-» роли не играет, при этом будет происходить только инверсия сигнала потенциометра. Соберите следующую схему и загрузите приведенный код в плату.

Скетч. Подключение потенциометра к аналоговому входу
void setup() { Serial.begin(9600); // запускаем монитор порта pinMode(A1, INPUT); // к входу A1 подключаем потенциометр } void loop() { int val = analogRead(A1); // считываем данные с порта A1 Serial.println(val); // выводим данные на монитор порта delay(500); // ставим задержку для удобства }
Пояснения к коду:
- при необходимости подключения нескольких потенциометров к Arduino Nano, следует их подключать к другим аналоговым входам;.
Скетч. Подключение потенциометра и светодиода
Для регулировки яркости светодиода с помощью переменного резистора, следует считывать данные с данного радиоэлемента, подключив его к аналоговому входу. В зависимости от поворота ручки потенциометра необходимо в линейной зависимости менять яркость светодиода. Это сделать довольно просто на микроконтроллере, схема подключения переменного резистора с примером кода, размещена далее.

void setup() { pinMode(10, OUTPUT); // подключаем светодиод к пин 10 pinMode(A1, INPUT); // к входу A1 подключаем потенциометр } void loop() { int val = analogRead(A1); // считываем данные с порта A1 val = val / 4; // делим значения на 4 analogWrite(10, val); // меняем яркость светодиода }
Пояснения к коду:
- светодиод подключается к аналоговому выходу с ШИМ сигналом;
- данные с порта A1, которые находятся в диапазоне 0…1023, мы делим на 4 и получаем диапазон от 0 до 255 для изменения яркости светодиода.
Скетч. Подключение потенциометра и сервопривода
Сервомотор подключается к аналоговым выходам Arduino Nano. В скетче использована функция map, которая пропорционально переносит значение переменной из текущего диапазона значений в новый диапазон. Таким образом, значения с потенциометра в диапазоне 0…1023, мы переводим их в новый диапазон от 0 до 180 (угол поворота сервомотора). Соберите схему и загрузите следующий скетч.

#include <Servo.h> // подключаем библиотеку для сервопривода Servo servo; // объявляем переменную servo типа "servo" void setup() { servo.attach(10); // привязываем сервопривод к порту 10 pinMode(A1, INPUT); // к входу A1 подключаем потенциометр } void loop() { int val = analogRead(A1); // считываем данные с порта A1 val = map(val, 0, 1023, 0, 180); // переводим val в новый диапазон servo.write(val); // передаем значения для сервопривода }
Пояснения к коду:
- функция
map
пропорционально переносит значение переменнойval
из диапазона значений от 0 до 1023 в новый диапазон от 0 до 180; - в самых крайних положениях (0 и 180 градусов) сервомотор может «дергаться».
Как собрать схему, чтобы светодиод мигал, а скорость мигания задавалась потенциометром?
Попробуй найти схему секвенсора на микросхеме NE555, если ардуино не обязателен
…..
n = analogRead (A0)
digitalWrite (9, HIGH);
delay(n) ;
digitalWrite (9, LOW);
delay(n);
….
Если хочешь перевести в какой-то иной диопазон то:
n = analogRead (A0);
n = map(n, 0, 1023, 0, 2046);
digitalWrite (9, HIGH);
delay(n) ;
digitalWrite (9, LOW);
delay(n);
В данном случае скорость мигания уменьшается в два раза.
Кстати я надеюсь ты поймешь что и куда подсоединять
P. S. Я не проверял, по этому мог ошибиться
Код с миганием работает, спасибо!
void setup()
{
pinMode(11, OUTPUT);
}
void loop()
{
int rotation;
rotation = analogRead(A0);
digitalWrite(11, HIGH);
delay(rotation);
digitalWrite(11, LOW);
delay(rotation);
}
Почему ардуино не видит всего диапазона потенциометра? Кручу потенциометр и уже где-то на середине достигается максимальное значение. А вторую половину оборота ничего не происходит. Что делать?
Скорее всего, дело в потенциометре. Попробуйте его заменить
Тут похоже беда в характеристике потенциометра. Надо линейную, а у Вас, похоже экспоненциальная.
как подключить потенциометр к motor control shield for arduino на mega?
Примером реализации схемы подключения потенциометра может стать макетная плата с подключенным переменным резистором и светодиодом. При помощи потенциометра будет выполняться управление уровнем яркости свечения.
Возможно ли настроить плавную смену цвета(радуга) на ленте WS2812b с помощью потенциометра?