Презентация Программирование в среде 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
  • Автор:
    неизвестен



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

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

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

№3 слайд
Загрузка операционной системы
Содержание слайда: Загрузка операционной системы 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
Содержание слайда: Простейшая программа task main() { displayTextLine(0, "Hello, world!"); wait1Msec(10000); } Меню File -> Save as... — сохранение F7 — проверка F5 — загрузка на контроллер

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

№6 слайд
Форматированный вывод task
Содержание слайда: Форматированный вывод 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); }

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

№8 слайд
Управление моторами task main
Содержание слайда: Управление моторами 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) // значение угла { 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
Содержание слайда: Управление скоростью task main() { for (int i=1; i<=100; i++) // разгон 1 секунду { motor[motorB]=i; motor[motorC]=i; wait1Msec(10); } wait1Msec(1000); // Добавить плавное торможение }

№11 слайд
Параллельное управление
Содержание слайда: Параллельное управление скоростью 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, 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 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); }

№15 слайд
Подключение датчика Меню
Содержание слайда: Подключение датчика Меню Robot -> Motors and Sensors Setup -> Sensors

№16 слайд
Путешествие по комнате pragma
Содержание слайда: Путешествие по комнате #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(nMotorEncoder[motorB]>-400) { displayBigTextLine(2, "%d", nMotorEncoder[motorB]); sleep(10); }

№18 слайд
Пропорциональный регулятор
Содержание слайда: Пропорциональный регулятор: синхронизация моторов Пусть 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, 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 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() // Основная задача { 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() // Основная задача { startTask(preg); while(true) { wait1Msec(2000); DELTA=DELTA+450; // Изменение разности энкодеров } }

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

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

№25 слайд
Шагающий робот на линии
Содержание слайда: Шагающий робот на линии

№26 слайд
Графика на экране NXT х
Содержание слайда: Графика на экране 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) { 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

№29 слайд
Подключение датчика EV Меню
Содержание слайда: Подключение датчика EV3 Меню Robot -> Motors and Sensors Setup -> Sensors

№30 слайд
График показаний датчика
Содержание слайда: График показаний датчика Составьте алгоритм вывода на экран графика показаний датчика света. Частота 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) { 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() { while (true) // Бесконечное повторение { if (SensorValue[S1]>grey) // Проверка { motor[motorB]=100; // Направо по дуге motor[motorC]=0; } else { motor[motorB]=0; // Налево по дуге motor[motorC]=100; } wait1Msec(1); }

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

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

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

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

№37 слайд
Параллельные задачи - task
Содержание слайда: Параллельные задачи - 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
Содержание слайда: Параллельные задачи - 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 слайд
Параллельные задачи массивы
Содержание слайда: Параллельные задачи – 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 слайд
Параллельные задачи массивы
Содержание слайда: Параллельные задачи – 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 слайд
Параллельное управление
Содержание слайда: Параллельное управление моторами 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; }

№42 слайд
Содержание слайда:

№43 слайд
Содержание слайда:

№44 слайд
Содержание слайда:

№45 слайд
Содержание слайда:

№46 слайд
Содержание слайда:

№47 слайд
Благодарю за внимание!
Содержание слайда: Благодарю за внимание!

Скачать все slide презентации Программирование в среде RobotC одним архивом: