Помогите с кодом сервы

Тема в разделе "Arduino & Shields", создана пользователем Tony Stark, 5 янв 2013.

  1. Tony Stark

    Tony Stark Нерд

    что не так с этим кодом?
    #include <Servo.h>
    Servo servoMain;
    int green = 1;
    int red = 2;
    boolean val = false;
    void setup()
    {
    servoMain.attach(10);
    pinMode(green,OUTPUT);
    pinMode(3,INPUT);
    pinMode(red,OUTPUT);
    }
    void loop()
    {
    digitalWrite(green,HIGH);
    digitalWrite(red,LOW);
    if (digitalRead(3) == HIGH)
    val=!val;
    if(val == 0)
    {
    servoMain.write(270);
    digitalWrite(red,HIGH);
    delay(300);
    digitalWrite(green,LOW);
    }
    else if (val == 1)
    {
    servoMain.write(270);
    digitalWrite(green,HIGH);
    delay(300);
    digitalWrite(red,LOW);
    }
    }
     
  2. Tony Stark

    Tony Stark Нерд

    сигнал на вход 3 посылается с радио-няни то есть я нажимаю кнопку и все действие должно как бы свершиться но не тут то было и я не понимаю почему
     
  3. Vir

    Vir Гик

    Будьте добры оформить код в специальный тег CODE, для удобочитаемости. Не хочется ломать глаза...

    Код (Text):

    void setup()
    {
      blabla;
      if (foo == bar)
      {
         Serial.println("Пример хорошего оформления");
      }
    }
     
  4. Tony Stark

    Tony Stark Нерд

    Код (Text):
    #include <Servo.h>
    Servo servoMain;
    int green = 1;
    int red = 2;
    boolean val = false;
    void setup()
    {
      servoMain.attach(10);
      pinMode(green,OUTPUT);
      pinMode(3,INPUT);
      pinMode(red,OUTPUT);
    }
    void loop()
    {
      digitalWrite(green,LOW);
      digitalWrite(red,LOW);
      if (digitalRead(3) == HIGH)
      val=!val;
      if(val == 0)
      {
        servoMain.write(270);
        digitalWrite(red,HIGH);
        delay(300);
        digitalWrite(green,LOW);
      }
      else if (val == 1)
      {
        servoMain.write(270);
        digitalWrite(green,HIGH);
        delay(300);
        digitalWrite(red,LOW);
      }
    }
     
  5. pyro

    pyro Гик

    Эти две строки надо разместить в void setup{}, а так они выполняются каждый цикл.
    В сервопривод Вы посылаете одинаковое значение в каждом условии, к тому же это значение недопустимое. Длина импульса должна находится п ределах от 500 до 2500 (у разных приволов может незначительно отличаться).
     
  6. Tony Stark

    Tony Stark Нерд

    И еще вопрос: я на 3 пин входа сигнал посылаю с радио няни но сигнал там нестабилен - он то более высокий то менее это может как то повлиять на "размышления" Дуни?
     
  7. pyro

    pyro Гик

    Смотря на сколько ниже или выше см. даташит на Мегу.
     
  8. Tony Stark

    Tony Stark Нерд

    не на много всего на 0.5В это я думаю для дуни пустяк
     
  9. pyro

    pyro Гик

    я тоже думаю что не страшно