🗊 Презентация Программирование в среде RobotC

Категория: Технология
Нажмите для полного просмотра!
Программирование в среде RobotC, слайд №1 Программирование в среде RobotC, слайд №2 Программирование в среде RobotC, слайд №3 Программирование в среде RobotC, слайд №4 Программирование в среде RobotC, слайд №5 Программирование в среде RobotC, слайд №6 Программирование в среде RobotC, слайд №7 Программирование в среде RobotC, слайд №8 Программирование в среде RobotC, слайд №9 Программирование в среде RobotC, слайд №10 Программирование в среде RobotC, слайд №11 Программирование в среде RobotC, слайд №12 Программирование в среде RobotC, слайд №13 Программирование в среде RobotC, слайд №14 Программирование в среде RobotC, слайд №15 Программирование в среде RobotC, слайд №16 Программирование в среде RobotC, слайд №17 Программирование в среде RobotC, слайд №18 Программирование в среде RobotC, слайд №19 Программирование в среде RobotC, слайд №20 Программирование в среде RobotC, слайд №21 Программирование в среде RobotC, слайд №22 Программирование в среде RobotC, слайд №23 Программирование в среде RobotC, слайд №24 Программирование в среде RobotC, слайд №25 Программирование в среде RobotC, слайд №26 Программирование в среде RobotC, слайд №27 Программирование в среде RobotC, слайд №28 Программирование в среде RobotC, слайд №29 Программирование в среде RobotC, слайд №30 Программирование в среде RobotC, слайд №31 Программирование в среде RobotC, слайд №32 Программирование в среде RobotC, слайд №33 Программирование в среде RobotC, слайд №34 Программирование в среде RobotC, слайд №35 Программирование в среде RobotC, слайд №36 Программирование в среде RobotC, слайд №37 Программирование в среде RobotC, слайд №38 Программирование в среде RobotC, слайд №39 Программирование в среде RobotC, слайд №40 Программирование в среде RobotC, слайд №41 Программирование в среде RobotC, слайд №42 Программирование в среде RobotC, слайд №43 Программирование в среде RobotC, слайд №44 Программирование в среде RobotC, слайд №45 Программирование в среде RobotC, слайд №46 Программирование в среде RobotC, слайд №47

Содержание

Вы можете ознакомиться и скачать презентацию на тему Программирование в среде RobotC. Доклад-сообщение содержит 47 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Программирование в среде RobotC Сергей Александрович Филиппов Президентский Физико-математический лицей №239
Описание слайда:
Программирование в среде RobotC Сергей Александрович Филиппов Президентский Физико-математический лицей №239

Слайд 2


План занятий Введение в RobotC Вывод данных Графика Датчики Моторы Применение регуляторов Воспроизведение по памяти
Описание слайда:
План занятий Введение в RobotC Вывод данных Графика Датчики Моторы Применение регуляторов Воспроизведение по памяти

Слайд 3


Загрузка операционной системы 1. Тип контроллера Меню Robot -> Platform Type->Lego Mindstorms->EV3 2. Ядро Меню Robot -> Download EV3 Linux Kernel->...
Описание слайда:
Загрузка операционной системы 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 секунды

Слайд 4


Простейшая программа task main() { displayTextLine(0, "Hello, world!"); wait1Msec(10000); } Меню File -> Save as... — сохранение F7 —...
Описание слайда:
Простейшая программа task main() { displayTextLine(0, "Hello, world!"); wait1Msec(10000); } Меню File -> Save as... — сохранение F7 — проверка F5 — загрузка на контроллер

Слайд 5


Загрузка и отладка программы F7 — компиляция и проверка F5 — загрузка программы Start — запуск программы на NXT/EV3 Step — пошаговое выполнение Не...
Описание слайда:
Загрузка и отладка программы F7 — компиляция и проверка F5 — загрузка программы Start — запуск программы на NXT/EV3 Step — пошаговое выполнение Не отключать кабель USB при открытом окне дебаггера!

Слайд 6


