Arduino:Примеры/Knob

Материал из Онлайн справочника
Версия от 09:27, 14 декабря 2016; Myagkij (обсуждение | вклад) (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

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


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

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

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

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

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

Цепь

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

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

Схема

Код

// Управление позицией сервомотора при помощи потенциометра (переменного резистора). 
// Автор – Михал Ринотт (Michal Rinott, http://people.interaction-ivrea.it/m.rinott)

#include <Servo.h> 
 
Servo myservo;  // создаем экземпляр класса Servo, чтобы управлять сервомотором 
 
int potpin = 0;  // аналоговый контакт, используемый для подключения потенциометра
int val;    // переменная, куда считываются данные от аналогового контакта 
 
void setup() 
{ 
  myservo.attach(9);  // привязываем сервомотор на 9-ом контакте к Servo-объекту 
} 
 
void loop() 
{ 
  val = analogRead(potpin);            // считываем значение потенциометра (значение между 0 и 1023) 
  val = map(val, 0, 1023, 0, 179);     // подгоняем полученное значение под диапазон работы сервомотора (значение между 0 и 180) 
  myservo.write(val);                  // задаем позицию сервомотора согласно преобразованному значению 
  delay(15);                           // ждем, пока сервомотор проделает действие 
}

См.также

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

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