Сделал робота, способного объезжать препятствия. Использовал: 1) arduino uno 2)обычный motor shield 3)сенсор sharp (10-80) За основу взял код с этого форума=>http://arduino.ru/forum/proekty/arduino-robot-dlya-nachinayushchikh Что нужно изменить в том коде(что вырезать, что переделать под мой шилд)?
ИМХО! Я думаю, вам нужно начать с того, что сесть и разобраться с каждой строчкой кода, который вы использовали, понять зачем она здесь и что делает, почитать книги по программированию и "хелпы" по синтаксису языка, а потом... потом этот вопрос который вы задали выше отпадет сам собой ! З.Ы. Почему все думают, что все форумчане сразу же бросятся писать код? Ведь это же так классно самому разобраться в чем то, понять, перенастроить, использовать какие то свои фишки в коде, а не тупо "скопипастить" код и потом смотреть как твоя поделка ездит, не понимая, что там происходит внутри, какие команды отдает ардуино и в какой момент, я понимаю когда спрашивают: я вот сделал так вот и так, но вот в такой момент времени у меня получается не так как я хочу, это другой вопрос, и тут интересно разобраться и вам и форумчанам. ИМХО!
Почитайте вики. Посмотрите видеоуроки. Полазайте по форуму. Погуглите - в сети масса хороших статей на тему программирования Ардуино и вообще о программировании. Попробуйте написать простую программу. Потом чуть сложнее. Не пытайтесь сразу запрограммировать робота, нужно двигаться по нарастанию сложности. Пока учитесь программировать, думайте потихоньку над будущим алгоритмом работы робота, прикиньте его сперва в общих чертах, затем детализируйте. Если что-то не получается и самостоятельно ответа найти не удается - тут помогут разобраться.
в добавок посоветовал бы вам начать с какого нибудь простого языка программирования например с бейсика, а выучив его вам не составит большого труда разобраться и с С++, есть очень хорошие видеоуроки от Джереми Блюма: http://wiki.amperka.ru/видеоуроки:1-первые-шаги http://www.jeremyblum.com/
Могу предложить свой код. Писал для машинки. Но его надо корректировать под свои двигатели, сенсоры и цели. Он просто заставляет машинку разворачиваться при виде препятствий. (сенсор сонар) Код (Text): #include <SoftwareSerial.h> #include <URMSerial.h> URMSerial urm; int speedl = 6; int speedr = 5; int left = 7; int right = 4; int getMeasurement() { // Request a distance reading from the URM37 switch(urm.requestMeasurementOrTimeout(DISTANCE, value)) // Find out the type of request { case DISTANCE: // Double check the reading we recieve is of DISTANCE type // Serial.println(value); // Fetch the distance in centimeters from the URM37 return value; break; case TEMPERATURE: return value; break; case ERROR: Serial.println("Error"); break; case NOTREADY: Serial.println("Not Ready"); break; case TIMEOUT: Serial.println("Timeout"); break; } return 0; } void FORWARD() { digitalWrite(right,LOW); digitalWrite(left,LOW); analogWrite(speedl,255); analogWrite(speedr,255); } void TURN() { digitalWrite(right,HIGH); digitalWrite(left,LOW); analogWrite(speedl,255); analogWrite(speedr,255); } void BACKWARD() { digitalWrite(right,HIGH); digitalWrite(left,HIGH); analogWrite(speedl,255); analogWrite(speedr,255); } void setup() { urm.begin(11,12,9600); // RX Pin, TX Pin, Baud Rate pinMode(left,OUTPUT); pinMode(right,OUTPUT); } void loop() { while ((getMeasurement()>40)||(digitalRead(A1)=HIGH) ||(digitalRead(A2)=HIGH)) { FORWARD(); } while (getMeasurement()<40) { TURN(); delay(800); } if ((digitalRead(A1)=LOW) ||(digitalRead(A1)=LOW)) { BACKWARD(); delay(300); TURN(); delay(800); } }
но если вы вообще не знакомы с си то тогда смысла нет юзать этот код. там много "личной" для каждого робота информации. надо много править.