1.00M
Category: electronicselectronics

Использование датчиков в RobotC

1.

Использование датчиков в RobotC

2.

Сенсоры или датчики настраиваются в среде RobotC так же, как и двигатели.
Обратите внимание на то, что для микроконтроллера VEX необходимо указывать
тип датчика:
а) цифровой (VEX 2.0 Digital Sensors)
б) аналоговый (VEX 2.0 Analog Sensors)

3.

a = SensorValue[in4];
/* Переменной “а” присвоено значение, записанное микроконтроллером VEX
в элемент массива “SensorValue” с индексом in4. Индексы “in” соответствуют
аналоговым датчикам, а число справа от “in” номеру аналогового порта */
a = SensorValue[dgtl1];
/* Переменной “а” присвоено значение, записанное микроконтроллером VEX
в элемент массива “SensorValue” с индексом dgtl1. Индексы “dgtl”
соответствуют цифровым датчикам, а число справа от “dgtl” номеру
цифрового порта */

4.

Подключение и работа с ультразвуковым
датчиком

5.

Ультразвуковой датчик является дальномером, измеряющим расстояние до
объектов с помощью отраженного от поверхности объекта ультразвукового
сигнала.
* В отличие от тактильных датчиков и выключателей такое устройство способно
заблаговременно предупредить о приближении робота к объекту, благодаря чему
робот сможет передвигаться в среде с различными препятствиями и планировать
свой маршрут.

6.

* Ультразвуковой дальномер, определяет расстояние до препятствия за счет
вычисления времени полета звуковой волны с момента ее распространения и до
возвращения после отражения от объекта. Излучение звуковой волны
осуществляется с частотой 40 кГц и позволяет измерять расстояние в диапазоне от
3 см до 3 м.

7.

Процесс работы датчика делится на несколько этапов:
1) Датчик отправляет звуковую волну и начинает отсчет времени
2) После того как датчик принимает отраженный сигнал, отсчет времени
прекращается
3) Расстояние до объекта рассчитывается как скорость распространения волны,
умноженная на затраченное время.
OUTPUT
Препятствие
INPUT
Расстояние

8.

Подключение ультразвукового датчика

9.

Подключение ультразвукового датчика расстояния к программируемому
контроллеру выполняется с помощью двух 2-пиновых коннекторов:
INPUT и OUTPUT. Вывод INPUT отвечает за подачу управляющего импульса на
датчик, вывод OUTPUT необходим для отправки импульса.
Пример подключения:
Подключим вывод OUTOUT к порту [dgtl7] таким образом, чтобы желтый провод
смотрел внутрь контроллера. Вывод INPUT подключим к порту [dgtl8] таким
образом, чтобы оранжевый провод смотрел внутрь контроллера.

10.

Напишем программу для ультразвукового датчика расстояния.
Условие: До тех пор пока расстояние до препятствия больше 250 мм (25 см) робот
будет ехать вперед со скоростью 50. Если это условие не выполняется, то робот
начнет двигаться назад со скоростью 50.

11.

Решение
Task main ()
{
while (1)
{
if (SensorValue[dgtl8]>250)
{
motor [port1] = 50;
motor [port10] = 50;
}
else
{
motor [port1] = – 50;
motor [port10] = – 50;
}
}
}

12.

Решение c пояснением
Task main ()
{
while (1) /* Это циклический оператор. Его аргументом в данном случае
является логическая 1 или “истина”, это значит что тело цикла будет
повторяться бесконечно. Обратите внимание, после (1) нет знака “;”
{
if (SensorValue[dgtl8]>250) /* используем условный оператор “if” (если).
Если значение датчика на порту dgtl8 больше 250, то робот едет вперед */
{
motor [port1] = 50;
motor [port10] = 50;
}
else /* Здесь используем оператор “else” (иначе). Если не выполняется
условие в круглых скобках следующих за оператором if, выполняются
действия в фигурных скобках, следующих за оператором else. */
{
motor [port1] = – 50;
motor [port10] = – 50;
}
}
}

13.

Решение вариант 2
void move (int x, int y, int time)
{
motor [port1] = x;
motor [port10] = y;
wait1Msec (time);
}
task main ()
{
while(1)
{
if (SensorValue[dgtl8]>250)
{
move (50, 50, 0);
}
else
{
move (–50, –50, 0);
}
}
}

14.

Домашнее задание
Самостоятельно напишите программу для ультразвукового датчика расстояния.
Условие: До тех пор пока расстояние до препятствия больше 300 мм (30 см) робот
движется вперед со скоростью 50.
Если это условие не выполняется, то робот разворачивается на месте против
часовой стрелки (налево) со скоростью 127 в течении 500 миллисекунд и движется
вперед со скоростью 50 в течении 2000 миллисекунд.
English     Русский Rules