робот на УЗ дальномере
- Войдите на сайт для отправки комментариев
Сб, 18/07/2015 - 14:20
помогите разобраться в скетче не устаревает работа Уз дальномера не всегда срабатывает на препятствия иногда даже врезается расстояния менял с 30 до 45 но тогда он просто на начинает крутится на одном месте.
#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); ///ждать пол сек до следующего пинга }
робот паказал еще один пример если добавить как на писал выше 30-45 и я решил добавить еще 5 то УЗ дальномер стал не у варачиваться от припятствий а на оброт ехать на них во так как то (
А почему по Вашему мнению робот при данной логике работы не должен врезаться в препятствия?
И что означает дистанция меньше 0?
А почему по Вашему мнению робот при данной логике работы не должен врезаться в препятствия?
И что означает дистанция меньше 0?
да робот врезается и стоит на месте а какая долна тогда быть дистанция ?
кто не буть под скажите почему одно колесо крутится бысрее чем второе да и робот когда едит прямо из за этого он сварачивает в прово я сначало думал из за дальномера но до припятствия долеко еще
А почему по Вашему мнению робот при данной логике работы не должен врезаться в препятствия?
И что означает дистанция меньше 0?
да робот врезается и стоит на месте а какая долна тогда быть дистанция ?
У Вас там есть строка:
109
if
(testDistance >= 30 || testDistance <= 0)
/// если объект находится более чем в 30 см от него идет вперед
Что она означает?
кто не буть под скажите почему одно колесо крутится бысрее чем второе да и робот когда едит прямо из за этого он сварачивает в прово я сначало думал из за дальномера но до припятствия долеко еще
То, что моторы крутятся с немного различающейся скоростью - это нормально. Способ борьбы - обратная связь. Т.е. нужно каким-либо способом отслеживать траекторию робота - энкодером, компасом, гтроскопом или еще каким прибором, и принудительно подавать на тот мотор, что крутится быстрее, пониженное напряжение, чтобы компенсировать разброс параметров.
кто не буть под скажите почему одно колесо крутится бысрее чем второе да и робот когда едит прямо из за этого он сварачивает в прово я сначало думал из за дальномера но до припятствия долеко еще
То, что моторы крутятся с немного различающейся скоростью - это нормально. Способ борьбы - обратная связь. Т.е. нужно каким-либо способом отслеживать траекторию робота - энкодером, компасом, гтроскопом или еще каким прибором, и принудительно подавать на тот мотор, что крутится быстрее, пониженное напряжение, чтобы компенсировать разброс параметров.
все это круто но я нашел в чем была причина (кашачья шерть на крутилась):)
Одно другого не исключает.
Теперь, когда очевидный дефект устранен, робот будет продолжать ездить кругами. Только круги будут большего диаметра.
нет ездит пряма не угадали)
А я не гадаю, я говорю точно.
Ездить "прямо" она не может в принципе. Самая последняя причина - потому что Земля круглая. Но перед ними идут причины, о которых я писал выше - разброс в КПД, сопротивлении обмоток двигателей и подводящих проводов, в радиусе и коэффициенте сцепления колес, различии в нагрузке на колеса и пр.
Так что, если Вы чего-то не замечаете, еще не значит, что этого нет.
Прикрепите на тележку лазерную указку, прицельтесь ею в определенное мето и запустите робота. А потом посмотрите, насколько ушла точка прицела.
А я не гадаю, я говорю точно.
Ездить "прямо" она не может в принципе. Самая последняя причина - потому что Земля круглая. Но перед ними идут причины, о которых я писал выше - разброс в КПД, сопротивлении обмоток двигателей и подводящих проводов, в радиусе и коэффициенте сцепления колес и пр.
Так что, если Вы чего-то не замечаете, еще не значит, что этого нет.
Прикрепите на тележку лазерную указку, прицельтесь ею в определенное мето и запустите робота. А потом посмотрите, насколько ушла точка прицела.
ты еще раскажи ему что одна нога короче другой и в лесу можно ходить кругами.
ты еще раскажи ему что одна нога короче другой и в лесу можно ходить кругами.
давайте отрежем Сусанину ногу!
себе отрезай руки с ногами )
себе отрезай руки с ногами )
прикольно :)))) Клапауций 999 угадал фамилию?:
похоже что проблемы не в скетче, а в железе... читаем про траблы с питанием (УЗД), читаем про траблы с источником питания. к слову, а он какой этот источник питания... посадить на провода (для теста). сколько току требует УЗД для импульса?
и, отвечаем на пост5, мне тоже стало интересно (в смысле ошибка или умысел?)
себе отрезай руки с ногами )
прикольно :)))) Клапауций 999 угадал фамилию?:
похоже что проблемы не в скетче, а в железе... читаем про траблы с питанием (УЗД), читаем про траблы с источником питания. к слову, а он какой этот источник питания... посадить на провода (для теста). сколько току требует УЗД для импульса?
и, отвечаем на пост5, мне тоже стало интересно (в смысле ошибка или умысел?)
скинте ссылки на траблы
скинте ссылки на траблы
Вас тоже GOOgle забанил??? (Puhlyaviy) в самом верху "поиск"
ну к примеру раз и два