Arduino:Примеры/Knob

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Управление радиоуправляемым сервомотором[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.

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