roboforum.ru

Технический форум по робототехнике.

Помогите с программным кодом!

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Помогите с программным кодом!

Сообщение AvK » 20 янв 2011, 03:30

Вот программный код для движения робота вперед/назад на полной скорости
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 и останавливался??
Помогите пожалуйста.
AvK
 
Сообщения: 4
Зарегистрирован: 20 янв 2011, 03:21

Re: Помогите с программным кодом!

Сообщение vadinator » 20 янв 2011, 09:30

Какие драйвера двигателей у вас?
Для того, что бы останавливался...можно ввести условие 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), программа не способна обрабатывать датчики...
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: Помогите с программным кодом!

Сообщение Myp » 20 янв 2011, 11:02

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

Re: Помогите с программным кодом!

Сообщение dccharacter » 21 янв 2011, 02:17

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

А еще "назад три раза" - это хорошо. Расстояние от Москвы до Питера - где-то семьсот с лишним тысяч раз...
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Помогите с программным кодом!

Сообщение AvK » 21 янв 2011, 21:59

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 писал(а):А я правильно понимаю, что сейчас у человека робот с бешеной скоростью несется ровно одну секунду вперед, потом секунду назад, потом опять вперед и т.д.? И похоже комнаты (или зала, или стадиона) не хватает и надо, чтобы робот ехал помедленнее??? А то на стенах сколы, да и робот не выдерживает?

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


ДА всё именно так;)
AvK
 
Сообщения: 4
Зарегистрирован: 20 янв 2011, 03:21

Re: Помогите с программным кодом!

Сообщение Radist » 21 янв 2011, 22:45

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

Re: Помогите с программным кодом!

Сообщение AvK » 22 янв 2011, 00:30

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

В инструкции написано,что это С++. спасибо попробую.
AvK
 
Сообщения: 4
Зарегистрирован: 20 янв 2011, 03:21

Re: Помогите с программным кодом!

Сообщение vadinator » 22 янв 2011, 08:10

Среда программирования 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 :)
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: Помогите с программным кодом!

Сообщение AvK » 22 янв 2011, 18:23

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


Вернуться в Новичкам или основы основ роботостроения.

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

Сейчас этот форум просматривают: Google [Bot] и гости: 0

cron