серво

Тема в разделе "Arduino & Shields", создана пользователем Алексей Схоменко, 30 май 2013.

  1. Народ помогите с написанием программы, надо чтоб серва делала поворот от 0 до 180 и обратно и число таких циклов задавалось с переменного резистора( потенциометра) тоесть повернул ручку резистора а серва сделал одинг цикл еще повернул 2 и так далее
     
  2. можно такое сделать? если не сложно киньте текст программы. Заранее благодарен!
     
  3. Mitrandir

    Mitrandir Гуру

    Код (C):


    #define SERVO_TIME 2000
    #define MAX_LOOP_NUM 20
    #define SERVO 9
    #define POT 8

    int servCnt;

    void setup()
    {
     myservo.attach(SERVO);

     servCnt = map(analogRead(POT),0,1023,0, MAX_LOOP_NUM);  ;
    }

    void loop()
    {
      int cServCnt = map(analogRead(POT),0,1023,0, MAX_LOOP_NUM);
      if(cServCnt != servCnt)
      {
         for(int i = 0;i<cServCnt;i++)
         {     
            myservo.write(180);
            delay(SEVO_TIME);
                    myservo.write(0);
            delay(SEVO_TIME);
         }
         servCnt = cServCnt ;
      }


    }
     
    nailxx нравится это.
  4. Спасибо большое!
     
  5. Mitrandir

    Mitrandir Гуру

    SERVO_TIME подгони под свою серву - сколько времени нужно ей для воворота
     
  6. Mitrandir

    Mitrandir Гуру

    немного подправлю код:
    Код (C):
    #define SERVO_TIME 2000
    #define MAX_LOOP_NUM 20
    #define SERVO 9
    #define POT 8

    int servCnt;

    void setup()
    {
     myservo.attach(SERVO);

     servCnt = map(analogRead(POT),0,1023,0, MAX_LOOP_NUM);  ;
    }

    void loop()
    {
      int cServCnt = map(analogRead(POT),0,1023,0, MAX_LOOP_NUM);
      if(cServCnt != servCnt)
      {
         for(int i = 0;i<cServCnt;i++)
         {   
            myservo.write(180);
            delay(SEVO_TIME);
                    myservo.write(0);
            delay(SEVO_TIME);
         }
         cServCnt = map(analogRead(POT),0,1023,0, MAX_LOOP_NUM);
         servCnt = cServCnt ;
      }
    }
    в первом варианте, если повернуть потенциометр во время работы сервы, то она сразу же пойдет на новый цикл поворотов
     
  7. Спасибо все ок!