робот на Уз дальномере
- Войдите на сайт для отправки комментариев
Сб, 18/07/2015 - 18:37
Привет всем прошу как не когда раньше помощи для моего робота скетч имеется но работает не коректно этот датчик он не всегда срабатывает иногда робот врезается и стоит на месте так что чем не буть помогите и прижелание добавте серво в скетч чтоб как бы голова крутилась робота
#define trigPin 5 #define echoPin 6 int motorPin = 8; //right side to IB - forwward int motorPin2 = 9; //left side to IA - forwward int motorPin3 = 10; //right side to IA - backward int motorPin4 = 11; //left side to IB - backward void setup() { Serial.begin (9600); pinMode(motorPin, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void forward(){ digitalWrite(motorPin, HIGH); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, LOW); } void backward() { digitalWrite(motorPin, LOW); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, HIGH); } void turnLeft() { digitalWrite(motorPin, HIGH); digitalWrite(motorPin2, LOW); digitalWrite(motorPin3, LOW); digitalWrite(motorPin4, HIGH); } void turnRight() { digitalWrite(motorPin, LOW); digitalWrite(motorPin2, HIGH); digitalWrite(motorPin3, HIGH); digitalWrite(motorPin4, LOW); } int CheckDistance() // Проверяем расстояние { long duration, distance; //Длительность расстояния digitalWrite(trigPin, LOW); // Добавить эту строку delayMicroseconds(2); // 2 Добавить эту строку digitalWrite(trigPin, HIGH); delayMicroseconds(10); // Добавить эту строку digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; //29.1 return distance; } void loop() { int testDistance = CheckDistance(); /// получить расстояние до объекта с помощью команды ping if (testDistance >= 30 || testDistance <= 0) /// если объект находится более чем в 30 см от него идет вперед { forward(); } else /// объект находится ближе, чем 30 см, поворачивает направо { turnRight(); } delay(500); ///ждать пол сек до следующего пинга }
из вашего поста не понятно, что за железка, сколько моторов и каким образом она уравляется.
с дальномером понятно, допустим по какой-то причине он глючит, но что именно происходит в момент когда робот врезается и стоит на месте, каковы показания дальномера?
какие моторы? шаговые или роторные? если роторные то задержка здесь не нужна, т.к. за это время робот может проделать недопустимо большой путь...
Обычный тех калесный робот 2wd 3й от мебельного столика .
показания с дальномера нормальные
а то что он врезается в программе все дела а как ее мне переписать если вопще не разу не брался у видел готовый скетч заказал игрушку и все думал ездить будет а тут на оборот
на самом деле причин может быть масса, от ошибки в программе до, как вы уже убедились, шерсти в колесах и варианты устрания глюков так же могут отличаться радикально...
все еще недостаточно информации. судя по всему у вас обычные роторные моторчике в этом случае delay(500) не нужен, да и вообще по любому он не нужет, тем более что на момент измерений робот продолжает свое движение в заданном направлении.
так же интересно как себя ведет робот после того как врезался и застрял, если его руками поднять и переместить на другое место - он поедет дальше или так же будет тупить? да и вообще если его поднять колеса крутятся?
опять же застряет когда упирается в стену или исключительно какой-нибудь тонкий/узкий объект типа ножки стула?
где брали пример скетча?
по хорошему нужно выводить лог с показаниями дальномера вполне возможно всплывут какие-нибудь аномалии
где брал не помню я эти примеры давно собирал по инету. а что в место delay(500) писать? да я думаю тут еще один намечается скетч но тут уже другое подключил двигатели как там на картинке и даже в скетче видно как их подключать .робот ездиет как ему вздумается и попрежнему ультрозвукоговой дальномер не совсем точно реагирует.
http://www.khnu.km.ua/root/kaf/ksm/sayt2/robot.htm
delay(500) - это задержка, если ее убрать (т.е. удалить строчку или закомментировать), то опрос датчика и управление двигателями будет осуществляться без задержки, что вообще-то логично особенно если под ногами у робота может болтаться кошка
еще такое "странное" поведение может быть из-за разряженных батарей, плохого контакта в цепях и так же из-за неверной установки дальномера (например наклонен вниз, либо неровный и/или "волосатый" (ковер) пол
вы мне не напишете простенький код чтоб мне от него плясать дальше буду признателен спс
посмотри мож пригодится
ребенке делал ездит кричит и спотыкается ))))
Спасибо попробую ))
Кто не буть погите переделать код (kayot ) пользователя на 2 wd я не селен в программирование на деюсь на ваше понимание )
дык а в чем же ты силен тогда ?
там на 2wd и сделано
заточено под драйвер двигателя LM298
дык а в чем же ты силен тогда ?
там на 2wd и сделано
заточено под драйвер двигателя LM298
А у Вас чей Мега
не понятно как подключать к LM298N к ардуино уно ?
И не нашел к какому пину подключина Серво
хотябы картинку показали бы или проект как все это выглядит потаму что половину не понял что у вас там за билеотеки обьявлены короче наглядо посмотреть бы .
могу послать
могу не послать
глаза мыть нужно по утрам (серва на 3 пине )
картинка внутри скетча (для особо одаренных)
библиотек там кроме сервы нет
все остальное в гугле
Спасибо