Потенциометр и сервопривод
Крутилка на A0 задаёт угол, сервопривод на D9 его отрабатывает. analogRead даёт 0…1023, map переводит в градусы, а длину импульса считает библиотека Servo.
Программа
// Потенциометр крутит сервопривод.
//
// Потенциометр — делитель напряжения: крайние выводы на +5 В и землю, средний
// на A0. analogRead возвращает 0…1023 — это НЕ вольты, а доля от опорного
// напряжения, и map переводит её в углы 0…180.
//
// Сервопривод угол «понимает» не по напряжению, а по длине импульса на сигнальном
// проводе. Считает её библиотека Servo — поэтому write(градусы), а не analogWrite.
#include <Servo.h>
const int POT = A0;
const int SIG = 9;
Servo arm;
int shown = -1;
void setup() {
arm.attach(SIG);
Serial.begin(9600);
}
void loop() {
int raw = analogRead(POT); // 0…1023
int deg = map(raw, 0, 1023, 0, 180); // 0…180°
arm.write(deg);
if (deg != shown) { // печатаем только когда угол сменился
shown = deg;
Serial.print("A0=");
Serial.print(raw);
Serial.print(" угол=");
Serial.println(deg);
}
delay(20); // серве нужно время доехать
}
Схема примера появится, когда загрузится страница: её собирает и считает движок цепей.