форум робототехников: Форум роботов и робототехники

Форум роботов и робототехники

На нашем форуме про роботов и робототехнику обсуждаем, конструируем из подручных средств или на 3D-принтере и программируем роботов на ардуино и из лего. Рассуждаем о развитие науки и техники в промышленности России, Японии и других стран! Высказывайте своё мнение о статьях, оставляйте комментарии на тему искусственного интеллекта, LEGO конструирования. Задавайте любые вопросы и ставьте задачи. Вместе будем их решать! Делитесь наработками своих роботов!


ПоискПоиск  
Сегодня: 08.05.2024 - 04:48:34
Страницы:  1  

Программирование в ROBOTC

АвторСообщение

Ejik

E
Участник форума

Добрый день!
Задача в ROBOTC написать простенькое ПО движения робота вперед-назад. Для контроля перемещения необходимо использовать датчик оборотов.
Перед началом движения обнуляем датчик оборотов, синхронизуем моторы B и С и устанавливаем одинаковую мощность.
Голову сломал, почему же после окончания движения по первому циклу while, прога дальше не выполняется. Спасибо
Вот код:
task main()

{

nMotorEncoder[motorB]=0;
nMotorEncoder[motorC]=0;
nSyncedMotors=synchBC;
nSyncedTurnRatio = 100;
motor[motorB] = 30;
while(nMotorEncoder[motorB] < 200)
{
motor[motorB] = 30;
}

motor[motorB]=-100;
nMotorEncoder[motorB]=0;
nMotorEncoder[motorC]=0;
while(nMotorEncoder[motorB] < 200)
motor[motorB] = -30;

}

Сообщение # 1 26.08.13 - 09:00:49

Nick

N
гость-робототехник

Здравствуйте, доброго времяни суток! Недавно начал заниматься программированием роботов на RobotC и сталкнулся с некоторой проблемой. У меня есть таймер, который должен при определенных условиях останавливаться, при иных продолжать счет с момента остановки (условие проверяется бесконечно).
Вот код.
#pragma config(Sensor, S1, sonarSensor, sensorSONAR)

task main()
{
long cm, sec;

for(;;)
{
sec = time1[T1];

if(SensorValue[sonarSensor] <= 20)
{
motor[motorA] = -50;
motor[motorB] = 60;
motor[motorC] = 60;
}
else
{
motor[motorA] = 0;
motor[motorB] = 0;
motor[motorC] = 0;
}
sec = sec/1000;
cm = sec * 10;
nxtDisplayBigStringAt(0, 31, "%d", cm);
}


}

Сообщение # 2 06.01.14 - 18:17:31

Nick

N
гость-робототехник


Цитата:
Ejik 26.08.13 в 13:00 пишет:
Добрый день!
Задача в ROBOTC написать простенькое ПО движения робота вперед-назад. Для контроля перемещения необходимо использовать датчик оборотов.
Перед началом движения обнуляем датчик оборотов, синхронизуем моторы B и С и устанавливаем одинаковую мощность.
Голову сломал, почему же после окончания движения по первому циклу while, прога дальше не выполняется. Спасибо
Вот код:
task main()

{

nMotorEncoder[motorB]=0;
nMotorEncoder[motorC]=0;
nSyncedMotors=synchBC;
nSyncedTurnRatio = 100;
motor[motorB] = 30;
while(nMotorEncoder[motorB] < 200)
{
motor[motorB] = 30;
}

motor[motorB]=-100;
nMotorEncoder[motorB]=0;
nMotorEncoder[motorC]=0;
while(nMotorEncoder[motorB] < 200)
motor[motorB] = -30;

}


Потому что первый while действует бессконечно, т.к. у тебя нет инкрементирования мощности мотора или вообще ее изменений в цикле.

Сообщение # 3 06.01.14 - 18:34:51

Educube

новичок


Данные профиля



Статистика:
Тем создано: 0
Сообщений: 4
Репутация: 4 ±
Нарушения: 0

Nick, оберните последнюю команду (motor[motorB] = -30;) фигурными скобками и смените условие в while на nMotorEncoder[motorB] > -200, у вас же отрицательные значения энкодера будут.

Сообщение # 4 16.01.14 - 15:59:39

pavel

P
гость-робототехник

Как запрограммировать манипулятор на 3 серводвигателях в ROBOTC?

Сообщение # 5 16.03.14 - 14:21:38
lego mindstorms nxt 2.0 программирование робота :Предыдущая темаСледующая тема: моделирование робота для сбора инородных объектов для дальне
Страницы:  1  

Сообщение
Имя E-mail
Сообщение

Нажмите на точку возле имени для обращения к участнику

Смайлы:

Ещё смайлы
Эмодзи
         
Защитный код: (введите цифры, которые на синем фоне)
Ответ на вопрос: (Какой сейчас год?)
   
Powered by WR-Forum Professional © 2.3 UTF-8 beta версия

Хотите видеть на нашем сайте больше статей? Кликните Поделиться в социальных сетях! Спасибо!

Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /home/u00372/public_html/ahrefmainlink/mainlink.php on line 79

Обратите внимание полезная информация.