Помогите добавить вторую кнопку

Тема в разделе "Arduino & Shields", создана пользователем abubakar, 29 авг 2017.

  1. abubakar

    abubakar Нерд

    Код (C++):
    #include <Servo.h>
    #define SERVO_PIN              9     // пин, к которому подключена серва (желтый провод)
    #define BUTTON_PIN             2     // пин, к которому подключена кнопка. Второй вывод кнопки подключен к GND
    const unsigned int angle_min = 20;    // начальный угол поворота сервы
    const unsigned int angle_max = 90;  // конечный угол поворота сервы
    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руб) НЕ РАЗВОД
     
  2. ostrov

    ostrov Гуру

    Повторить if с внутренностями под вторую кнопку.
     
  3. NikitOS

    NikitOS Король шутов Администратор

    Код (C++):
    #include <Servo.h>
    #define SERVO_PIN              9     // пин, к которому подключена серва (желтый провод)
    #define BUTTON_PIN             2     // пин, к которому подключена кнопка. Второй вывод кнопки подключен к GND
    #define b 3

    Servo myservo;

    void setup()
    {
      pinMode(BUTTON_PIN, INPUT_PULLUP);
      pinMode(b, INPUT_PULLUP);
    }

    void loop()
    {
      static boolean buttonReleased = true;
      if (!digitalRead(BUTTON_PIN) && buttonReleased)
      {
        myservo.attach(SERVO_PIN);
        myservo.write(20);
        delay(500);
        myservo.detach();
      }
    if (!digitalRead(b) && buttonReleased)
      {
        myservo.attach(SERVO_PIN);
        myservo.write(90);
        delay(500);
        myservo.detach();
      }
      buttonReleased = digitalRead(BUTTON_PIN);
    digitalRead(b);
    }
     
    Tomasina нравится это.
  4. NikitOS

    NikitOS Король шутов Администратор

    С вас 300 руб
     
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    BAR__MEN, качество кода растет :cool:
     
    NikitOS нравится это.
  6. NikitOS

    NikitOS Король шутов Администратор

    Эмм... Всмысле?!
     
  7. abubakar

    abubakar Нерд

    300 рублей не жалко, если бы он работал)
     
  8. NikitOS

    NikitOS Король шутов Администратор

    Что,неработает?! (
     
  9. abubakar

    abubakar Нерд

    Да(
     
  10. NikitOS

    NikitOS Король шутов Администратор

    А как неработает в чем проблема?!
     
  11. abubakar

    abubakar Нерд

    Когда дверь захлопывается то сервопривод толкает шпингалет. И в это время кнопка находится в режиме HIGH. С внутренней стороны она должна открываться кнопкой, а снаружи все работает с rfid.
     
  12. NikitOS

    NikitOS Король шутов Администратор

    Так а проблема в чем?!:confused:
     
  13. abubakar

    abubakar Нерд

    Этого я так и не понял. Не думаю что кнопка тупит. Может этого из-за другой кнопки которая в это время бывает в зажатом состоянии. Как ты думаешь?
     
  14. NikitOS

    NikitOS Король шутов Администратор

    Ну конечно
     
  15. abubakar

    abubakar Нерд

    нет. даже когда она не нажата все равно вторая кнопка не работает
     
  16. abubakar

    abubakar Нерд

    Не могу понять. Вроде бы все одинаково, попробую другую кнопку поставить
     
  17. NikitOS

    NikitOS Король шутов Администратор

    Даже не знал такой функции...
     
  18. NikitOS

    NikitOS Король шутов Администратор

    #include <Servo.h>
    #define SERVO_PIN 9 // пин, к которому подключена серва (желтый провод)
    #define BUTTON_PIN 2
    #define BUTTO_PIN 3

    Servo myservo;

    void setup()
    {

    pinMode(BUTTON_PIN, INPUT_PULLUP);
    pinMode(BUTTO_PIN, INPUT_PULLUP);
    }

    void loop()
    {

    if (!digitalRead(BUTTON_PIN)==true)
    {
    myservo.attach(SERVO_PIN);
    myservo.write(20);
    }
    if (!digitalRead(BUTTO_PIN)==true)
    {
    myservo.attach(SERVO_PIN);
    myservo.write(90);
    }

    }
     
  19. NikitOS

    NikitOS Король шутов Администратор

    Код (C++):

    #include <Servo.h>
    Servo servo;
    int bat =5;
    int bat2 =6;
    void setup(){
      pinMode(bat, INPUT_PULLUP);
      pinMode(bat2, INPUT_PULLUP);
      servo.attach(7);
      servo.write(0);
    }
    void loop(){
    int butt = digitalRead(bat);// считать текущее положение кнопки

    if(butt == HIGH){
        servo.write(90);

    }
    int butt2 = digitalRead(bat2);
    if(butt2 == HIGH){
        servo.write(0);

    }
    }
     
     
  20. abubakar

    abubakar Нерд

    Спасибо тебе за поддержку, но наверное проблема в другом. Не работает все равно(. Ладно завтра еще посмотрю