Куплю прошивку и схему подключения для ардуино нано. В чем заключается задача: при нажатии тактовой кнопки вал сервопривода поворачивается на определенное число градусов, затем, при повторном нажатии возвращается в исходное положение. Цена договорная
Код (C++): #include <Servo.h> #define SERVO_PIN 9 // пин, к которому подключена серва (желтый провод) #define BUTTON_PIN 2 // пин, к которому подключена кнопка. Второй вывод кнопки подключен к GND const unsigned int angle_min = 0; // начальный угол поворота сервы const unsigned int angle_max = 180; // конечный угол поворота сервы Servo myservo; void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { static boolean buttonReleased = true; if (!digitalRead(BUTTON_PIN) && buttonReleased) { myservo.attach(SERVO_PIN); myservo.write(myservo.read() ? angle_min : angle_max); delay(500); myservo.detach(); } buttonReleased = digitalRead(BUTTON_PIN); }
Я бы сделал ожидание факта нажатия дважды с периодом опроса, например 100 мс. Практика показывает, что кнопку ставят далеко от МК, и провода ловят помехи только так. Код (C++): void loop() { static boolean buttonReleased = true; if (!digitalRead(BUTTON_PIN) && !buttonReleased) { myservo.attach(SERVO_PIN); myservo.write(myservo.read() ? angle_min : angle_max); delay(500); myservo.detach(); } buttonReleased = digitalRead(BUTTON_PIN); delay(100); }