roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 20:44

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Помогите с программным кодом!
СообщениеДобавлено: 20 янв 2011, 03:30 
Не в сети

Зарегистрирован: 20 янв 2011, 03:21
Сообщения: 4
Вот программный код для движения робота вперед/назад на полной скорости
void setup(){
pinMode(3,OUT); // Motor A1
pinMode(5,OUTPUT);// Motor A2
pinMode(6,OUTPUT); // Motor B2
pinMode(9,OUTPUT); // Motor B1
}void Forward() { // Подпрограмма движения робота вперед
digitalWrite(3,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(9,LOW);
} void Backward(){ // Подпрограмма движения робота вперед
digitalWrite(3,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(9,HIGH);
}
void loop(){
Forward();
delay(1000);
Backward();
delay(1000);
}

У меня есть пару вопросов.Что нужно поменять в этом коде, что бы робот двигался с меньшей скорость.или даже лучше как программируется скорость движения робота? как сделать так,что бы робот двигался вперед потом назад раза 3 и останавливался??
Помогите пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с программным кодом!
СообщениеДобавлено: 20 янв 2011, 09:30 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2010, 14:51
Сообщения: 979
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим
Какие драйвера двигателей у вас?
Для того, что бы останавливался...можно ввести условие if в котором проверяется переменная-счётчик...
типа:
Код:
int cnt = 0;
void loop(){
   if (cnt < 3){//выполняется пока cnt(счётчик) меньше трёх
     Forward();
     delay(1000);
     Backward();
     delay(1000);
     cnt++;//увеличивает счётчик на единицу
   }
}


Добавлено спустя 4 минуты 49 секунд:
do..while...можно использовать, вариантов много...

Добавлено спустя 2 минуты 22 секунды:
Хотя для робота, такой способ не очень подходит. Поскольку пока он движется во время delay(1000), программа не способна обрабатывать датчики...

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с программным кодом!
СообщениеДобавлено: 20 янв 2011, 11:02 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
робот не сможет ездить медленней или туда сюда пока не начнёшь изучать avr123.nm.ru - Краткий курс AVR
ты видимо не понимаешь что есть такое "Цикл" и как туда поставить условие чтобы робот делал 3 движения
это есть самые азы.
управление скоростью несложно но так же требует изучения.

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с программным кодом!
СообщениеДобавлено: 21 янв 2011, 02:17 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
А я правильно понимаю, что сейчас у человека робот с бешеной скоростью несется ровно одну секунду вперед, потом секунду назад, потом опять вперед и т.д.? И похоже комнаты (или зала, или стадиона) не хватает и надо, чтобы робот ехал помедленнее??? А то на стенах сколы, да и робот не выдерживает?

А еще "назад три раза" - это хорошо. Расстояние от Москвы до Питера - где-то семьсот с лишним тысяч раз...

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с программным кодом!
СообщениеДобавлено: 21 янв 2011, 21:59 
Не в сети

Зарегистрирован: 20 янв 2011, 03:21
Сообщения: 4
vadinator писал(а):
Какие драйвера двигателей у вас?
Для того, что бы останавливался...можно ввести условие if в котором проверяется переменная-счётчик...
типа:
Код:
int cnt = 0;
void loop(){
   if (cnt < 3){//выполняется пока cnt(счётчик) меньше трёх
     Forward();
     delay(1000);
     Backward();
     delay(1000);
     cnt++;//увеличивает счётчик на единицу
   }
}


Добавлено спустя 4 минуты 49 секунд:
do..while...можно использовать, вариантов много...

Добавлено спустя 2 минуты 22 секунды:
Хотя для робота, такой способ не очень подходит. Поскольку пока он движется во время delay(1000), программа не способна обрабатывать датчики...


Не знаю какие там драйвера, у меня есть конструктор POP-bot. вот хочу понять как вообще это работает.инструкция не как не помогает.Спасибо за ответ.

Добавлено спустя 49 секунд:
Myp писал(а):
робот не сможет ездить медленней или туда сюда пока не начнёшь изучать avr123.nm.ru - Краткий курс AVR
ты видимо не понимаешь что есть такое "Цикл" и как туда поставить условие чтобы робот делал 3 движения
это есть самые азы.
управление скоростью несложно но так же требует изучения.


Вот изучаю, но самому как то не разобраться,всё как то не понятно написано

Добавлено спустя 52 секунды:
dccharacter писал(а):
А я правильно понимаю, что сейчас у человека робот с бешеной скоростью несется ровно одну секунду вперед, потом секунду назад, потом опять вперед и т.д.? И похоже комнаты (или зала, или стадиона) не хватает и надо, чтобы робот ехал помедленнее??? А то на стенах сколы, да и робот не выдерживает?

А еще "назад три раза" - это хорошо. Расстояние от Москвы до Питера - где-то семьсот с лишним тысяч раз...


ДА всё именно так;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с программным кодом!
СообщениеДобавлено: 21 янв 2011, 22:45 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Что это за язык? Похож на С, но есть какие-то странные команды. Предлагаю сделать по простому. Попробовать ведь можно. Любой мотор обладает инерцией и не может мгновенно разогнаться и остановиться. Если выдать команду вперед на небольшое время, потом стоп на небольшое время, потом повторить эту пару команд нужное количество раз - робот обязан поехать с меньшей скоростью. Попробуйте, может получится.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с программным кодом!
СообщениеДобавлено: 22 янв 2011, 00:30 
Не в сети

Зарегистрирован: 20 янв 2011, 03:21
Сообщения: 4
Radist писал(а):
Что это за язык? Похож на С, но есть какие-то странные команды. Предлагаю сделать по простому. Попробовать ведь можно. Любой мотор обладает инерцией и не может мгновенно разогнаться и остановиться. Если выдать команду вперед на небольшое время, потом стоп на небольшое время, потом повторить эту пару команд нужное количество раз - робот обязан поехать с меньшей скоростью. Попробуйте, может получится.

В инструкции написано,что это С++. спасибо попробую.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с программным кодом!
СообщениеДобавлено: 22 янв 2011, 08:10 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2010, 14:51
Сообщения: 979
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим
Среда программирования Wiring для Arduino... вот статейка http://artspb.com/books/atmel/index.php?start=10
Для управления моторами в данном примере используется процедура Forward с параметрами скорости для левого и правого мотора...
Код:
void setup() {
pinMode(3,OUTPUT); // Motor A
pinMode(5,OUTPUT); // Motor A
pinMode(6,OUTPUT); // Motor B
pinMode(9,OUTPUT); // Motor B
pinMode(2,OUTPUT); // Swith Left
pinMode(4,OUTPUT); // Swith Right
}
void Forward(int Lspeed, int Rspeed) {
analogWrite(3,Lspeed);
digitalWrite(5,LOW);
analogWrite(6,Rspeed);
digitalWrite(9,LOW);
}
void Motor_Stop() {
digitalWrite(3,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(9,LOW);
}
void loop() {
Forward(80,255);
if(digitalRead(4)==0) {
Motor_Stop();
while(1);
}
}

Тоже самое пишется и для процедуры Backward...просто вместо дискретных сигналов для драйверов мотора (типа включил и выключил), на драйвер подаётся аналоговый (вернее широтно-импульсный) сигнал и мотор работает не на полной скорости а на пропорциональной заданному значению...
Читайте на форуме о Arduino и Wiring/Processing :)

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите с программным кодом!
СообщениеДобавлено: 22 янв 2011, 18:23 
Не в сети

Зарегистрирован: 20 янв 2011, 03:21
Сообщения: 4
это движение по кругу...когда я начинаю изменять что то...он у меня не движется..уже кучу времени пытаюсь втыкнуть в программный код..ничего не получается...
по идее нужно совместить то что у меня написано с движением по кругу...но че то не как не выходит


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO