Реализуется проект по примеру Загрузка скеча происходит с ошибкой В чём может быть проблема? Код (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; } } }
Попробуйте 4 строку Код (C++): #include заменить на Код (C++): #include <Servo.h> Директива #include означает включение в программу какой-либо библиотеки, и без имени файла (между знаками <>, если это стандартная библиотека, и между кавычками, если ваша собственная) не имеет смысла.
UPD. у вас #include должен импортировать библиотеку, а у вас она тупо не прописана. подключите библиотеку для Servo: Код (C++): //Вместо строчки #include перепишите так: #include <Servo.h>
Тоже решил подключиться, библиотеку прописал, но далее выдаёт ошибку: И ругается вот на эту строчку: Код (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
Особенность программирования в том, что можно написать программу для любых действий, которые только придут в голову. Но я же не знаю, какое действие по вашему мнению должна делать приведенная строчка, поэтому и сказать "как правильно" не могу. Исходный скетч по ссылке явно ошибочный, трудно сказать насколько эти ошибки глубоки, но даже если правильно расставить скобки и точки с запятой в этой строчке, то побегут другие ошибки - часть используемых переменных даже не объявлена. Идея в примере по ссылке объяснена достаточно, чтобы её понять и реализовать самостоятельно. Тем более что часть идей можно взять из неработающего скетча. Начните с простых примеров (одна серва, подключенная к макетной плате) и постепенно усложняйте, пока не получится то, что надо. Синтаксис языка Си++ можно и нужно посмотреть в книгах или справочниках. Начать можно отсюда: http://wiki.amperka.ru/
Спасибо большое за совет, но проблема так и не решена. Если бы я разбирался в книгах и справочниках навряд ли бы я сидел на форуме и общался бы со всеми вами друзья. Что там скрывать я чайник мне просто нужно что бы эта рыбёха поплыла как на видео и всё................................
Оригинал: http://www.open-electronics.org/robofish-create-your-robot-fish-with-arduino/ Там же и скетч и прочее...
что вы злой такой? У вас какая-нибудь беда? Мы можем вам чем-то помочь? У человека ведь ЗАРАБОТАЛО, а то что он ищет помощи в интернете, а не у преподавателей - это наверное не его вина, а его беда, а вина у преподавателей, а не у студентов.
РЕБЯТА СПАСИБО ЗА ПОДДЕРЖКУ МНЕ ДЕЙСТВИТЕЛЬНО КЛАССНО ПОМОГЛИ И КАК МНЕ КАЖЕТСЯ У МЕНЯ ПОЯВИЛОСЬ ХОББИ-ЭЛЕКТРОНИКА, ДВИЖЕНИЕ !!!