Помогите подключить сервомашинки

Тема в разделе "Arduino & Shields", создана пользователем semaynin, 5 фев 2016.

  1. semaynin

    semaynin Нуб

    Реализуется проект по примеру
    Загрузка скеча происходит с ошибкой
    В чём может быть проблема?

    Код (C++):
    // ROBOFISH
    // di Segatello Mirco

    #include
    Servo Servo1, Servo2, Servo3;  // create servo object to control a servo

    int i, time, obstacle;                  
    int pos1, pos2, pos3;      // posizione del servo RAW
    int pos1R, pos2R, pos3R;   // posizione del servo
    int phase=45;              // fase (0°-90°)
    int velocity=2000;         // velocità (msec for 360°)
    int maxDeflexion=20;       // gradi massimi di flessione
    int maxDefobs=20;          // deflessione aggiunta durante un ostacolo
    int actualTime;
    float shift;
    const int center1=98;      // posizione centrale
    const int center2=90;
    const int center3=105;
    const int sens_SX=5;       // Sensore sinistro
    const int sens_DX=6;       // Sensore destro
    const int lostTime=3000;   // tempo ritardo ripartenza da osatcolo (in millesimi)

    void setup()
    {
      Servo1.attach(4);        // tronco
      Servo2.attach(3);        // coda
      Servo3.attach(2);        // pinna
      pinMode(sens_SX, INPUT);  
      pinMode(sens_DX, INPUT);  
      pinMode(13, OUTPUT);
      time=velocity/360;
      shift=0;

    /*
      // usare questo spezzone di codice per
      // tarare la posizione di centro dei servi
      Servo1.write(center1);                
      Servo2.write(center2);
      Servo3.write(center3);  
      delay(10000);
    */

    }

    void loop()
    {
      for (i=0; i<360; i++) {

      pos1 = i+2*phase;
      pos2 = i+phase;
      pos3 = i;

      if (pos1>359) pos1-=360;
      if (pos2>359) pos2-=360;
      if (pos3>359) pos3-=360;

      if (pos1>179) pos1=360-pos1;  // 180° in avanti e 180° indietro
      if (pos2>179) pos2=360-pos2;  // 180° in avanti e 180° indietro
      if (pos3>179) pos3=360-pos3;  // 180° in avanti e 180° indietro

      // scalo la posizione dei servi
      pos1R=map(pos1,0,180,center1-maxDeflexion-obstacle,center1+maxDeflexion-obstacle);
      pos2R=map(pos2,0,180,center2-maxDeflexion-obstacle,center2+maxDeflexion-obstacle);    
      pos3R=map(pos3,0,180,center3-maxDeflexion-obstacle,center3+maxDeflexion-obstacle);  

      Servo1.write(pos1R);         // posizionamento Servo1      
      Servo2.write(pos2R);         // posizionamento Servo2
      Servo3.write(pos3R);         // posizionamento Servo3  
      delay(time);                 // ritardo che definisce il tempo di ciclo

      obstacle=int(shift);

      if (digitalRead(sens_DX)==0) {  // rilevato ostacolo sulla destra
          if (obstacle<maxdefobs) shift="shift+0.05;" traslo="" lentamente="" il="" neutro="" dei="" servi="" actualtime="millis();" }="" if="" (digitalread(sens_sx)="=0)" {="" rilevato="" ostacolo="" sulla="" sinistra="" (obstacle=""> (-maxDefobs)) shift=shift-0.05; // traslo lentamente il neutro dei servi
          actualTime=millis();
      }  

      // ritorno alla navigazione regolare dopo un certo tempo
      if (digitalRead(sens_SX)==1 && digitalRead(sens_SX)==1 && obstacle!=0)
          if (millis()>actualTime+lostTime) {
              if (shift>0) shift=shift-0.05;
              if (shift<0) shift=shift+0.05;
          }
      }
    }
     
  2. CutToSleep

    CutToSleep Нерд

    Попробуйте 4 строку
    Код (C++):
    #include
    заменить на

    Код (C++):
    #include <Servo.h>
    Директива #include означает включение в программу какой-либо библиотеки, и без имени файла (между знаками <>, если это стандартная библиотека, и между кавычками, если ваша собственная) не имеет смысла.
     
  3. semaynin

    semaynin Нуб

    Спасибо за внимание, но всё же выдаёт ошибку......
     
  4. semaynin

    semaynin Нуб

    РЕБЯТА ПОМОГИТЕ !!!! Мой ДИплом накрывается медным тазом хоть Волком ВОЙЙЙЙ
     
  5. CryNET

    CryNET Гик

    UPD.
    у вас #include должен импортировать библиотеку, а у вас она тупо не прописана.
    подключите библиотеку для Servo:
    Код (C++):
    //Вместо строчки #include перепишите так:
    #include <Servo.h>
     
    Последнее редактирование: 6 фев 2016
  6. Andurio

    Andurio Нуб

    Тоже решил подключиться, библиотеку прописал, но далее выдаёт ошибку:
    И ругается вот на эту строчку:
    Код (C++):
    if (obstacle<maxdefobs) shift="shift+0.05;" traslo="" lentamente="" il="" neutro="" dei="" servi="" actualtime="millis();" }="" if="" (digitalread(sens_sx)="=0)" {="" rilevato="" ostacolo="" sulla="" sinistra="" (obstacle=""> (-maxDefobs)) shift=shift-0.05; // traslo lentamente il neutro dei servi
     
  7. Sindbad

    Sindbad Гик

    Ну так строчка, мягко говоря, синтаксису С/С++ не соответствует.
     
  8. Andurio

    Andurio Нуб

    Подскажите, как правильно её записать.
     
  9. semaynin

    semaynin Нуб

    Да да подскажите пожалуйста.
     
  10. Sindbad

    Sindbad Гик

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

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

    Идея в примере по ссылке объяснена достаточно, чтобы её понять и реализовать самостоятельно. Тем более что часть идей можно взять из неработающего скетча.

    Начните с простых примеров (одна серва, подключенная к макетной плате) и постепенно усложняйте, пока не получится то, что надо.

    Синтаксис языка Си++ можно и нужно посмотреть в книгах или справочниках.

    Начать можно отсюда: http://wiki.amperka.ru/
     
  11. semaynin

    semaynin Нуб

    Спасибо большое за совет, но проблема так и не решена. Если бы я разбирался в книгах и справочниках навряд ли бы я сидел на форуме и общался бы со всеми вами друзья. Что там скрывать я чайник мне просто нужно что бы эта рыбёха поплыла как на видео и всё................................
     
  12. CryNET

    CryNET Гик

  13. semaynin

    semaynin Нуб

    УУУУУУРРРРРААААААААА РЕБЯТА ЗАРАБОТАЛО ОГРОМНОЕ ВСЕМ СПАСИБО
     
  14. Vad33

    Vad33 Капитан-оригинал

    Ну вот, еще на одного дипломированного нуба стало больше. :)
     
  15. Onkel

    Onkel Гуру

    что вы злой такой? У вас какая-нибудь беда? Мы можем вам чем-то помочь?
    У человека ведь ЗАРАБОТАЛО, а то что он ищет помощи в интернете, а не у преподавателей - это наверное не его вина, а его беда, а вина у преподавателей, а не у студентов.
     
  16. semaynin

    semaynin Нуб

    РЕБЯТА СПАСИБО ЗА ПОДДЕРЖКУ МНЕ ДЕЙСТВИТЕЛЬНО КЛАССНО ПОМОГЛИ И КАК МНЕ КАЖЕТСЯ У МЕНЯ ПОЯВИЛОСЬ ХОББИ-ЭЛЕКТРОНИКА, ДВИЖЕНИЕ !!!