Три положения по кнопке

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

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

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

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

ОткудаКуда
Arduino Uno5V→СервоприводV+
Arduino UnoGND→СервоприводGND
Arduino UnoD9→СервоприводPWM
Arduino UnoD2→Кнопка1.l
Кнопка2.l→Arduino UnoGND

Скетч

#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(угол). Под нагрузкой ему нужно отдельное питание: от выводов платы серьёзная серва работать не будет.

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

Ещё примеры с деталью «Сервопривод»

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

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

Открыть «Три положения по кнопке» в симуляторе