Здравствуйте, у меня сервопривод на 180 градусов, ардуино Леонардо и тактовая кнопка . Я хочу чтобы при одном нажатии сервопривод поворачивался на 180 градусов, при повторном нажатии чтобы сервопривода поворачивался в другую сторону на 180 градусов. кто сделает работающуюю программу получит 100 рублей
не надо тратить 100 рублей. открываем примеры из библиотеки серво и доводим под свои нужды. второй вариант - гуглим и находим тыщи примеров связки кнопка-серва
Ну раз ZaikaBlogs так и не появился, выложу ка я тут код, который уже давно валяется у меня в скетчбуке, был сделан на коленке и с закрытыми глазами, потому что очень просил клиент. Но работает Сразу предупреждаю: комментарии в коде скорее всего лгут и скетч делает совсем чуть-чуть не то, что нужно вам. Основано на http://wiki.amperka.ru/конспект-arduino:кнопочный-переключатель Код (C): #include <Servo.h> #define BUTTON_PIN 3 #define LED_PIN 13 #define SERVO 9 boolean buttonWasUp = true; // была ли кнопка отпущена? boolean ledEnabled = false; // включен ли свет?\ Servo myServo; void setup() { pinMode(LED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); myServo.attach(SERVO); } void loop() { // определить момент «клика» несколько сложнее, чем факт того, // что кнопка сейчас просто нажата. Для определения клика мы // сначала понимаем, отпущена ли кнопка прямо сейчас... boolean buttonIsUp = digitalRead(BUTTON_PIN); // ...если «кнопка была отпущена и (&&) не отпущена сейчас»... if (buttonWasUp && !buttonIsUp) { // ...может это «клик», а может и ложный сигнал (дребезг), // возникающий в момент замыкания/размыкания пластин кнопки, // поэтому даём кнопке полностью «успокоиться»... delay(10); // ...и считываем сигнал снова buttonIsUp = digitalRead(BUTTON_PIN); if (!buttonIsUp) { // если она всё ещё нажата... // ...это клик! Переворачиваем сигнал светодиода ledEnabled = !ledEnabled; digitalWrite(LED_PIN, ledEnabled); } } // запоминаем последнее состояние кнопки для новой итерации buttonWasUp = buttonIsUp; if (ledEnabled) //если светодиод горит - то поворачиваем на 45 град { myServo.write(45); } else { myServo.write(90); //а если нет - то поворачиваем на 90 град } }