Потенциометр — регулируемый делитель электрического напряжения, переменный резистор. Представляет собой, как правило, резистор с подвижным отводным контактом (движком). Потенциометры используются в качестве регуляторов параметров (громкости звука, мощности, выходного напряжения и т. д.), для подстройки внутренних характеристик цепей аппаратуры (подстроченный резистор), на основе прецизионных потенциометров построены многие типы датчиков углового или линейного перемещения.
В данном примере показано как можно управлять углом поворота сервомотора с помощью потенциометра.
НАМ ПОНАДОБИТСЯ
- Плата Arduino Uno
- Сервомотор
- Потенциометр
- Провода
- Макетная плата
СХЕМА ПОДКЛЮЧЕНИЯ
Для управления сервомотором используется библиотека Servo. В скетче показано использование основных команд управления:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #include <Servo.h> //подключаем библиотеку сервомотора Servo myservo1; // создаём обьект myservo1 void setup(){ myservo1.attach(11); // Подключаем цифровой вывод (pin 11) к сервомотору Serial.begin(9600); // Задаем скорость работы монитор порта } void loop() { myservo1.write(0); // отправляем данный угол поворота в сервомотор Serial.println (myservo1.read()); //отправляем в порт монитора значение угла поворота с сервомотора delay(1000); // Задержка 1 с. myservo1.write(45); // отправляем данный угол поворота в сервомотор Serial.println (myservo1.read()); //отправляем в порт монитора значение угла поворота с сервомотора delay(1000); // Задержка 1 с. myservo1.write(90); // отправляем данный угол поворота в сервомотор Serial.println (myservo1.read()); //отправляем в порт монитора значение угла поворота с сервомотора delay(1000); // Задержка 1 с. myservo1.write(135); // отправляем данный угол поворота в сервомотор Serial.println (myservo1.read()); //отправляем в порт монитора значение угла поворота с сервомотора delay(1000); // Задержка 1 с. myservo1.write(180); // отправляем данный угол поворота в сервомотор Serial.println (myservo1.read()); //отправляем в порт монитора значение угла поворота с сервомотора delay(1000); // Задержка 1 с. } |
В скетче не показана еще одна команда отключения сервомотора:
myservo1.detach(); — Отключает сервопривод от цифрового вывода.
Теперь покрутим потенциометр:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <Servo.h> //подключаем библиотеку сервомотора Servo myservo1; // создаём обьект myservo1 int analogPin = 0; // Присваиваем имя analogPin аналоговому выводу А0, к которому подключена средняя ножка потенциометра int analogValue; // переменная считывания данных с аналогового входа void setup(){ myservo1.attach(11); // Подключаем цифровой вывод (pin 11) к сервомотору Serial.begin(9600); // Задаем скорость работы монитор порта } void loop() { analogValue = analogRead(analogPin); // Записываем в переменную analogValue данные с аналогового входа А0 analogValue = map(analogValue, 0, 1024, 0, 180); // Преобразуем диапазон данных из 0-1024 в 0-180 для управления сервомотором //analogValue = analogValue /5.689; //вместо функции map можно просто разделить данные на коэф. myservo1.write(analogValue); // отправляем получившийся угол поворота в сервомотор Serial.println (myservo1.read()); //отправляем в порт монитора значение угла поворота с сервомотора delay(10); // Задержка 10 мс. } |