Три положения по кнопке
Каждое нажатие переводит вал в следующую позицию: 0°, 90°, 180°.

Что понадобится
Как подключить
| Откуда | Куда | |||
|---|---|---|---|---|
| Arduino Uno | 5V | → | Сервопривод | V+ |
| Arduino Uno | GND | → | Сервопривод | GND |
| Arduino Uno | D9 | → | Сервопривод | PWM |
| Arduino Uno | D2 | → | Кнопка | 1.l |
| Кнопка | 2.l | → | Arduino Uno | GND |
Скетч
#include <Servo.h>
// Кнопка на D2 перебирает положения из массива.
Servo myservo;
const int ANGLES[3] = { 0, 90, 180 };
int idx = 0;
bool lastLevel = HIGH;
void setup() {
myservo.attach(9);
pinMode(2, INPUT_PULLUP);
Serial.begin(9600);
myservo.write(ANGLES[0]);
}
void loop() {
bool level = digitalRead(2);
if (lastLevel == HIGH && level == LOW) { // момент нажатия
idx = (idx + 1) % 3;
myservo.write(ANGLES[idx]);
Serial.print("угол ");
Serial.println(ANGLES[idx]);
delay(30); // от дребезга
}
lastLevel = level;
delay(20);
}
Коротко о детали: Сервопривод
Сервопривод поворачивает вал в заданное положение от 0 до 180° и удерживает его. Угол задаётся шириной импульса, в скетче — Servo.write(угол). Под нагрузкой ему нужно отдельное питание: от выводов платы серьёзная серва работать не будет.
Ещё примеры с деталью «Сервопривод»
Попробуйте сами
Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.
Открыть «Три положения по кнопке» в симуляторе