Презентация Программирование в среде RobotC онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Программирование в среде RobotC абсолютно бесплатно. Урок-презентация на эту тему содержит всего 47 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Технология » Программирование в среде RobotC
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:47 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:833.50 kB
- Просмотров:112
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№3 слайд
![Загрузка операционной системы](/documents_6/d2a93080860da8b9bfabd694d41b352f/img2.jpg)
Содержание слайда: Загрузка операционной системы
1. Тип контроллера
Меню Robot -> Platform Type->Lego Mindstorms->EV3
2. Ядро
Меню Robot -> Download EV3 Linux Kernel-> Standart File
Выполнять при включенном EV3, в процессе загрузки не трогать (до 4 мин)
3. Прошивка
Меню Robot -> Download Firmware> Standart File
Выполнять при включенном EV3, занимает 1-2 секунды
№6 слайд
![Форматированный вывод task](/documents_6/d2a93080860da8b9bfabd694d41b352f/img5.jpg)
Содержание слайда: Форматированный вывод
task main()
{
float a=5, b=4, c=1;
int a=5, b=4;
displayTextLine(0, "a=%d b=%d",a,b);
displayTextLine(1, "%d+%d=%d",a,b,a+b);
displayTextLine(4, "%f/%f=%4.2f",a,b,a/b);
for(int i=1;i<=b;i++)
c=c*a;
displayTextLine(5, "%d^%d=%d",a,b,c);
wait1Msec(10000);
}
№8 слайд
![Управление моторами task main](/documents_6/d2a93080860da8b9bfabd694d41b352f/img7.jpg)
Содержание слайда: Управление моторами
task main()
{
motor[motorB]=100; // полный вперед
motor[motorC]=100;
wait1Msec(2000); // по времени
motor[motorB]=-50; // поворот налево
motor[motorC]=50;
nMotorEncoder[motorB]=0; // по энкодеру
while(nMotorEncoder[motorB]>-239) sleep(1);
motor[motorB]=0; // остановка
motor[motorC]=0;
}
№9 слайд
![Поворот с помощью](/documents_6/d2a93080860da8b9bfabd694d41b352f/img8.jpg)
Содержание слайда: Поворот с помощью гироскопического датчика
task main()
{
int angle=SensorValue[Gyro]; // Запомнили текущее
while (true) // значение угла
{
motor[motorLeft] = 20;
motor[motorRight] = -20;
angle=angle+90; // Увеличим угол по часовой
while (SensorValue[Gyro] < angle)
sleep(1);
motor[motorLeft] = 40;
motor[motorRight] = 40;
sleep(2000);
}
}
№11 слайд
![Параллельное управление](/documents_6/d2a93080860da8b9bfabd694d41b352f/img10.jpg)
Содержание слайда: Параллельное управление скоростью
int mB=0, mC=0, step=5; //Скорости моторов и шаг
task motors()
{
while(true)
{
int b=mB-motor[motorB];
motor[motorB]=motor[motorB]+sgn(b)*step;
// То же с мотором C – добавить самостоятельно
wait1Msec(10);
}
}
task main()
{
startTask(motors); // Запуск параллельной задачи
mB=mC=100; // Задаем любую скорость
wait1Msec(2000);
mB=mC=-100;
wait1Msec(2000);
...
stopTask(motors);
}
№12 слайд
![Контроль управления скоростью](/documents_6/d2a93080860da8b9bfabd694d41b352f/img11.jpg)
Содержание слайда: Контроль управления скоростью
Необходимо ограничение модуля скорости не более 100
На малых отклонениях необходимо повышение точности
int mB=0, mC=0, step=25;
task motors()
{
while(true)
{
if (abs(mB)>100) mB=sgn(mB)*100;
int b=mB-motor[motorB];
if (abs(b)>step)
motor[motorB]=motor[motorB]+sgn(b)*step;
else
motor[motorB]=mB;
// То же с мотором C – добавить самостоятельно
wait1Msec(10);
}
}
№13 слайд
![Доступ к энкодерам без](/documents_6/d2a93080860da8b9bfabd694d41b352f/img12.jpg)
Содержание слайда: Доступ к энкодерам без обнуления
К энкодерам и моторам нельзя обращаться из разных задач
Задаем глобальные переменные, которые содержат актуальные значения энкодеров
int mB=0, mC=0, step=25, enB=0, enC=0;
task motors()
{ ...
{ enB=nMotorEncoder[motorB];
// То же с мотором C – добавить самостоятельно
...
wait1Msec(10);
}
} task main()
{ ...
int enB_cur=enB;
mB=50;
mC=-50;
while(enB < enB_cur + 239) sleep(1); // Поворот по энкодеру
...
}
№14 слайд
![Доступ к энкодерам с](/documents_6/d2a93080860da8b9bfabd694d41b352f/img13.jpg)
Содержание слайда: Доступ к энкодерам с обнулением
В основной задаче для обнуления задаем enB_null=1
int mB=0, mC=0, step=25, enB=0, enC=0, enB_null=0, ...;
task motors()
{ ...
{ if (enB_null)
{
nMotorEncoder[motorB]=0;
enB_null=0;
}
enb = nMotorEncoder[motorB];
// То же с мотором C – добавить самостоятельно
sleep(10);
}
}
task main()
{ ...
enB_null=1; sleep(11);
while(enB<239) sleep(1);
}
№16 слайд
![Путешествие по комнате pragma](/documents_6/d2a93080860da8b9bfabd694d41b352f/img15.jpg)
Содержание слайда: Путешествие по комнате
#pragma config(Sensor, S1, Rasst, sensorEV3_Ultrasonic)
task main()
{
while(true) {
motor[motorB]=100; // полный вперед
motor[motorC]=100;
while(SensorValue[Rasst]>25) sleep(1);
motor[motorB]=-50; // отъезд с разворотом
motor[motorC]=-10;
nMotorEncoder[motorB]=0; // по энкодеру
while(nMotorEncoder[motorB]>-400) sleep(1);
}
}
№18 слайд
![Пропорциональный регулятор](/documents_6/d2a93080860da8b9bfabd694d41b352f/img17.jpg)
Содержание слайда: Пропорциональный регулятор: синхронизация моторов
Пусть e2 и e3 – показания датчиков оборотов моторов B и C. Их надо будет обнулить перед началом движения. Регулятор определяется следующим образом:
int v=50, k=2, u;
nMotorEncoder[motorB]=0;
nMotorEncoder[motorC]=0;
while(true)
{
int e2=nMotorEncoder[motorB];
int e3=nMotorEncoder[motorC];
u=k*(e3-e2);
motor[motorB]=v+u;
motor[motorC]=v-u;
wait1Msec(1);
}
№19 слайд
![Синхронизация при путешествии](/documents_6/d2a93080860da8b9bfabd694d41b352f/img18.jpg)
Содержание слайда: Синхронизация при путешествии по комнате
Для синхронизации движения вперед необходимо перед циклом ожидания объекта обнулить энкодеры:
int v=50, k=2, u;
while(true){
nMotorEncoder[motorB]=0;
nMotorEncoder[motorC]=0;
while(SensorValue[Rasst]>25)
{
int e2=nMotorEncoder[motorB];
int e3=nMotorEncoder[motorC];
u=k*(e3-e2);
motor[motorB]=v+u;
motor[motorC]=v-u;
wait1Msec(1);
}
...
}
№20 слайд
![Параллельное управление](/documents_6/d2a93080860da8b9bfabd694d41b352f/img19.jpg)
Содержание слайда: Параллельное управление моторами
int v=50, k=2, u;
task preg() // Объявление задачи
{
nMotorEncoder[motorB]=0;
nMotorEncoder[motorC]=0;
while(true){
int e2=nMotorEncoder[motorB];
int e3=nMotorEncoder[motorC];
u=k*(e3-e2);
motor[motorB]=v+u;
motor[motorC]=v-u;
wait1Msec(1);
}
}
task main() // Основная задача
{
startTask(preg); // Запуск параллельной задачи
wait1Msec(10000); // Здесь могут быть полезные действия
stopTask(preg); // Остановка параллельной задачи
}
№21 слайд
![Параллельное управление](/documents_6/d2a93080860da8b9bfabd694d41b352f/img20.jpg)
Содержание слайда: Параллельное управление моторами
int v=50, k=2, u, DELTA=0;
task preg() // Объявление задачи
{
...
u=k*(e3-e2 + DELTA);
...
}
}
task main() // Основная задача
{
startTask(preg);
wait1Msec(2000);
DELTA=DELTA+450; // Изменение разности энкодеров
wait1Msec(2000);
DELTA=DELTA+450;
stopTask(preg);
}
№32 слайд
![Релейный регулятор движение](/documents_6/d2a93080860da8b9bfabd694d41b352f/img31.jpg)
Содержание слайда: Релейный регулятор: движение вдоль границы черного и белого с помощью датчика освещенности
int grey=15; // Приближенное значение серого
task main()
{
while (true) // Бесконечное повторение
{
if (SensorValue[S1]>grey) // Проверка
{
motor[motorB]=100; // Направо по дуге
motor[motorC]=0;
}
else
{
motor[motorB]=0; // Налево по дуге
motor[motorC]=100;
}
wait1Msec(1);
}
№34 слайд
![Пропорциональный регулятор](/documents_6/d2a93080860da8b9bfabd694d41b352f/img33.jpg)
Содержание слайда: Пропорциональный регулятор: движение по линии
Также как и в релейном регуляторе, необходимо определить среднее значение grey между черным и белым. Это будет то состояние датчика освещенности s1, к которому должна стремиться система.
while(true)
{
u=k*(sensorValue[S1]-grey);
motor[motorB]=50+u;
motor[motorC]=50-u;
wait1Msec(1);
}
№35 слайд
![Пропорциональный регулятор](/documents_6/d2a93080860da8b9bfabd694d41b352f/img34.jpg)
Содержание слайда: Пропорциональный регулятор: вычисление коэффициента усиления
Базовая скорость робота v
Максимальная скорость vmax
Минимальная vmin
Минимальное значение скорости влияет на крутизну поворотов
1. Найти максимальное управляющее воздействие umax
для получения предельной скорости на моторе - это наибольшее из чисел vmax-v и v-vmin
2. Найти максимальную ошибку
emax = (white - black) / 2
3. Найти ориентировочное значение коэффициента усиления k.
k = umax / emax
№36 слайд
![Параллельные задачи task line](/documents_6/d2a93080860da8b9bfabd694d41b352f/img35.jpg)
Содержание слайда: Параллельные задачи
task line() // Объявление задачи
{
while(true)
{
// Здесь должен быть регулятор для движения по линии
}
}
task main() // Основная задача
{
startTask(line); // Запуск параллельной задачи
wait1Msec(17800); // Здесь могут быть полезные действия
stopTask(line); // Остановка параллельной задачи
}
№37 слайд
![Параллельные задачи - task](/documents_6/d2a93080860da8b9bfabd694d41b352f/img36.jpg)
Содержание слайда: Параллельные задачи - 2
task line() // Объявление задачи
{
while(true)
{
// Здесь должен быть регулятор для движения по линии
}
}
task main() // Основная задача
{
startTask(line); // Запуск параллельной задачи
for(int x=0; x<178; x++)
{
... // Рисование графика 17,8 с
wait1Msec(100);
}
stopTask(line); // Остановка параллельной задачи
wait1Msec(30000); // Посмотреть график
}
№38 слайд
![Параллельные задачи - int](/documents_6/d2a93080860da8b9bfabd694d41b352f/img37.jpg)
Содержание слайда: Параллельные задачи - 3
int svalue=0; // Глобальная переменная
task line()
{
while(true)
{
svalue=SensorValue[S1]; // Показания датчика в переменную
// Здесь должен быть регулятор для движения по линии
}
}
task main() // Основная задача
{
StartTask(line); // Запуск параллельной задачи
for(int x=0; x<178; x++)
{
y=svalue; // Защита от коллизий
...
}
StopTask(line); // Остановка параллельной задачи
motor[motorB]=motor[motorC]=0; // Остановить моторы
wait1Msec(30000); // Посмотреть график
}
№39 слайд
![Параллельные задачи массивы](/documents_6/d2a93080860da8b9bfabd694d41b352f/img38.jpg)
Содержание слайда: Параллельные задачи – 4 – массивы
int mas[178]; // Массив в RobotC объявляется глобально
task line()
...
task main() // Основная задача
{
StartTask(line); // Запуск параллельной задачи
for(int x=0; x<178; x++)
{
mas[x]=svalue; // Запись в массив без рисования
sleep(100);
}
StopTask(line); // Остановка параллельной задачи
motor[motorB]=motor[motorC]=0; // Остановить моторы
for(int x=0; x<178; x++)
{
y=mas[x]; // Рисование графика после остановки
...
}
wait1Msec(30000); // Посмотреть график
}
№40 слайд
![Параллельные задачи массивы](/documents_6/d2a93080860da8b9bfabd694d41b352f/img39.jpg)
Содержание слайда: Параллельные задачи – 5 – массивы
int mas[178]; // Массив
task line()
...
task main() // Основная задача
{
StartTask(line); // Запуск параллельной задачи
for(int x=0; x<178; x++)
{
mas[x]=SensorValue[S1]; // Запись в массив без рисования
sleep(100);
}
StopTask(line); // Остановка параллельной задачи
motor[motorB]=motor[motorC]=0; // Остановить моторы
while(!getButtonPress(buttonEnter)) sleep(1); // Жди нажатия
for(int x=0; x<178; x++)
{
y=mas[x]; // Рисование графика после остановки
...
}
wait1Msec(30000); // Посмотреть график
}
№41 слайд
![Параллельное управление](/documents_6/d2a93080860da8b9bfabd694d41b352f/img40.jpg)
Содержание слайда: Параллельное управление моторами
int v=50, delta=0; // Глобальные переменные
task preg() // Параллельная задача
{
float e, u, k=2;
while(true) { // Синхронизация моторов на П-регуляторе
e=nMotorEncoder[mC]-nMotorEncoder[mB]+delta;
u=e*k;
motor[mB]=v+u;
motor[mC]=v-u;
wait1Msec(1);
}
}
task main() // Основная задача
{
nMotorEncoder[motorB]=nMotorEncoder[motorC]=0;
startTask(preg); // Запуск параллельной задачи
for (int i=0;i<4;i++) { // Движение по квадрату
wait1Msec(2000);
delta=delta+500;
}
v=0;
}
Скачать все slide презентации Программирование в среде RobotC одним архивом:
Похожие презентации
-
Скачать презентацию Приспособление первобытного человека к окружающей среде
-
Лаборатория робототехники и программирования
-
Учебная практика. Программирование микроконтроллеров
-
Суперграфика в городской среде. Проект цветового оформления фасадов на перекрестке
-
Расчет и проектирование конструкций в среде SCAD Office 21 СП 20. 13330. 2016 "СНиП 2. 01. 07-85 Нагрузки и воздействия"
-
Программирование Lego-роботов
-
Программирование ключей Hyundai IMMOBILIZER
-
Robotic technology
-
Архитектура параллельных вычислительных систем. Часть 1. История и проблематика. Основы параллельного программирования
-
Arduino. Язык программирования Arduino