Конденсатор в даній схемі нам потрібен для того, щоб при включенні сервоприводу уникнути просідання живлення плати.
Не забувайте про те, що потрібно дотримуватись полярності елетролітіческого конденсатора. Коротка ніжка (з боку білої смуги на корпусі) - «мінус».
Ви можете з'єднати провід сервоприводу з макетною платою проводами «тато-тато»: коричневий це земля, червоний - живлення, помаранчевий - сигнал.
В даному експерименті ми підключаємо живлення сервоприводу до 5V-виходу Arduino. З одним сервоприводом плата впорається, але якщо в якомусь проекті вам потрібно більше серводвигунів, використовуйте спеціальні плати-драйвера з окремим джерелом живлення для серв.
Пояснення до коду// управляти сервоприводами (англ. Servo motor) самостійно
// не так то просто, але в стандартній бібліотеці вже все
// заготовлено, що робить задачу тривіальною
#include <Servo.h>
#define POT_MAX_ANGLE 270.0 // макс. кут поворота потенціометра
// оголошуємо об'єкт типу Servo з ім'ям myServo. Раніше ми
// використовували int, boolean, float, а тепер точно також
// використовуємо тип Servo, що надається бібліотекою. У разі
// Serial ми використовували об'єкт відразу ж: він уже був створений
// для нас, але у випадку з Servo, ми повинні зробити це явно.
// Адже в нашому проекті можуть бути одночасно кілька
// приводів, і нам знадобиться розрізняти їх по іменах
Servo myServo;
void setup()
{
// прикріплюємо (англ. attach) нашу серв до 9-му піну. Явний
// виклик pinMode не потрібен: функція attach зробить все за нас
myServo.attach(9);
}
void loop()
{
int val = analogRead(A0);
// на основі сигналу розуміємо реальний кут повороту движка.
// Використовуємо речові числа в розрахунках, але отриманий
// результат округляємо назад до цілого числа
int angle = int(val / 1024.0 * POT_MAX_ANGLE);
// звичайна серва не зможе повторити кут потенціометра на
// всьому діапазоні кутів. Вона вміє вставати в кути від 0 ° до
// 180 °. Обмежуємо кут відповідно
angle = constrain(angle, 0, 180);
// і, нарешті, подаємо серві команду встати в зазначений кут
myServo.write(angle);
}
В даному експерименті ми також маємо справу з об'єктом, на цей раз він потрібен для простого управління сервоприводом. Як зазначено в коментарі, на відміну від об'єкта Serial, об'єкти типу Servoнам потрібно явно створити: Servo myServo, попередньо підключивши бібліотеку <Servo.h>.
Далі ми використовуємо два методи для роботи з ним:
myServo.attach(pin)- спочатку «підключаємо» серв до порту, з яким фізично з'єднаний його сигнальний провід.
pinMode() не потрібна, метод attach() займеться цим.
myServo.write(angle) - задаємо кут, тобто позицію, яку повинен прийняти вал сервоприводу. Зазвичай це 0-180 °.
myServoтут це ім'я об'єкта, ідентифікатор, який ми придумуємо так само, як назви змінних. Наприклад, якщо ви хочете керувати двома захопленнями, у вас можуть бути об'єкти leftGripі rightGrip.
Ми використовували функцію int() для явного перетворення числа з плаваючою точкою в цілочисельне значення. Вона приймає в якості параметра значення будь-якого типу, а повертає ціле число. Коли в одному вираженні ми маємо справу з різними типами даних, потрібно подбати про те, щоб не отримати непередбачуваний помилковий результат.