Форматированный вывод task main() { float a=5, b=4, c=1; int a=5, b=4; displayTextLine(0, "a=%d b=%d",a,b); displayTextLine(1,...
Описание слайда:
Форматированный вывод 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

Слайд 7


Команды ожидания wait1Msec(1); sleep(1); wait1Msec(N); sleep(N); wait10Msec(N); while(УСЛОВИЕ); while(УСЛОВИЕ) sleep(1);
Описание слайда:
Команды ожидания wait1Msec(1); sleep(1); wait1Msec(N); sleep(N); wait10Msec(N); while(УСЛОВИЕ); while(УСЛОВИЕ) sleep(1);

Слайд 8


Управление моторами task main() { motor[motorB]=100; // полный вперед motor[motorC]=100; wait1Msec(2000); // по времени motor[motorB]=-50; // поворот...
Описание слайда:
Управление моторами 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


Поворот с помощью гироскопического датчика task main() { int angle=SensorValue[Gyro]; // Запомнили текущее while (true) // значение угла {...
Описание слайда:
Поворот с помощью гироскопического датчика 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); } }

Слайд 10


Управление скоростью task main() { for (int i=1; i
Описание слайда:
Управление скоростью task main() { for (int i=1; i

Слайд 11


Параллельное управление скоростью int mB=0, mC=0, step=5; //Скорости моторов и шаг task motors() { while(true) { int b=mB-motor[motorB];...
Описание слайда:
Параллельное управление скоростью 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


Контроль управления скоростью Необходимо ограничение модуля скорости не более 100 На малых отклонениях необходимо повышение точности int mB=0, mC=0,...
Описание слайда:
Контроль управления скоростью Необходимо ограничение модуля скорости не более 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


Доступ к энкодерам без обнуления К энкодерам и моторам нельзя обращаться из разных задач Задаем глобальные переменные, которые содержат актуальные...
Описание слайда:
Доступ к энкодерам без обнуления К энкодерам и моторам нельзя обращаться из разных задач Задаем глобальные переменные, которые содержат актуальные значения энкодеров 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


Доступ к энкодерам с обнулением В основной задаче для обнуления задаем enB_null=1 int mB=0, mC=0, step=25, enB=0, enC=0, enB_null=0, ...; task...
Описание слайда:
Доступ к энкодерам с обнулением В основной задаче для обнуления задаем 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

Слайд 15


Подключение датчика Меню Robot -> Motors and Sensors Setup -> Sensors
Описание слайда:
Подключение датчика Меню Robot -> Motors and Sensors Setup -> Sensors

Слайд 16


Путешествие по комнате #pragma config(Sensor, S1, Rasst, sensorEV3_Ultrasonic) task main() { while(true) { motor[motorB]=100; // полный вперед...
Описание слайда:
Путешествие по комнате #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); } }

Слайд 17


Вывод показаний датчиков на экран ... while(SensorValue[Rasst]>25) { displayBigTextLine(0, "%d", SensorValue[Rasst]); sleep(10); } ......
Описание слайда:
Вывод показаний датчиков на экран ... while(SensorValue[Rasst]>25) { displayBigTextLine(0, "%d", SensorValue[Rasst]); sleep(10); } ... while(nMotorEncoder[motorB]>-400) { displayBigTextLine(2, "%d", nMotorEncoder[motorB]); sleep(10); }

Слайд 18


Пропорциональный регулятор: синхронизация моторов Пусть e2 и e3 – показания датчиков оборотов моторов B и C. Их надо будет обнулить перед началом...
Описание слайда:
Пропорциональный регулятор: синхронизация моторов Пусть 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


Синхронизация при путешествии по комнате Для синхронизации движения вперед необходимо перед циклом ожидания объекта обнулить энкодеры: int v=50, k=2,...
Описание слайда:
Синхронизация при путешествии по комнате Для синхронизации движения вперед необходимо перед циклом ожидания объекта обнулить энкодеры: 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


Параллельное управление моторами int v=50, k=2, u; task preg() // Объявление задачи { nMotorEncoder[motorB]=0; nMotorEncoder[motorC]=0; while(true){...
Описание слайда:
Параллельное управление моторами 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


Параллельное управление моторами int v=50, k=2, u, DELTA=0; task preg() // Объявление задачи { ... u=k*(e3-e2 + DELTA); ... } } task main() //...
Описание слайда:
Параллельное управление моторами 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); }

Слайд 22


Параллельное управление моторами int v=50, k=2, u, DELTA=0; task preg() // Объявление задачи { ... u=k*(e3-e2 + DELTA); ... } } task main() //...
Описание слайда:
Параллельное управление моторами int v=50, k=2, u, DELTA=0; task preg() // Объявление задачи { ... u=k*(e3-e2 + DELTA); ... } } task main() // Основная задача { startTask(preg); while(true) { wait1Msec(2000); DELTA=DELTA+450; // Изменение разности энкодеров } }

Слайд 23


Управление шагающим роботом
Описание слайда:
Управление шагающим роботом

Слайд 24


Управление шагающим роботом с датчиком расстояния
Описание слайда:
Управление шагающим роботом с датчиком расстояния

Слайд 25


Шагающий робот на линии
Описание слайда:
Шагающий робот на линии

Слайд 26


Графика на экране NXT: 100х64 пикселя 8 текстовых строк (0..7) EV3: 178х128 пикселей 16 текстовых строк (0..15) Идентичные команды
Описание слайда:
Графика на экране NXT: 100х64 пикселя 8 текстовых строк (0..7) EV3: 178х128 пикселей 16 текстовых строк (0..15) Идентичные команды

Слайд 27


Отображение громкости звука на экране NXT #pragma config(Sensor, S1, Zvuk, sensorSoundDBA) task main() { int d=0, x,y; while(true) {...
Описание слайда:
Отображение громкости звука на экране NXT #pragma config(Sensor, S1, Zvuk, sensorSoundDBA) task main() { int d=0, x,y; while(true) { d=SensorValue[Zvuk]; x=50-d/2; y=32+d/2; drawCircle(x,y,d); wait1Msec(40); eraseRect(x,y,x+d+1,y-d-1); } }

Слайд 28


Подключение датчика Меню Robot -> Motors and Sensors Setup -> Sensors
Описание слайда:
Подключение датчика Меню Robot -> Motors and Sensors Setup -> Sensors

Слайд 29


Подключение датчика EV3 Меню Robot -> Motors and Sensors Setup -> Sensors
Описание слайда:
Подключение датчика EV3 Меню Robot -> Motors and Sensors Setup -> Sensors

Слайд 30


График показаний датчика Составьте алгоритм вывода на экран графика показаний датчика света. Частота 10 замеров в секунду Длительность 17,8 секунд...
Описание слайда:
График показаний датчика Составьте алгоритм вывода на экран графика показаний датчика света. Частота 10 замеров в секунду Длительность 17,8 секунд (178 замеров) Масштабирование 127/100 Используйте цикл Вывод точки Вывод линии drawLine(x1,y1,x2,y2);

Слайд 31


Отображение показаний датчика в виде изменяющегося эллипса #pragma config(Sensor, S1, Light, sensorEV3_Color) task main() { int d=0, x,y; while(true)...
Описание слайда:
Отображение показаний датчика в виде изменяющегося эллипса #pragma config(Sensor, S1, Light, sensorEV3_Color) task main() { int d=0, x,y; while(true) { d=SensorValue[Light]; x=88-d/2; y=63+d/2; drawCircle(x,y,d); sleep(40); eraseRect(x,y,x+d+1,y-d-1); } }

Слайд 32


Релейный регулятор: движение вдоль границы черного и белого с помощью датчика освещенности int grey=15; // Приближенное значение серого task main() {...
Описание слайда:
Релейный регулятор: движение вдоль границы черного и белого с помощью датчика освещенности 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); }

Слайд 33


Пропорциональный регулятор
Описание слайда:
Пропорциональный регулятор

Слайд 34


Пропорциональный регулятор: движение по линии Также как и в релейном регуляторе, необходимо определить среднее значение grey между черным и белым....
Описание слайда:
Пропорциональный регулятор: движение по линии Также как и в релейном регуляторе, необходимо определить среднее значение grey между черным и белым. Это будет то состояние датчика освещенности s1, к которому должна стремиться система. while(true) { u=k*(sensorValue[S1]-grey); motor[motorB]=50+u; motor[motorC]=50-u; wait1Msec(1); }

Слайд 35


Пропорциональный регулятор: вычисление коэффициента усиления Базовая скорость робота v Максимальная скорость vmax Минимальная vmin Минимальное...
Описание слайда:
Пропорциональный регулятор: вычисление коэффициента усиления Базовая скорость робота v Максимальная скорость vmax Минимальная vmin Минимальное значение скорости влияет на крутизну поворотов 1. Найти максимальное управляющее воздействие umax для получения предельной скорости на моторе - это наибольшее из чисел vmax-v и v-vmin 2. Найти максимальную ошибку emax = (white - black) / 2 3. Найти ориентировочное значение коэффициента усиления k. k = umax / emax

Слайд 36


Параллельные задачи task line() // Объявление задачи { while(true) { // Здесь должен быть регулятор для движения по линии } } task main() // Основная...
Описание слайда:
Параллельные задачи task line() // Объявление задачи { while(true) { // Здесь должен быть регулятор для движения по линии } } task main() // Основная задача { startTask(line); // Запуск параллельной задачи wait1Msec(17800); // Здесь могут быть полезные действия stopTask(line); // Остановка параллельной задачи }

Слайд 37


Параллельные задачи - 2 task line() // Объявление задачи { while(true) { // Здесь должен быть регулятор для движения по линии } } task main() //...
Описание слайда:
Параллельные задачи - 2 task line() // Объявление задачи { while(true) { // Здесь должен быть регулятор для движения по линии } } task main() // Основная задача { startTask(line); // Запуск параллельной задачи for(int x=0; x

Слайд 38


Параллельные задачи - 3 int svalue=0; // Глобальная переменная task line() { while(true) { svalue=SensorValue[S1]; // Показания датчика в переменную...
Описание слайда:
Параллельные задачи - 3 int svalue=0; // Глобальная переменная task line() { while(true) { svalue=SensorValue[S1]; // Показания датчика в переменную // Здесь должен быть регулятор для движения по линии } } task main() // Основная задача { StartTask(line); // Запуск параллельной задачи for(int x=0; x

Слайд 39


Параллельные задачи – 4 – массивы int mas[178]; // Массив в RobotC объявляется глобально task line() ... task main() // Основная задача {...
Описание слайда:
Параллельные задачи – 4 – массивы int mas[178]; // Массив в RobotC объявляется глобально task line() ... task main() // Основная задача { StartTask(line); // Запуск параллельной задачи for(int x=0; x

Слайд 40


Параллельные задачи – 5 – массивы int mas[178]; // Массив task line() ... task main() // Основная задача { StartTask(line); // Запуск параллельной...
Описание слайда:
Параллельные задачи – 5 – массивы int mas[178]; // Массив task line() ... task main() // Основная задача { StartTask(line); // Запуск параллельной задачи for(int x=0; x

Слайд 41


Параллельное управление моторами int v=50, delta=0; // Глобальные переменные task preg() // Параллельная задача { float e, u, k=2; while(true) { //...
Описание слайда:
Параллельное управление моторами 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

Слайд 42


Программирование в среде RobotC, слайд №42
Описание слайда:

Слайд 43


Программирование в среде RobotC, слайд №43
Описание слайда:

Слайд 44


Программирование в среде RobotC, слайд №44
Описание слайда:

Слайд 45


Программирование в среде RobotC, слайд №45
Описание слайда:

Слайд 46


Программирование в среде RobotC, слайд №46
Описание слайда:

Слайд 47


Благодарю за внимание!
Описание слайда:
Благодарю за внимание!



Похожие презентации
Mypresentation.ru
Загрузить презентацию