Помогите с сервой

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем 1SANTER1, 7 мар 2015.

  1. 1SANTER1

    1SANTER1 Нуб

    Привет народ, помогите со скетчем, сам не бум-бум :( Компоненты: серво мотор 180", 4кнопки, светодиод. 4 кнопки для поворота сервы на 0",45"135",180" градусов. Светодиод включается и горит пока серво находиться в одном из перечисленных положений. Что нужно: (серво на 90:) нажимаю кнопку, серво поворачивается на 0",при этом загорается св.диод и горит. Через 5 минут возвращается в положение 90" и св.диод гаснет . Или так, нажимаю кнопку, серво поворачивается на 0" (5 минут не прошло) нажимаю другую кнопку, серво поворачивается на 180", при этом св.диод горит, через 5 минут возвращается на 90" и св.диод гаснет. Проблема в том, что я незнаю как вернуть его через 5 минут после последнего действия на 90" :( Помогите плиз. Скетч который я нарисовал неподходит.

    #include<Servo.h>

    Servo myservo;
    int led = 9;
    int button_1 = 2;
    int button_2 = 3;
    int button_3 = 4;
    int button_4 = 5;
    int time = 50000;
    int val=0;

    void setup()
    {
    pinMode(led, OUTPUT);
    pinMode(button_1, INPUT);
    pinMode(button_2, INPUT);
    pinMode(button_3, INPUT);
    pinMode(button_4, INPUT);
    myservo.attach(8);
    }

    void loop()
    {
    val = digitalRead(button_1);
    if (val == HIGH)
    {
    digitalWrite(led, HIGH);
    myservo.write(0);
    delay(time);
    myservo.write(90);
    digitalWrite(led, LOW);
    }
    val = digitalRead(button_2);
    if (val == HIGH)
    {
    digitalWrite(led, HIGH);
    myservo.write(45);
    delay(time);
    myservo.write(90);
    digitalWrite(led, LOW);
    }
    val = digitalRead(button_3);
    if (val == HIGH)
    {
    digitalWrite(led, HIGH);
    myservo.write(135);
    delay(time);
    myservo.write(90);
    digitalWrite(led, LOW);
    }
    val = digitalRead(button_4);
    if (val == HIGH)
    {
    digitalWrite(led, HIGH);
    myservo.write(180);
    delay(time);
    myservo.write(90);
    digitalWrite(led, LOW);
    }

    }
     
  2. vvr

    vvr Инженерище

    Сначала доведи код без возврата, чтобы просто все кнопки нормально работали и серва их слушалась.
    На каждую кнопку заведи свою переменную.
    Сделай антидребезг контактов кнопок.
    Когда это заработает, то можно и возвратом сервы заняться.