Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Knob

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Управление радиоуправляемым сервомотором[1]

Управление позицией радиоуправляемого сервомотора при помощи Arduino и потенциометра.

Этот пример использует библиотеку Servo.

Необходимое оборудование

  • Плата Arduino;
  • Сервомотор;
  • Потенциометр;
  • Провода-перемычки;

Цепь

Сервомоторы имеют три провода – для питания, заземления и передачи сигнала. Провод для питания, как правило, красного цвета и должен быть подключен к 5-вольтовому контакту (5V) на плате Arduino. Заземляющий провод, как правило, черного или коричневого цвета и должен быть подключен к «земле» (GND) на Arduino. Сигнальный провод, как правило, желтого или оранжевого цвета и должен быть подключен к 9-ому цифровому контакту на Arduino.

Потенциометр должен быть подключен таким образом, чтобы его боковые контакты были подсоединены к питанию и «земле», а центральный контакт – к 0-ому аналоговому контакту на Arduino.

Knob bb.png

Схема

Knob schem.png

Код

  1. // Управление позицией сервомотора при помощи потенциометра (переменного резистора).
  2. // Автор – Михал Ринотт (Michal Rinott, http://people.interaction-ivrea.it/m.rinott)
  3.  
  4. #include <Servo.h>
  5.  
  6. Servo myservo;  // создаем экземпляр класса Servo, чтобы управлять сервомотором
  7.  
  8. int potpin = 0;  // аналоговый контакт, используемый для подключения потенциометра
  9. int val;    // переменная, куда считываются данные от аналогового контакта
  10.  
  11. void setup()
  12. {
  13.   myservo.attach(9);  // привязываем сервомотор на 9-ом контакте к Servo-объекту
  14. }
  15.  
  16. void loop()
  17. {
  18.   val = analogRead(potpin);            // считываем значение потенциометра (значение между 0 и 1023)
  19.   val = map(val, 0, 1023, 0, 179);     // подгоняем полученное значение под диапазон работы сервомотора (значение между 0 и 180)
  20.   myservo.write(val);                  // задаем позицию сервомотора согласно преобразованному значению
  21.   delay(15);                           // ждем, пока сервомотор проделает действие
  22. }

См.также

  1. attach()
  2. write()
  3. map()
  4. analogRead()
  5. Servo library reference
  6. Sweep - sweep the shaft of a servo motor back and forth.

Внешние ссылки

  1. Arduino - Knob