#include <Servo.h>
Servo myServo; //
const int button1Pin = 2; // пин для первой кнопки
const int button2Pin = 3; // пин для второй кнопки
int pos = 90; // начальная позиция сервомотора
void setup() {
noInterrupts(); // Запрет трерываний
myServo.attach(9); // сервомотор к пину 9 Но движения не будет, т.к. прерывания запрещены.
myservo.write(pos); // pos - надо указать текущее положение, чтобы не было рывка.
interrupts(); // Разрешение прерываний.
pinMode(button1Pin, INPUT_PULLUP); // устанавливаем пин кнопки 1 как вход с подтяжкой
pinMode(button2Pin, INPUT_PULLUP); // устанавливаем пин кнопки 2 как вход с подтяжкой
}
void loop() {
if (digitalRead(button1Pin) == LOW) { // если нажата первая кнопка
pos += 1; // увеличиваем позицию
if (pos > 180) pos = 180; // ограничиваем до 180 градусов
myServo.write(pos); // устанавливаем позицию сервомотора
delay(15); // небольшая задержка для плавности
}
if (digitalRead(button2Pin) == LOW) { // если нажата вторая кнопка
pos -= 1; // уменьшаем позицию
if (pos < 0) pos = 0; // ограничиваем до 0 градусов
myServo.write(pos); // устанавливаем позицию сервомотора
delay(15); // небольшая задержка для плавности
}
}
В первом сообщении вы писали, что серва должна быть в том же положении, что и при выключении.
В этом коде у вас всегда используется 90 как начальное значение. Это противоречит первому сообщению.
Если вам надо запоминать значение угла при выключении, чтобы указать его же при включении, то надо придумать, как это делать. И если придумать не получится, то возможно отказаться от этого метода.
П.С. Я указал на некоторые особенности подключения Серво. Решать же эту задачу целиком я не готов.