Ручка поворачивает серво

Угол сервопривода повторяет положение ручки, а дребезг АЦП сглаживается.

Продвинутый уровень Arduino Uno C++
Схема подключения: Ручка поворачивает серво
Схема в симуляторе. Нажмите «Открыть в симуляторе», чтобы запустить её и поменять.

Что понадобится

Как подключить

ОткудаКуда
Arduino Uno5V→ПотенциометрVCC
Arduino UnoGND→ПотенциометрGND
Arduino UnoA0→ПотенциометрSIG
Arduino Uno5V→СервоприводV+
Arduino UnoGND→СервоприводGND
Arduino UnoD9→СервоприводPWM

Скетч

#include <Servo.h>

// Ручка на A0 → угол серво на D9. Чтобы вал не дёргался от шума АЦП,
// усредняем несколько измерений и двигаем серво только при заметной разнице.
Servo myservo;
int lastAngle = -1;

void setup() {
  myservo.attach(9);
  Serial.begin(9600);
}

int readAngle() {
  long sum = 0;
  for (int i = 0; i < 8; i++) sum += analogRead(A0);
  return map(sum / 8, 0, 1023, 0, 180);
}

void loop() {
  int angle = readAngle();
  if (lastAngle < 0 || abs(angle - lastAngle) >= 2) {
    myservo.write(angle);
    lastAngle = angle;
    Serial.print("угол ");
    Serial.println(angle);
  }
  delay(50);
}

Коротко о детали: Потенциометр

Переменный резистор: ручка делит напряжение между крайними выводами. Средний вывод даёт от нуля до напряжения питания и читается analogRead(). Самый простой способ ввести в скетч плавно меняющееся число.

Распиновка и все примеры →

Ещё примеры с деталью «Потенциометр»

Попробуйте сами

Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.

Открыть «Ручка поворачивает серво» в симуляторе