Руководитель:
Сапожникова Наталья Владимировна
Робот LEGO рисует геометрические фигуры
Робот LEGO рисует геометрические фигуры
task main()
{
motor[motorB] = 100;
motor[motorC] = 100;
wait1Msec(1000);
motor[motorB] = 0;
motor[motorC] = 0;
}
При выполнении этой программы робот движется вперед в течении 1000 миллисекунд и рисует прямую линию.
task main()
{
for(int i=0;i<4;i++){
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(1000);
motor[motorC] = -50;
wait1Msec(500);
motor[motorB] = 0;
}
}
При выполнении этой программы робот рисует квадрат, однако точность движения маркера во время поворота нуждается в доработке.
task main()
{
for(int i=0;i<3;i++){
motor[motorB] = 50;
motor[motorC] = 50;
wait1Msec(1000);
motor[motorC] = -50;
wait1Msec(300);
motor[motorB] = 0;
}
}
При выполнении этой программы робот рисует треугольник.
task main()
{
motor[motorB] = 100;
motor[motorC] = 40;
wait1Msec(4000);
motor[motorC] = 0;
motor[motorB] = 0;
}
При выполнении этой программы робот рисует окружность радиусом примерно 45 сантиметров. Проведен эксперимент по изменению радиуса окружности с помощью изменения скорости моторов.
task main()
{
for(int i=0;i<3;i++){
motor[motorB] = 100;
motor[motorC] = 30;
wait1Msec(1900);
motor[motorB] = 100;
motor[motorC] = 60;
wait1Msec(5000);
}
motor[motorC] = 0;
motor[motorB] = 0;
}
При выполнении этой программы робот рисует эллипс. Проведен эксперимент по изменению радиуса кривизны эллипса с помощью изменения скорости моторов.
task main()
{
motor[motorB] = 100;
motor[motorC] = 50;
wait1Msec(5000);
motor[motorB] = 100;
motor[motorC] = 30;
wait1Msec(3500);
motor[motorB] = 100;
motor[motorC] = 20;
wait1Msec(2000);
motor[motorB] = 100;
motor[motorC] = 10;
wait1Msec(1000);
motor[motorC] = 0;
motor[motorB] = 0;
}
При выполнении этой программы робот рисует спираль.
task main()
{ int x0=0; int y0=0;
int x=30; int y=50; // (x,y)=(30,50)
int d; int alpha;
d=sqrt ((x-x0)*(x-x0)+(y-y0)*(y-y0));
alpha=atan((y-y0)/(x-x0));
nMotorEncoder[motorB]=0;
motor[motorB] = 100;
motor[motorC] = -100;
while(nMotorEncoder[motorB]<230/90*alpha);\\ поворот на нужный угол alpha
motor[motorB] = 0; motor[motorC] = 0;\\ стоп моторы
motor[motorB] = 100; motor[motorC] = 100;\\ движение в заданном направлении на заданную величину d
wait1Msec(d*1000);
}
Опытным путем мы установили, что при повороте робота на 90 градусов энкодер поворачивается на 230 градусов вокруг своей оси. Следовательно повороту на 1 градус соответствует 230/90 оборотов энкодера.
Эта задача пока не решена, мы работаем над ее решением. Как только это произойдет наш робот сможет автоматически строить заранее заданные в программе графики математических функций и геометрические фигуры.
Литература
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть