Помогите с кодом

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Максимус-Бог, 27 окт 2015.

  1. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Код (C++):
    #include <Servo.h>
    #define BUZZER_PIN    9
    #define FIRST_KEY_PIN 2
    #define KEY_COUNT     3
    #define f_but 6
    #define s_but 7
    Servo myServo;
    void setup()
    {
      pinMode(BUZZER_PIN, OUTPUT);
      myServo.attach(10);
    }
    void loop()
    {
      for (int i = 0; i < KEY_COUNT; ++i) {
        int keyPin = i + FIRST_KEY_PIN;
        boolean keyUp = digitalRead(keyPin);
        if (!keyUp) {
          int frequency = 3500 + i * 500;
          tone(BUZZER_PIN, frequency, 20);
        }
      }
         digitalRead(f_but, myServo.write(0));
       digitalRead(s_but, myServo.write(180)); // эту строчку подсвечивает
    }
     
  2. Tomasina

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

    Код (C++):
    digitalRead(f_but, myServo.write(0));
    напишите словами что тут должно быть, как это должно работать.
     
  3. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    когда я нажимаю на кнопку, серва встаёт в положение 0
     
  4. Tomasina

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

    а в коде написано: прочитать состояние пина(пин 6, установить серву в 0)

    Такой бред и не должен работать. ;)
     
  5. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Код (C++):
      if (digitalRead(f_but, HIGH)){
      myServo.write(0);
      }
      if (digitalRead(s_but, HIGH)){
      myServo.write(180);
      }
    }
    я поменял, опять ошибка
     
  6. Megakoteyka

    Megakoteyka Оракул Модератор

  7. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Как тогда сделать?
     
  8. Megakoteyka

    Megakoteyka Оракул Модератор

    Справку принципиально не читаете?
    Код (C++):
    if(digitalRead(f_but))
      myServo.write(0);
    if(digitalRead(s_but))
      myServo.write(180);
     
  9. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    у меня так сервомотор вибрирует
     
  10. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    справку я прочитал, но не понял, как ардуино определит, в каком положении должна быть кнопка.
     
  11. DrProg

    DrProg Вечный нерд

    Если порты 6 и 7 оба в HIGH то и будет вибрировать.
     
    ИгорьК нравится это.
  12. Onkel

    Onkel Гуру

    может так лучше будет, последние строки
    else if(digitalRead(s_but))
    myServo.write(180);
     
  13. DrProg

    DrProg Вечный нерд

    Надо знать что за кнопки и какого хрена они одновременно обе нажаты, что формирует противоречивые данные. Разобраться и исключить.
     
    ИгорьК нравится это.
  14. Onkel

    Onkel Гуру

    интуитивно кажется, что бог хотел сделать "какую последнюю нажал - туда серва и встала" Тогда надо не 1, а нулями выставлять серву.
     
  15. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    да я так и хочу, а получается лажа какая-то.
     
  16. DrProg

    DrProg Вечный нерд

    Схему сборки нарисуйте, это многое объяснит.
     
    ИгорьК нравится это.
  17. Onkel

    Onkel Гуру

    так я вам, уважаемый бог, уже ответил -примерно так

    Код (C++):
    if(!digitalRead(f_but))
      myServo.write(0);
    if(!digitalRead(s_but))
      myServo.write(180);
     
    кнопка у вас я надеюсь на землю замыкает и пины к Vcc подтянуты?
    Есть правда в моем коде тонкое место - не уверен, что у ардуины ! означает "логическое не".
     
  18. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    завтро посмотрю с этим кодом
     
  19. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    20151028_001319.jpg провод - земля, резистор 10к - vcc.
     
  20. Onkel

    Onkel Гуру

    это конечно дело десятое, но имхо хороший тон - представить схему, а не фото. Кстати во время рисования схемы 95% ошибок (если они были) обнаруживается, так что это хорошо и само по себе. А так разбираться куда пошел один из 4 желтых проводков - на любителя. Если человек (и даже сам бог) просит совета, то он и сам должен серьезно подойти к своей просьбе.